반효경 교수님의 운영체제 수업을 정리한 내용입니다
실행 중인 프로그램을 프로세스라고 이야기 한다
프로세스의 현재 상태를 나타내는것
크게 세가지로 나눈다
1. Running(실행): CPU를 가지고 수행중인 상태
2. Ready(준비): CPU를 기다리는 상태(1개 밖에 없으니까)
3. Blocked(대기): CPU를 줘도 당장 수행할 수 없는 상태, 자신이 요청한 이벤트(예:입출력)이 즉시 만족되지 않아 이를 기다리는 상태
-> PCB를 통하여 해당 상태를 알 수 있다
운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보
운영체제 커널의 주소공간에서 프로세스 마다 PCB를 가지고 있다
왜 커널의 메모리 공간에 저장되어 있는가?
CPU에서 뺏기기 전에 어디까지 실행 되었는지와 같은 정보를 저장하고 가지고 있어야 하기 때문에
CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
Job Queue
현재 시스템 내에 있는 모든 프로세스의 집합
Ready Queue
현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합
Device Queue
I/O device의 처리를 기다리는 프로세스의 집합
->프로세스들은 각 큐들을 오가며 수행된다. (PCB를 그 포인터를 사용해 연결 해놓는다)
1. Long-term scheduler(장기 스케줄러 or job scheduler)
시작 프로세스 중(new상태) 어떤 것들을 ready queue로 보낼지 결정(메모리를 줘야 Ready로 올라감)
프로세스에 메모리 및 각종자원을 주는 문제
Degree of Multiprogramming(메모리에 올라갈 프로그램의 갯수)을 제어
시분할 system에는 보통 장기 스케줄러가 없음(무조건 Ready)
2. Short-term scheduler(단기 스케줄러 or CPU scheduler)
어떤 프로세스를 다음번에 running시킬지 결정
프로세스에 CPU를 주는 문제
충분히 빨라야 함(millisecond 단위)
3. Medium-Term Scheduler(중기 스케줄러 or Swapper)
→ 이 스케쥴러의 도입으로 Process의 Suspended상태 개념이 추가됨
여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄
프로세스에게서 메모리를 뺐는 문제
Degree of Multiprogramming을 제어
1. Running(실행): CPU를 가지고 수행중인 상태
2. Ready(준비): CPU를 기다리는 상태(1개 밖에 없으니까)
3. Blocked(대기): CPU를 줘도 당장 수행할 수 없는 상태, 자신이 요청한 이벤트(예:입출력)이 즉시 만족되지 않아 이를 기다리는 상태
4. Suspended: 외부적인 이유로 프로세스의 수행이 정지된 상태, 프로세스는 통째로 디스크에 swap out된다
-> Blocked와 Suspended의 차이: Blocked는 프로세스의 수행이 정지되어 있지는 않다
: 프로세스 중에서 CPU 수행 단위
Thread의 구성
Program Counter
Register Set
Stack Space
Thread가 동료 Thread와 공유하는 부분(=Task)
Code Section
Data Section
OS Section
부모 프로세스가 자식 프로세스를 생성
-> 그럼 어떻게 내용을 다르게 구성하나요? : fork로 새 프로세스를 복사한 후에 exec로 기존 프로세스를 새로운 프로세스로 전환한다
프로세스의 트리(계층 구조) 형성
프로세스는 자원을 필요로 함
자원의 공유
수행(Execution)
실행 중인 프로세스로부터 새로운 프로세스를 복사하는 함수. 이를 사용하면 실행중인 프로세스와 똑같은 프로세스가 하나 더 만들어 진다.
동작 과정
기존 프로세스를 새로운 프로세스로 전환하는 함수. 이미 만들어진 프로세스의 구조를 재활용 하는 것이다.
동작 과정
프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려줌(exit)
부모 프로세스가 자식의 수행을 종료시킴(abort)