요약 정리
프로세스(Process)란?
- 실행을 위해 시스템(커널)에 등록되어 커널의 관리 하에 있는 작업
Process Control Block
- os가 프로세스 관리에 필요한 정보 저장
- 프로세스 생성시, 생성 됨
프로세스의 상태
- 프로세스와 자원 간의 상호작용에 의해 결정
- Running, Ready, Blocked, asleep, Suspended ready, Suspended block
인터럽트
Context Switching(문맥교환)
- Context : 프로세스와 관련된 정보들의 집합
- Context switching : 실행중인 프로세스의 context를 저장하고, 앞으로 실행 할 프로세스의 context를 복구하는 일
1. 프로세스
1.1 Job vs Process
- 작업(Job) : 실행할 프로그램과 데이터, 컴퓨터 시스템에 실행 요청 전의 상태
- 프로세스(Process) : 실행을 위해 시스템에 등록된 작업, 시스템 성능 향상을 위해 커널에 의해 관리 됨. 메모리를 할당 받은 상태
![](https://velog.velcdn.com/images%2Flotus%2Fpost%2F71c0324a-3193-4643-9b56-c5cf6f65cb74%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2011.23.09.png)
1.2 프로세스의 정의
- 실행중인 프로그램으로 커널에 등록되거 커널의 관리하에 있는 작업
- 각종 자원들을 요청하고 할당 받을 수 있는 개체
- 프로세스 관리 블록(PCB)을 할당받은 개체
- 능동적인 개체
1.3 Process Control Block(PCB)
- os가 프로세스 관리에 필요한 정보 저장
- 프로세스 생성 시, 생성 됨
- 당연하게 커널에서 생성된다.
- PCB의 참조 갱신 속도가 결국 OS의 성능과 직결된다.
![](https://velog.velcdn.com/images%2Flotus%2Fpost%2Fba9c5763-f47b-4d66-aca2-339ea513f091%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2011.26.01.png)
1.4 자원의 개념
- 자원은 커널의 관리 하에 프로세스에게 관리/할당 되는 수동적 개체이다. 즉, 프로세스의 자원을 관리/할당 하는 녀석은 커널이다.
- 자원의 분류
- H/W resources
Processor, memory, disk, monitor, keyboard, Etc.
- S/W resources
Message, signal, files, installed SWs, Etc.
2. 프로세스의 상태(Process States)
2.1 프로세스 상태 및 특성
![](https://velog.velcdn.com/images%2Flotus%2Fpost%2Fee7a55e6-6ead-4990-bc93-1c6208e0feeb%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2011.27.37.png)
2.2 Process State Transition Diagram
![](https://velog.velcdn.com/images%2Flotus%2Fpost%2Fd882a456-959b-468a-a921-1eaf4b984ee1%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2011.27.47.png)
2.3 Created State
- 작업(Job)을 커널에 등록
- PCB 할당 및 프로세스 생성
- 이 상태에서 결국 ready 혹은 suspended ready 두 가지로만 갈 수 있는데 이것의 차이는 메모리 할당의 유무이다.
2.4 Ready State
- 프로세서(ex.CPU) 외 다른 모든 자원을 할당 받은 상태:프로세서 할당 대기 상태, 즉시 실행 가능 상태
- 프로세서 할당 대기 상태
- Dispatch 또는 Scedule을 통해 running state로 변경된다.
2.5 Running State
- 프로세서와 필요한 자원을 모두 할당 받은 상태
- Preemption : Running State -> Ready State
- Block/sleep : Running State -> asleep State
2.6 Blocked/Asleep State
- 프로세서 외 다른 자원을 기다리는 상태: 자원 할당은 System call에 의해 이루어짐
- Wake-up : Asleep state -> ready Steate
2.7 Suspended State
- 메모리를 할당 받지 못한 상태
- 기존에 수행되던 것을 메모리 이미지로 저장해 놓는다. 이어서 실행하기 위해서
- 메모리 이미지를 swap device(하드디스크와 비슷한 것이라고 생각하기)에 보관
2.8 Terminated/Zombie State
- 프로세스 수행이 끝난 상태
- 모든 자원을 반납 후, 커널 내에 일부 PCB 정보만 남아있는 상태
- 이후 프로세스 관리를 위해, 정보를 수집하기 위해 이 상태가 있는 것이다.
- 비슷한 작업을 할 때, 더 효율적으로 할 수 있기 때문에
3. 인터럽트
3.1 인터럽트란?
3.2 인터럽트 처리 과정
![](https://velog.velcdn.com/images%2Flotus%2Fpost%2Fdeacf223-edd0-4ec6-bc72-110ec5bd82de%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-06%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2011.57.48.png)
![](https://velog.velcdn.com/images/lotus/post/d8d8a134-c1fe-4198-998a-b6fffc29fca2/image.png)
4. Context Switcing(문맥 교환)
4.1 Context란?
- 프로세스와 관련된 정보들의 집합
- Context saving: 현재 프로세스의 Register context를 저장하는 작업, PCB에 저장한다.
- Context restoring : Register context를 프로세스로 복구하는 작업
- Context switching: 실행중인 프로세스의 context를 저장하고, 앞으로 실행할 프로세스의 context를 복구하는 일. 커널의 개입으로 이루어진다. Context saving과 Context restoring을 합친 것.
4.2 Context Switch Overhead
- Context switching에 소요되는 비용. 이것은 OS의 성능에 큰 영향을 준다.
- 그렇기 때문에 불필요한 Context switching을 줄이는 것이 중요하다.
- 예를 들어, 쓰레드를 활용해서 Context switching를 줄인다.
참고 : 운영체제 강의(김덕수 교수님)