개요
- CPU는 컴퓨터 자원 중 가장 중요한 자원
- 중앙처리장치 스케줄링
- 정의 : 사용자로부터 의뢰받은 작업을 처리하기 위해서 프로세스들에게 중앙처리장치 또는 프로세서들을 할당하기 위한 정책을 입안하는 것
- 프로세스 스케줄링은 준비완료(ready) 상태에 있는 프로세스들 중 어느 것을 중앙처리장치에 할당시킬 것인가를 결정하는 것
- 목적 : 중앙처리장치 처리율(throughput)의 최대화와 반환 시간(turnaround time)의 최소화
프로세스 관리
프로세스의 정의
- 실행(executing, running) 중인 프로그램
- PCB(process control block)를 지닌 프로그램
- 프로그램 카운터(program counter)를 지닌 프로그램
- 능동적 개체(entity)로, 순차적으로 수행하는 프로그램
프로세스 관리
- 사용자 프로세스와 시스템 프로세스의 생성과 삭제
- 프로세스의 일시 중지와 재 수행
- 프로세스 스케줄링
- 프로세스의 동기화
- 프로세스 간 통신
- 교착 상태 처리
프로세스 구성 요소
- 주기억 장치에 저장되어 있는 프로세스의 저장 영역
- 코드 영역 : 프로그램의 코드 자체가 바이너리 코드로 저장되는 공간
- 데이터 영역 : 프로그램의 전역 변수(global variable)나 정적 변수(static variable)의 할당을 위한 공간
- 스택(stack) 영역 : 지역 변수(local variable) 할당과 함수 호출 시 전달되는 인수(argument) 값의 저장 공간
- 힙(heap) 영역 : 동적 할당을 위한 저장 공간
프로세스의 상태
- 프로세스 : 현재 실행 중이거나 곧 실행이 가능한(ready 상태) PCB를 가진 프로그램
- 하나의 프로세스는 중앙처리장치의 실행과 입출력 대기 등과 같은 서로 구분되는 상태를 반복하면서 완료된다.
- 프로세스의 상태
① 실행 상태(running) : 프로세스가 중앙처리장치를 차지하고 있는 상태
② 준비완료 상태(ready) : 중앙처리장치가 사용 가능하게 될 때 그것을 할당받을 수 있는 상태
③ 대기 상태(block) : 프로세스가 중앙처리장치를 차지하고 처리하다가 입출력 처리 등을 하게 되면 중앙처리장치를 양도하고 입출력 처리가 완료될 때까지 대기하고 있는 상태
- 프로세스의 상태 전이
- 작업이 시스템에 제시(submit, 장착)되면 스풀러(SPOOLer)에 의해 디스크에 수록되어 보류 상태가 된 후
- 시행될 프로세스로 만들어 준비완료 리스트의 가장 뒤에 삽입(Job Scheduler)
- 프로세스 스케줄러는 준비완료 상태에 있는 여러 프로세스 중 실행될 프로세스를 선정하여 CPU를 할당하며, 프로세스는 준비완료 상태에서 실행상태로 변함(Dispatch, Process Scheduler)
- 할당시간이 지나도록 CPU를 차지해야 하는 경우, 일단 준비완료 상태로 변환(timer run-out)
- 할당시간을 초과하기 전에 입출력이 발생하면 CPU를 양도하고 입출력이 완료할 때까지 대기 상태로 변환(block)
- 입출력 처리가 완료되면 대기 상태의 프로세스에게 입출력 완료를 알려 준비완료 상태로 전환(wake-up)
- 타임 슬라이스(time slice), 할당시간(time quantum) : 운영체제는 한 프로세스가 시스템을 독점하는 것을 방지하기 위하여 지정된 시간 동안만 프로세스가 중앙처리장치를 점유하도록 하는데, 이 시간을 말함
- 실행상태의 프로세스가 할당시간을 초과하기 전에 입출력이 발생하면 중앙처리장치를 양도하고 입출력이 완료될 때까지 대기 상태로 변환됨(block)
- 입출력 처리가 완료되면 대기 상태의 프로세스에게 입출력 처리 완료를 알려 준비완료 상태로 전환시켜야 함(wake-up)
- 이러한 여러 가지 프로세스의 상태에 대한 조사와 통보는 트래픽 제어기(traffic controller)가 담당
① 디스패치(dispatch) : 준비완료 상태 -> 실행 상태
② timer runout : 실행 상태 -> 준비완료 상태
③ block : 실행 상태 -> 대기 상태
④ wake-up : 대기 상태 -> 준비완료 상태
프로세스 제어 블록(Process Control Block)
- PCB의 구성 형태
- 정의 : 프로세스에 관한 모든 정보를 가지고 있음
- 모든 프로세스는 각기 고유의 PCB 지님
- 프로세스 생성 시 만들어 지고, 종료 시 제거됨
- PCB 내용의 변경은 프로세스의 상태 변화가 일어난 경우 트래픽 제어기에 의하여 행해짐
- 프로세스의 현재 상태(실행, 준비완료, 대기 등)
- 프로세스의 고유 이름(identifier)
- 프로세스의 우선순위
- 프로세스가 적재된 기억장치의 주소를 가지는 포인터
- 할당된 자원(장치 등)을 가리키는 포인터
- 중앙처리장치의 각종 레지스터 상태를 저장하기 위한 공간
- PCB들은 서로 링크되어 있는 경우가 대부분이며, 준비완료 리스트나 대기 리스트는 FIFO(First In First Out) 큐,
우선순위(priority) 큐, 트리 구조, 스택(stack) 또는 단순한 무순서의 연결 리스트들로서 PCB들을 연결함
프로세스 생성
- 유닉스 환경에서 프로세스를 생성시키는 것은 명령어 fork()