-
자, 저번편에 이어 그럼 운영체제가 뭐하는 녀석인지를 알아보려고한다.
일단 전체적으로 대충 훑자면- CPU 스케줄링
- 메모리 관리
- 파일 관리
- 입출력 관리
- 프로세스 관리
- 네트워킹
- 보호
이정도가 있을것이다.
이중 일단 CPU 스케쥴링에 대해 먼저 이야기해보려고한다
일단 스케쥴링이 뭔지부터 생각해보자 운영체제의 CPU 스케쥴러는 Ready상태의 프로세스 중에서 어떤 프로세스에게 CPU를 할당할지 결정하는겁니다. 이걸 CPU 스케쥴러는 라고 합니다.
또한 Dispatcher라는게 있는데 이거는 CPU 제어권을 CPU 스케쥴러에 의해 선택된 프로세스에게 넘기는 작업을 합니다. 이 작업을 Context switch라고 합니다~CPU 스케쥴링은 규모에 따라 장기 , 중기, 단기 스케쥴링으로 구분됩니다. 알아봅시다
일단
장기 스케쥴링
- 가장 큰 틀에서 이루어지는 CPU 스케쥴링입니다. == 고수준 스케쥴링, 작업 스케쥴링이라고도 합니다.- 프로세스에 Memory을 주는 문제를 스케쥴링 합니다.
- 전체 시스템의 부하를 고려하여 작업 요청을 받아들일지, 거부할지에 대한 결정을 합니다. 즉 new 상태의 프로세스를 admitted 하는 작업을 장기 스케쥴러가 합니다.
- 즉 장기스케쥴링의 결정에 따라 시스템 내의 프로세스 총 개수가 정해지는 겁니다- 최근에는 장기스케쥴러가없이, 프로그램을 실행시키면 곧바로 ready상태로 들어가는일도 있습니다.
중기 스케쥴링- 장기 스케쥴링은 프로세스의 활성화 승인을 다룬다면 중기 스케쥴링은 이미 활성화가 된 프로세스들에 대한 관리를 합니다.
- 시스템의 과부하를 막기 위해 활성화된 프로세스들의 중지 여부를 결정하여 활성화된 프로세스 수를 조절합니다.- 즉 여유공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫒아냅니다.(Swap out)
- 중기 스케쥴링에 의해 중지된 프로세스들은 보류상태가 됩니다.
단기 스케쥴링- 가장 작은 단위의 스케쥴링을 단기 스케쥴링이라고 합니다.
- 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 등을 결정합니다.
- 단기 스케쥴러가 어떤 기준에 따라 프로세스를 선택 하고 어느 정도 자원을 배분할지에 따라 시스템에 큰 영향을 끼칩니다.
CPU 스케쥴링의 목적은 모든 프로세스가 적당히, 공평하게, 효율적으로 자원을 할당받는 것입니다. 하지만 다양한 상황에서 만족시키는것은 쉽지가 않습니다.
그럼 이제 목적을 이루기 위한 이야기를 해볼까요
선점형스케쥴링과 비선점형 스케쥴링
선점이라는 뜻은 뺴앗을 수 있음을 말합니다. 선점형 스케쥴링의 경우에는 운영체제가 필요하다고 느끼게 되면 실행 상태에 있는 프로세스의 작업을 중단시키고 새로운 작업을 시작 할 수 있습니다.
선점형스케쥴링은 Context switch 로 인한 오버헤드가 발생합니다. 그러나 하나의 프로세스가 CPU를 독점한다는 것은 동시에 여러 작업을 할 수 없다는 의미이므로 대부분의 저수준 스케쥴러는 선점형 스케쥴링 방식을 사용합니다.지선점형은 어떤 프로세스가 실행 상태에 들어가면 그 프로세스가 끝나거나 CPU를 자진 반납하는 경우가 아니면 계속 실행되는 것을 말합니다.이렇게 되면 자연스럽게 오버헤드등의 문제는 생기지않겠지만 확실히 효율이 떨어질겁니다.