관리 메뉴

너와 나의 스토리

week2 OS -[ Process / Limited execution ] 본문

Operating System

week2 OS -[ Process / Limited execution ]

노는게제일좋아! 2019. 3. 13. 13:12
반응형

Keyword

- Process

- Limited execution


● I/O operation

- I/O 장치와 CPU는 동시에 작동될 수 있다.  ->  DMA  덕분에

- device controller

: CPU와 device 사이에서 연결해주는 것

ㄴ 각각의 device controller는 local buffer을 가진다

- I/O는 장치에서 controller의 local buffer이다.



● I/O structure

- I/O transaction은 bus를 통해 이뤄진다

ㄴ System bus : CPU와 I/O bridge 연결   

(*I/O bridge는 I/O bus라고 생각하면 될 듯 ; 입출력 통로)

ㄴ Memory bus: I/O bridge와 memory 연결


- DMA (Direct Memory Access)

: CPU 개입 없이 장치가 단독으로 읽고 쓰는 bus transaction을 하는 과정

ㄴ DMA를 사용하면 CPU가 전송을 시작하고, 전송이 진행된는 동안 다른 작업을 진행 할 수 있다

ㄴ 만약 DMA가 없다면?

-> CPU가 계속 I/O를 요청해야 함으로 느려지고 CPU가 다른 일을 못한다.


● Interrupt

: 프로그램을 실행하고 있을 때, 장치 또는 예외상황이 발생하여 처리가 필요할 경우에 CPU에 알려 처리하도록 함

- trap : 에러나 사용자 요청에 의해 소프트웨어가 생성한 interrupt

- OS는 interrupt에 의해 작동된다.

ex) timer interrupt (시간이 되면 자동으로 interrupt)


- interrupt handler :

CPU에 interrupt가 접수되면, 해당 interrupt handler의 코드의 위치를 찾고 실행에 옮긴다.

이 전에 실행되던 상태가 없어지면 나중에 복귀 되었을 때 문제가 발생하므로 

register와 program counter을 보관함으로써 CPU의 상태를 보존한다. 

interrupt handling이 완료되면 이전의 상태로 복귀된다.


- program counter : 

CPU 내부에 있는 레지스터 중 하나.

다음에 실행될 명령어의 주소를 가지고 있어 실행할 기계어 코드의 위치를 지정한다.


● Interrupt vs Trap

- interrupt는 프로세서 외부 event로 인해 발생

- Asynchronous 

ㄴ Trap : 명령 실행 결과로 발생한 event에 의해 발생

ㄴ software interrupt

- Synchronous

ㄴ System call 


 

● Storage structure

- Main memory (RAM) : CPU가 직접 접근 저장한 대형 저장 매체만

- Secondary storage : 커다란 비휘발성의 저장 용량을 제공하는 메인 메모리의 확장

ㄴ ex) magnetic disk, SSD


         register

cache

main memory

-----------------------

electronic disk

magnetic disk

optical disk

             ↓

     magnetic tapes 


내려갈 수록 느리고 저렴하다

점선 위는 휘발성



 

● Multiprocessor memory model

- UMA (uniform memory access) 

ㄴ 어떤 CPU에서든 RAM에 접근하는데 동일한 시간이 든다

- NUMA (Non-uniform memory access)

ㄴ 메모리 접근 시간은 프로세서와 관련된 메모리의 위치에 따라 다르다


● Multiprogramming

- 목적 : CPU와 I/O를 최대한 쉬지 않고 돌아가게 함

- 방법:

ㄴ multiprogramming은 job들을 조직하여 CPU가 항상 하나 이상의 일을 하도록 함

ㄴ jobs 중에서 겹치는 부분은 메모리에 저장해둠

ㄴ Job scheduling을 통해서 하나의 job이 선택되고 작동함

      ㄴ 한 job이 실행되다 멈추면(기다리면) os가 다른 job으로 바꿈



● Job scheduling

: job 순서 결정

 

 virtual machine

(size)


>>


 OS

 job 1

 physical memory

 job 2

 job 3

 job 4

 * job = process



● CPU scheduling

: CPU가 메모리상의 어떤 job에 얼마나 자원을 할당할지 결정


OS 

 job 1

 job 2

 job 3

 job 4



● A dual-mode operation of OS

: kernel이 중요한 자원을 관리하는데, 사용자가 그 중요한 자원에 접근하지 못하도록 모드를 2가지로 나눴다.

- user mode (1)     

ㄴ 접근 할 수 있는 영역 제한적 

ㄴuser mode에서는 리소스 할당 및 사용 관련된 일을 못 하므로 system call을 이용해 kernel mode로 전환한다 (H/W 지원 필요)

ㄴ 명령어 : trap

- kernel mode (0)

ㄴ 모든 자원에 접근 및 명령 가능


● user mode <-> kernel mode 전환 

- user mode에서 작업을 하다가 입출력 함수(cin,cout) 등을 사용하는 이유로 자원에 접근해야 할 때 

  System call을 이용해 kernel에 요청 

-> trap (mode bit=0)

- 요청 받은 kernel이 작업을 수행하고 return 해 줌.

-> return (mode bit=1)



A Process : 작동 중인 프로그램


● CPU가 여러개 인듯한 환상을 주는 방법

- > CPU virtualizing


● process 구성

- Memory  (주소 공간)

ㄴ 명령들 = binary code

ㄴ 데어터 = 변수 초기화 값 등

- Registers

ㄴ PC (program counter)

ㄴ Stack pointer



● Process API

- Create

- Destroy

- Wait

- Miscellaneous Control

- Status


● Process Creation

- 프로그램 코드를 메모리에 load (프로세스 주소 공간이 있는 메모리)

= process

ㄴ OS는 필요할 때만 프로세스 load함

.

- 프로그램의 run-time stack이 할당된다.


- OS가 프로세스 만드는 과정

1. 프로그램 코드를 메모리에 올림

2. 스택 할당

3. 힙 영역 할당


반응형

'Operating System' 카테고리의 다른 글

OS-week3 [Multi-level Feedback]  (0) 2019.03.26
OS-week3 [Scheduling]  (0) 2019.03.26
CLI 및 Linux를 공부해보자  (0) 2019.03.26
OS-week4 [CH13_Address Spaces]  (0) 2019.03.23
week1 OS - [ Virtualization / Concurrency / Persistence]  (0) 2019.03.08
Comments