일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 정렬
- HashMap
- queue
- url
- RAM
- 스레드
- MAP
- heap
- ssd
- Git
- 오라클 버림 함수
- 프로세스 종료
- desc
- null
- trunc(sysdate)
- 멀티스레드
- git push
- Servlet
- 오라클 trunc()
- ArrayList
- cpu
- 스케줄 삭제
- trunc()
- 이진탐색트리
- maven
- netstat
- web
- trunc(date)
- HDD
- stack
- Today
- Total
無테고리 인생살이
[OS] 프로세스 간 context switching (feat. process state, PCB) 본문
- process state
- PCB
- process context switching
프로세스는 메모리에 올라와 실행 중인 프로그램을 말한다.
하나의 CPU라는 가정하에, 여러 프로세스가 어떻게 동시에 실행될까?
하나의 CPU는 하나의 작업(task)만 수행할 수 있기 때문에, 여러 프로세스를 동시에 실행할 수 없다.
time-sharing을 통해 여러 프로세스가 빠르게 번걸아가며 실행되는 것이고, 이는 동시에 실행되는 것처럼 보일 뿐이다.
어떻게 여러 프로세스 간 빠른 작업 전환(process context switching)이 가능한지 알아보기에 앞서,
프로세스의 상태와 PCB가 무엇인지 먼저 확인해보자 !
Process State
: 프로세스가 생성되고 종료될 때까지의 프로세스의 상태
new : 프로세스가 생성 중인 상태
ready : 메모리에 올라와 CPU 점유를 기다리고 있는 상태
running : CPU를 점유해 instruction을 수행 중인 상태
waiting(block, sleep) : I/O 또는 특정 event 발생으로 대기 중인 상태 (당장 instruction을 수행할 수 없는 상태)
terminated : 모든 instruction 수행을 끝낸 상태
PCB(Process Control Block)이란?
: PCB는 프로세스에 대한 정보를 담아두는 Block이다.
정보(데이터)를 담는 공간이므로 하나의 자료구조이고, 운영 체제가 프로세스를 관리하기 때문에 운영 체제 커널의 자료구조이다.
아래에서 설명할 프로세스 간 빠른 작업전환(process context switching)을 하기 위한 필요한 정보를 가진다. (context switch에 중요한 역할)
PCB 구성 요소
- process 정보 : Process Number(고유한 process ID), Process State(new, ready, running..), Process priority
- CPU 수행 관련 정보 : Program Counter(해당 프로세스가 다음에 실행할 명령어의 주소), Registers
- 메모리 관련 정보 : 프로세스의 메모리(Code, Data, Stack) 주소
- 파일 관련 정보
context switching이란?
: 프로세스 간 context switching이란 CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정을 말한다. 작업 전환이라고 이해하면 쉬울 것이다.
context switching 과정
- running 상태인 P0 프로세스에 interrupt or system call 발생
- 운영 체제는 P0 의 정보를 PCB0 에 저장하고 실행 중단
- 운영 체제는 PCB1 에서 P1 의 정보를 로드하고 실행
- P1 에 interrupt 발생
- 운영 체제는 P1 의 정보를 PCB1 에 저장하고 실행 중단
- 운영 체제는 PCB0 에서 P0 의 정보를 로드하고 실행
주의할 점
- A 프로세스 -> 커널 -> A 프로세스
- A 프로세스 -> 커널 -> B 프로세스
=> 위와 같은 형태로 CPU 제어권이 넘어가면,
1번은 context switching은 발생하지 않고, 2번은 context switching 발생
context switching의 단점 : 오버헤드 발생
위에서 process context switching을 프로세스 간 빠른 작업 전환이라고 언급했다. 컨텍스트 스위칭 작업은 빠르지만 delay가 없는 작업은 아니다. P0 에서 P1 로의 컨텍스트 스위칭이 발생할 때, P1 이 곧바로 실행되지는 않는다는 말이다.
위의 그림을 보면, P0 이 running 상태에서 idle(ready or waiting) 상태가 될 때, PCB0 에 정보를 저장하고 PCB1 에서 정보를 가져와야하기 때문이다. PCB 에 값을 넣고 가져올 때는 CPU가 아무런 일도 하지 못하게 된다.
따라서, 컨텍스트 스위칭이 너무 잦으면 오버헤드가 발생하여 성능이 떨어진다.
참고자료
https://www.learnpick.in/prime/documents/ppts/details/47/operating-system-processes
'OS' 카테고리의 다른 글
[OS] 컴파일러 VS 인터프리터 (0) | 2022.12.01 |
---|---|
[컴퓨터 구조] CPU Cache란 무엇인가 (0) | 2022.11.22 |
[컴퓨터 구조] HDD와 SSD의 차이점 (0) | 2022.11.22 |
[컴퓨터 구조] 메모리와 디스크를 비교하고, CPU와의 관계를 예를들어 이해하기 (0) | 2022.11.21 |
[컴퓨터 구조] CPU에 대해 간단히 알아보고(feat. core, thread, clock), 메인보드에서 떼낸 내 CPU 스펙을 살펴보자 (0) | 2022.11.10 |