프로세스의 개념
Process is a program in execution _ 프로세스란 실행중인 프로그램
프로세스의 문맥, context
특정 시점을 놓고 봤을 때 이 프로세스가 어디까지 실행을 했는지 확인,
독자적 주소공간을 만든 후에 cpu를 잡은 후에 연산을 하고 결과를 메모리에 저장하는 과정속에서 pc가 어느 부분을 가리키고 있는지, 어떤 내용을 얼만큼 쌓아 놓고 있는가 등의 프로세스 전반 내용에 대한 현재 상태가 핵심
- cpu 수행 상태를 나타내는 하드웨어 문맥
/ Program Counter, 각종 register
- 프로세스의 주소공간 / code, data, stack
- 프로세스 관련 커널 자료구조
/ PCB(Process Control Block), Kernel stack
- 시스템 콜을 하면 pc가 커널 주소공간을 가리킴
프로세스의 상태 (Process State)
프로세스는 상태가 변경되며 수행
- Running : CPU를 잡고 instruction 수행 상태
- Ready : CPU를 기다리고 있는 상태, 모든 준비 끝난 상태
- Blocked(wait, sleep) : CPU를 주어도 당장 instruction을 수행할 수 없는 상태, Process 자신이 요청한 event가 즉시 만족되지 않아 이를 기다리는 상태 – 자신이 요청한 event가 만족되면 Ready
- Suspended(stopped) : 외부적인 이유로 프로세스의 수행 정지 상태, 통째로 디스크에 swap out 된다. – 외부에서 resume 해줘야 Active
- New : 프로세스 생성중인 상태
- Terminated : 수행이 끝난 상태, 정리할 것이 남아있음.
컴퓨터 시스템 구조도
Cpu는 굉장히 빠르고 여러 장치에서 공유하고 있으므로 큐를 따라 돌아가며 사용
Process Control Block
운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보
구조체로 유지된다
1. OS가 관리상 사용하는 정보 / process state, process ID, scheduling info, priority
2. CPU 수행 관련 하드웨어 값 / Program counter, registers
3. 메모리 관련 / Code, data, stack 위치 정보
4. 파일 관련 /Open file descriptors
문맥 교환(Context Switch)
CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
CPU가 다른 프로세스에게 넘어갈 때 운영체제는 다음을 수행
- CPU를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장
- CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어옴
system
call 이나 interrupt 발생시 반드시 문맥 교환이 일어나는 것은 아니다
ß 이 경우에도 CPU 수행 정보 등 context의 일부를 PCB에 save해야 하지만 문맥교환을 하는 아래의 경우 그 부담이 훨씬 크다
ex. cache memory flush
프로세스를 스케쥴링하기 위한 큐
- job queue : 현재 시스템 내의 모든 프로세스 집합
- Ready queue : 현재 메모리 내에 있으면서 CPU를 잡아 실행 대기 프로세스 집합
- Device queues : I/O device의 처리를 기다리는 프로세스의 집합
- > 프로세스들은 각 큐들을 오가며 수행
스케줄러 , Scheduler
- Long- term scheduler, 장기 스케줄러 or job scheduler
시작 프로세스 중 어떤 것을 ready queue로 보낼지 결정
프로세스에 memory 및 각종 자원을 주는 문제
degree of Multiprogramming 제어
time sharing system에는 보통 장기 스케줄러가 없다- 무조건 ready
- short-term scheduler, 단기 스케줄러 or CPU scheduler
어떤 프로세스를 다음번에 running 시킬지 결정
프로세스에 CPU를 주는 문제
충분히 빨라야 한다- ms 단위
- Medium-term scheduler, 중기 스케줄러 or Swapper
여유공간 마련을 위해 프로세스를 통쨰로 메모리에서 디스크로 쫒아냄
프로세스에게서 memory를 뺏는 문제
degree of Multiprogramming 제어
'잰이_IT > OS' 카테고리의 다른 글
Process 3 (0) | 2018.08.08 |
---|---|
05. Process 2 (0) | 2018.08.01 |
03. System Structure & Program Execution 2 (0) | 2018.07.20 |
02. System Structure & Program Execution 1 (0) | 2018.07.18 |
01. Introduction to Operating Systems (0) | 2018.07.17 |