아래 내용들은 양희재 교수님의 운영체제 강의를 듣고 정리한 내용입니다.
new, ready, running, waiting, terminated
new : 하드디스크 안에 프로그램을 메인메모리에 올리는 상태
ready : 올라온 프로그램이 초기화를 끝내고 돌리기전 모든 준비가 끝난 상태
running : 램위에 실제로 프로그램이 동작하고 있는 상태
wating : 만약에 프린트 프로그램같은 경우 프린트를 할때는 cpu가 연산할게 없다
wating 갔다가 프린트 다하면 다시 running상태 될수 있다.
terminated : 프로그램 작업이 끝난 상태
timesharing system 은 한가지 상황이 더 있는데, 빨간색으로 움직이는 상황임.
일정 시간이 지나면, 다른 프로그래밍을 연산해야하기 떄문에, ready상태로 만들고 다음 프로그래밍을 running하러 가게된다.
프로세스에 대한 모든 정보 (Task Control Block (TCB))
pcb는 위의 그림처럼 프로세스를 돌릴때 같이 있는 테이블인데, 여기에 현재 동작중이던 레지스터의 정보나, 어디까지 작업했는지 등 해당 프로그램에 대한 정보들이 담긴다. 그래야 running에서 wating이나 ready로 넘어가도 다시 running했을때 데이터를 기억함.
p1,p2,p3 등의 pcb는 os에 존재한다
해당 프로세스의 cpu를 얼마나 사용했는지 기록하(process state)기도 하고,
해당 프로세스의 베이스 메모리 주소와, 마지막 limit 메모리주소를 저장하는데도 사용(MMU info)
cpu를 얼마나 사용하는지 저장을 해둠,(CPU time,) ex) cpu사용량을 저장해두고 비용을 지불하게 만들수도 있음.
프로세스 아이디(이름)을 저장해두는데도 사용함(process id).
process state (running, ready, waiting, …), PC, registers,
MMU info (base, limit), CPU time, process id, list of open files, …
잡 스케줄러는 i/o와 s/w프로그램을 골고루 배분하기 위해서 선택도한다.
이렇게 메인메모리에 올라간 프로그램들은 메모리에서 cpu의 연산을 받기까지 대기함. 이를 ready queue라고 함
CPU scheduler
cpu 스캐줄러는 이러한 대기 인원중 어떤걸 먼저 cpu가 계산할지 정해줌
Short-term scheduler
short-term scheduler는 여러개의 프로그램을 동시에 사용한다느 느낌을 받으려면 자주 프로그램을 바꾸어주어야 함으로 short 짤은 간격임.
Degree of multiprogramming (메인 메모리에 몇개의 프로그램이 올라와있나.)
i/o-bound vs CPU-bound process
i/o bound : 입출력을 많이하는 프로세스는 (워드프로세서 같은거 글자를 처리하는건 cpu가 처리할일이 별로 없다. 사람이 칠때 까지 기다리다가 입력하면 출력해줌)
cpu-bound : 슈퍼컴퓨터에서 하는 작업, 전국의 기상 데이터들을 모두 계산해서 앞으로의 날씨를 추측 계산량이 많다.
Medium-term scheduler
– Swapping
아래 그림을 보면, 하나의 서버를 3명이 공유하며 메인메모리에 a,b,c 세사람의 프로그램들이 올라와있다. 그중 b가 화장실을 간다고 자리를 비우면, 메모리에는 올라와있지만, b에서 프로그램을 동작할때 cpu는 아무것도 안하고 놀게된다. 이떄 swapping을 사용해, cpu가 놀고 있다는걸 os가 인지하고 b프로그램을 쫒아낸는 작업을 swapping이라고 한다.
(이렇게 wapping 작업은 sort-term보다는 느리고, long-term보다는 짤게 일어나기 때문에 medium-term scheduler라고 함)
Context switching (문맥전환) : 램위에 올라가있는 프로그램을 cpu가 처리하다가 다른 프로그램으로 넘어갈떄를 문맥전환이라고 한다.
– Scheduler (어떤 프로그을 cpu계산할지.)
– Dispatcher (os 안에 프로세스 관리 부서 안에 dispatcher이라는 프로그램이 있다.)
dispatcher 역활 : context할떄 현재 진행중이던 프로세서의 레지스터나 메모리 주소, 등 문맥전환전 필요한 데이터들을 pcb에 저장하고 새로 시작할 프로그램의 pcb데이터를 불러오는 역활
– Context switching overhead
이처럼 문맥전환을 할떄마다 데이터를 저장하고 불러오고 할떄, 해야할일들이 생기고 이러한 작업들을 switching overhead라고 한다.