- 프로세스: 실행중인 프로그램
- 프로세스의 맥락(context)
- CPU 수행 상태를 나타내는 하드웨어: Program counter, 각종 레지스터
- PC가 어떤 코드를 가리키는가, 레지스터에 어떤 정보를 담고 있는가
- 프로세스의 주소 공간: code, data, stack
- 프로세스 관련 커널 자료 구조: PCB(Process Control Block), kernel stack
- 프로세스가 실행 될 때마다 각각 별도로 PCB를 data에 두고 관리
- A의 코드 실행 중에 함수 호출이 일어나면 본인의 스택에 그 함수를 호출하고 리턴 후 관련 정보 쌓음
- A 본인이 스스로 할 수 없는 것을 OS에 요청하면(시스템콜) 그와 관련되어 실행되는 커널에서의 코드가 함수를 호출하면 A의 커널 스택에 개별적으로 쌓고 관리
- 프로세스별로 커널 스택을 별도로 생성
- CPU 수행 상태를 나타내는 하드웨어: Program counter, 각종 레지스터
- 프로세스의 상태
- Running: CPU를 잡고 인스트럭션을 수행중인 상태
- Ready: CPU를 기다리는 상태(메모리 등 다른 조건을 만족한 상태)
- Blocked(wait, sleep): CPU를 주어도 당장 인스트럭션을 수행할 수 없는 상태
- 프로세스 자신이 요청한 이벤트(예: I/O)가 즉시 만족되지 않아 이를 기다리는 상태
- 예) 현재 메모리에 올라와 있지 않고 디스크에서 파일을 읽어와야 하는 경우
- New: 프로세스가 생성 중인 상태
- Terminated: 수행(execution)이 끝난 상태
- 위 큐들은 커널 주소 공간의 data영역에 있으면서 각각의 프로세스의 상태(ready/blocked)에 맞게 운영
- PCB: OS가 각 프로세스를 관리하기 위해 프로세스 당 유지하는 정보 (구조체로 유지)
- OS가 관리상 사용하는 정보
- process state, process ID, scheduling information, priority
- CPU 수행 관련 하드웨어 값
- program counter, registers
- 메모리 관련
- code, data, stack의 위치 정보
- 파일 관련
- open file descriptors...
- OS가 관리상 사용하는 정보
- Context Switch: CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
- CPU를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장
- CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어옴
- 프로세스를 스케줄링 하기 위한 큐
- Job queue: 현재 시스템 내에 있는 모든 프로세스의 집합
- Ready queue: 현재 메모리 내에 있으면서 CPU를 잡아 실행되기를 기다리는 프로세스의 집합
- Device queues: I/O device의 처리를 기다리는 프로세스의 집합
- 프로세스의 PCB가 포인터로 연결되어 큐에 줄을 섬
- 스케줄러
- Long-term scheduler (job scheduler): 시작 프로세스 중 메모리를 할당하여 ready queue에 보낼 프로세스 결정
- 현재 메모리에 몇개의 프로세스를 올려놓을지 제어 (degree of multiprogramming)
- time sharing system에는 보통 장기 스케줄러가 없음 (즉시 ready 상태)
- Short-term scheduler (CPU scheduler): 어떤 프로세스를 다음에 실행시킬지 결정
- 충분히 빨라야 함(ms 단위)
- Medium-term scheduler (Swapper): 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄
- 장기 스케줄러 대신 degree of multiprogramming 제어
- Long-term scheduler (job scheduler): 시작 프로세스 중 메모리를 할당하여 ready queue에 보낼 프로세스 결정
* 시스템콜, 인터럽트 등으로 사용자 모드에서 커널모드로 바뀌었어도 그 사용자 프로세스가 실행중인 것으로 간주
* suspended 상태에서도, 메모리에서 탈락되어 CPU가 실행 못하지만 I/O는 처리가능하여 wake up 가능
출처: https://core.ewha.ac.kr/publicview/C0101020140318134023355997?vmode=f
'CS > OS' 카테고리의 다른 글
8. Process Management 1 & 9. Process Management 2 (0) | 2022.03.14 |
---|---|
6. Process2 & 7. Process3 (0) | 2022.03.08 |
4. System Structure & Program Execution 2 (0) | 2022.03.04 |
3. System Structure & Program Execution 1 (0) | 2022.03.04 |
2. Introduction to Operating Systems (0) | 2022.03.02 |