-
3일차 - 프로세스(Process)CS지식/운영체제 2021. 4. 13. 00:44
오늘은 프로세스에 대해서 배웠다. 프로세스라는 단어는 들어본 적이 있지만 정확히 무엇을 의미하는지는 몰랐다.
오늘 강의를 통해 개념을 확실히 잡을 수 있는 기회가 되었다.
1. 프로세스란?
프로세스를 간단히 말하면 실행중인 프로그램이다.
이러한 프로세스를 이해하기 위해서는 프로세스의 문맥(context)가 중요하다.
여기서 문맥(context)는 어떠한 문장에서 단어가 사용되는데 그 단어의 뜻을 이해하기 위해서는 전체적인 문장의 문맥을 이해할 필요가 있다.
여기서 말하는 문맥과 같은 의미라고 보면 된다.
2. 프로세스 상태
프로세스는 다음과 같은 상태를 가지고 있고 상태가 변경되며 수행된다.
1) Running
CPU를 잡고 instruction을 수행 중인 상태
2) Ready
CPU를 기다리는 상태(메모리 등 다른 조건을 모두 만족하고)
3) Blocked (wait, sleep)
CPU를 주어도 당장 instruction을 수행할 수 없는 상태
프로세스 자신이 요청한 이벤트가 즉시 만족되지 않아 이를 기다리는 상태
이외에도 New(프로세스가 생성 중인 상태)와 Terminated(수행이 끝난 상태)가 있다.
3. PCB (Process Control Block)
PCB는 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보를 의미한다.
PCB는 커널주소공간에서 data 부분에 존재한다.
4. 문맥교환 (Context Switch)
문맥교환은 CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정을 의미한다.
그러면 이렇게 문맥교환이 일어났을 때 CPU는 다시 프로세스를 받았을 때 작업한 부분을 어떻게 기억을 하고 있을까?
먼저, 문맥교환이 발생하면 CPU를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장을 한다.
그리고 CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어온다.
이렇게 하면 마치 책갈피를 꽃은듯이 다시 프로세스를 받더라도 어디까지 실행되었는지 기억할 수 있다.
'CS지식 > 운영체제' 카테고리의 다른 글
6일차 - CPU Scheduling (0) 2021.04.21 5일차 - 프로세스 관리(Process Management) (0) 2021.04.18 4일차 - 스레드(Thread) (0) 2021.04.15 2일차-System Structure & Program Execution (0) 2021.04.07 1일차-운영체제란? (0) 2021.04.03