KOCW 반효경 교수님 운영체제 강의 정리
이 글은 공부한 것을 복습 및 기록하기 위한 게시물입니다.
잘못된 정보가 기입되어 있을 수 있으니 주의해주시기 바랍니다.
강의 링크 : http://www.kocw.net/home/cview.do?lid=b31830a2b3cf1e60
1. 프로세스의 개념
프로세스란 실행중인 프로그램을 뜻한다.
프로세스 문맥(Context)은 프로세스의 현재 상태를 나타내는 모든 것을 뜻한다.EX) PC(Program Counter)가 어디를 가리키는지, 프로세스가 메모리에 어떤 것을 담고있는지, 현재 변수의 값은 얼마이며 프로그램이 실행되면서 CPU의 레지스터의 어떠한 값을 넣어 놓고 어떤 Instruction까지 실행했는지 등등
프로세스의 문맥(Context)는 크게 3가지가 있다.
- CPU 하드웨어 Context(주로 레지스터)
- 프로세스의 주소 공간(Code, Data, Stack)
- OS(커널) 자료구조
프로세스들이 번갈아 가면서 실행되기 때문에 Context를 파악해놓는 것이 매우 중요하다.
2. 프로세스의 상태
프로세스는 상태(State)가 변경되며 수행된다.
프로세스의 상태는 3가지가 있다.
- Running
- Ready
- Blocked
프로세스는 실행하게 되면 CPU의 소유권을 얻기 위해 Ready인 상태로 대기하다 CPU 스케쥴러에 의해 CPU에 소유권을 얻게 되면 Running 상태로 바뀐다.
그러다 I/O나 특정 시스템 콜과 같은 Event를 요청하면 Blocked 상태가 되며 해당 Event가 완료되면 다시 CPU 소유권을 얻기 위해 Ready 상태로 변한다.
혹은 Running 상태에서 Timer Interrupt를 통해 다시 Ready 상태로 변한다.
그렇게 Ready 와 Running을 반복하다 프로세스 동작을 완료하게 된다.
프로세스가 Blocked 상태일 때는 특정 Deivce(H/W) Queue에서 차례를 기다리게 된다.
H/W 뿐만 아니라 S/W 적으로 Blocked Queue가 형성될 수 있다(ex.공유데이터)
이러한 Queue들은 커널이 본인의 Data 영역에 자료구조로 만들어 놓게 된다.
3. Process Control Block(PCB)
PCB란 운영체제가 각 프로세스를 관리하기 위한 프로세스당 유지하는 정보(자료구조)를 뜻한다.
PCB는 크게 4가지의 구성요소를 가진다.
- OS가 관리상 사용하는 정보
- CPU 수행 관련 하드웨어 값
- 메모리 관련
- 파일 관련
CPU는 Queue의 순서대로 실행되는 것 처럼 보이지만 프로세스마다 프로세스의 우선순위가 있어 우선순위가 높은 것부터 실행하게 된다.
4. 문맥 교환(Context Switch)
프로세스가 CPU 권한을 넘겨줄 때 CPU H/W 자체의 PC(Program Counter), 레지스터 상태, 메모리 맵을 커널의 해당 프로세스 PCB안에 저장을 시켜 놓는다.
Context Switch(문맥 교환)은 사용자 프로세스 하나로부터 또 다른 프로세스로 넘어가는 과정이다.
하지만 System Call이나 Interrupt 발생시 반드시 Context Switch가 일어나느 것은 아니다.
예를 들어 프로세스A가 Interrupt나 System Call을 하게 되면 커널에게 CPU 권한이 넘어가게 되고
커널은 ISR이나 System Call 함수를 실행하게 되며 다시 CPU 권한을 프로세스A에게 넘겨주게 된다.
이럴 경우 Context Switch가 발생한 것이 아닌 단순히 Mode가 변환된 것이다.(User Mode -> Kernel Mode -> User Mode)
그렇지만 프로세스A의 코드를 실행하다가 커널의 코드를 실행하기 때문에 아주 약간의 Context는 PCB에 저장하고 있어야 한다.
Context Switch는 위와 같은 경우보다 더 많은 Overhead가 발생하게 된다.
그러나 프로세스A에서 Timer Interrupt나 I/O 요청 Interrupt를 발생하게 되면 커널에게 CPU 권한이 넘어가게 되고 다시 프로세스B에게 권한을 넘겨주게 되면 Context Switch가 발생하게 된 것이다.
5. 프로세스를 스케줄링하기 위한 큐
Ready Queue와 Device Queue는 Job Queue에 포함된다.
Queue에 줄 서있는 것은 프로세스가 아닌 PCB이다.
PCB에는 포인터가 있어 포인터를 활용하여 줄을 서있게 된다.(3. PCB 참고)
Queue는 운영체제가 관리를 하게 된다.
6. 스케줄러
Long-term Scheduler는 어떤 프로세스가 New 상태에 있을 때 해당 프로세스에게 메모리를 주어 Ready로 넘길지 말지를 결정하는 것이다.
Degree of Multiprogramming은 메모리에 올라가 있는 프로세스의 수를 뜻한다.
Degree of Multiprogramming이 너무 많아도, 적어도 컴퓨터 성능은 떨어진다.(효율성이 중요하다.)
보통 시스템에서는 Long-term Scheduler는 거의 없다.
Long-term Scheduler 대신 Medium-Term Scheduler를 사용한다.
Medium-Term Scheduler는 일단 메모리에 프로세스를 전부 올려놓고 너무 많이 올라가 있을 경우 Disk로 쫓아낸다.
Long-term Scheduler는 메모리를 주는 것, Medium-Term Scheduler는 메모리를 뺏는 것이다.
Short-term Scheduler는 다음번에 어떤 프로세스에게 CPU 권한을 줄지 결정하는 것으로 CPU Scheduler로 불리기도 한다.
7. 프로세스의 상태(Porcess State) - Suspended 추가
Suspended는 Medium-Term Scheduler에 의해 메모리르 통째로 빼앗긴 상태이다.(Disk에 Swap out된 상태)
Blocked는 자신의 요청한 일을 하면서 기다리는 상태이다.(Event가 만족되면 다시 Ready상태로 바뀜)
Suspended는 외부에서 정지해놓은 상태이며 외부에서 Resume해주어야 Active한 상태로 넘어갈 수 있다.
Medium-Term Scheduler 뿐만 아니라 외부에 의한 정지로 인해 Suspended가 될 수 있다.
8. 프로세스 상태도 - Suspended 추가
Running(User Mode)는 프로세스가 CPU 권한을 가지고 있으면서 User Mode로 실행중인 상태이다.
Running(Monitor Mode)는 프로세스가 Kernel Mode에서 Running하고 있는 상태이다.
프로세스 상태에 대한 용어(Running, Ready등)는 CPU 입장에서의 용어이다.
Blocked 상태에서 Suspended된 것(Swap out)을 Suspended Blocked라고 하며
Ready 상태에서 Suspenede된 것(Swap out)을 Suspended Ready라고 한다.
Suspended Blocked는 I/O 요청이 완료되거나 Event가 완료되었을 때 inactive한 상태여도 Suspended Ready로 바뀔 수 있다.
'Computer Science > OS' 카테고리의 다른 글
6. Process Management (0) | 2021.03.07 |
---|---|
5. Process 2~3 (0) | 2021.03.06 |
3. System Structure & Program Execution 2 (0) | 2021.02.11 |
2. System Structure & Program Execution 1 (0) | 2021.02.11 |
1. Introduction to Operating Systems (0) | 2021.02.06 |