(* 프로세스의 개념과 프로세스의 상태, 문맥교환이 무엇인지에 대해 정리한 내용이다.)
프로세스의 개념
- 프로세스란?
: 실행 중인 프로그램이다. - 프로세스의 문맥(context)
: 프로세스 문맥은 아래와 같은 정보들을 포함하고 있는 내용이다.
- CPU의 수행 상태를 나타내는 하드웨어 문맥
- PC(Program Counter)가 어디를 가리키는 지를 저장
- 레지스터에 어떤 값을 넣고, 어떤 instruction까지 실행 했는 가를 저장
- 등등
- 프로세스의 주소공간
- code, data, stack에 대한 정보
- 프로세스 관련 커널 자료구조
- PCB(Process Control Block)
: 운영체제는 프로세스가 생성될 때마다,
프로세스 관리를 위해 커널 주소공간의 data영역에 해당 프로세스의 PCB라는 곳에 프로세스 메타데이터들을 저장한다. - 프로세스의 커널 스택
: 운영체제는 모든 프로세스가 공유할 수 있기 때문에,
커널 주소공간의 stack영역에 해당 프로세스의 kernel stack을 별도로 둔다.
- PCB(Process Control Block)
- CPU의 수행 상태를 나타내는 하드웨어 문맥
프로세스의 상태(Process State)
프로세스는 상태(state)가 변경되며 수행된다.
- Running
- CPU를 잡고 instruction을 수행중인 상태
- Ready
- CPU를 기다리는 상태(메모리 등 다른 조건을 모두 만족하면서..!)
- CPU제어권만 있으면 바로 instruction을 수행할 수 있는 상태
즉, ready상태인 프로세스들이 CPU를 잡았다, 놨다 하면서 번갈아가면서 time sharing을 구현하는 것.
- Blocked(wait, sleep)
- CPU제어권을 주어도 당장 instruction을 수행할 수 없는 상태
- 예를 들어,
- 오래 걸리는 I/O작업을 수행하고 있을 때..!
- 어떠한 프로그램의 코드가 메모리에 올라가 있지 않고, 디스크에 존재할 때(프로세스의 주소공간 전체가 물리적인 메모리에 존재하지 않기 때문에)
- New: 프로세스가 생성중인 상태
- Terminated: 수행(execution)이 끝난 상태
- 이런 식으로 프로세스 상태를 관리하는 방식은
커널의 주소공간에 있는 data영역에 큐라는 자료구조를 생성하고 Running, Ready, Blocked, New, Terminated 와 같은 상태들에 있는 프로세들을 관리하는 것이다.
PCB(Process Control Block)
- 지난 글에서 언급 하였듯이, 커널 주소공간의 data 영역에는 PCB라는 프로세스를 관리하기 위한 정보가 들어 있었다.
- 이 PCB는 운영체제가 각 프로세스를 관리하기 위해 각각의 프로세스당 유지하는 정보이다.
- 구조체로써 아래와 같은 정보들을 저장하고 있다.
- PCB
- OS가 관라하는데 필요한 부분
- PID, Process State(running, ready, wait ...) - CPU 수행 관련 하드웨어 값
- PC, register값들 - 메모리 관련
- 파일관련
- OS가 관라하는데 필요한 부분
문맥교환(context switch)
- CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정에서 운영체제가 수행하는 일이다.
- CPU를 사용중인 A프로세스의 현재 상태를 A프로세스 PCB에 저장한다.
- CPU를 얻게된 B프로세스의 이전 상태를 B프로세스 PCB에서 읽어와 CPU 레지스터에 적재한다.
- 즉, context switching이 일어나는 시점은 아래와 같다.
- timer interrupt나 I/O요청에 의한 system call같은 경우에 의해서 CPU 제어권이 다른 프로세스에 넘어가는 경우에 일어난다.
- System call이나 interrupt 발생 시 무조건 문맥교환이 일어나는 것은 아니고
예를 들어, A프로세스에서 커널모드로 넘어갔다가 다시 A프로세스로 넘어오는 경우에는 문맥교환이라고 보지 않는다.
'ComputerScience > OS' 카테고리의 다른 글
5. 프로세스 관련 시스템콜 & IPC (0) | 2022.12.28 |
---|---|
4. 프로세스(2) (0) | 2022.12.26 |
2. 컴퓨터시스템 구조(2) (0) | 2022.11.06 |
1. 운영체제란 & 컴퓨터시스템 구조(1) (0) | 2022.11.02 |
[OS] Process Memory와 Thread (0) | 2022.08.03 |