Process Concept
● 운영체제는 다양한 프로그램들을 실행한다.
- 일괄처리 시스템(Batch System)은 작업들(jobs)을 실행
- 시분할 시스템(Time-shared systems)은 사용자 프로그램이나 tasks를 수행시킨다. ● 이 책에서는 작업(job)과 process를 거의 유사하게 사용한다. ● Process – 수행중인 프로그램 : 프로세스의 실행은 순차적인 방식(sequentialfashion)으로 진행된다. -> 어떤 시점에서든지 하나의 명령어만이 프로세서를 위하여 실행된다. ● 프로세스랑 단순히 프로그램 그 자체를 의미하는 것이 아니라 다음을 포함한 능동적인실체이다.
- Program Counter : 어떤것을 실행할것이냐
- Stack : 메모리 관리
- Data section : 데이터 저장공간
- register
- Program code
Process in Memory
- text : 코드와 변하지 않는 상수 값들이 주로 들어간다.일반적으로 text의 값은 프로그램이 시작되면 정해진크기를 가질 수 있다.
- stack : 높은 번지에서 낮은 번지로 저장
- heap : 낮은 번지에서 높은 번지로 저장
- 프로그램에 따라 스택과 힙의 공간 차지 비율은 다르다.
Process State
● As a process executes, it changes state
- new : The process is being created
- running : Instructions are being executed
- waiting : The process is waiting for some event to occur
- ready : The process is waiting to be assigned to a processor
- terminated : The process has finished execution
Process Control Block(PCB)
● 각 프로세스는 운영체제에서 프로세스 제어 블록(PCB)에 의해 표현된다. ● 프로세스 제어 블록은 특정 프로세스에 대하여 많은정보를 갖는 데이터 블록이나 레코드들로서 다음과같은 것들이 있다.
- 프로세스 상태(Process state) : 생성, 준비, 수행, 대기, 정지 상태
- 프로그램 카운터(Program Counter) : 다음에 실행될 명령어의 주소
- CPU 레지스터(CPU registers) : CPU 레지스터는 컴퓨터 구조에 따라 다양한 수와 형태를 갖는다.
- CPU 스케줄링 정보(CPU scheduling information) : 프로세스 우선순위, 스케줄 큐의 포인터와 다른 스케줄 매게 변수들을 포함한다.
- 메모리 관리 정보(Memory-management information) : 기준과 한계 레지스터의 값, 운영체제가 사용하는 기억장치 시스템의 페이지 테이블 또는 세그먼트 테이블의 정보를 포함한다.
- 계정 정보(Accounting information) : 실시간의 양, 시간 범위, 계정 번호, 작업 또는 프로세스 번호를 포함한다.
- 입출력 상태 정보(I/O state information) : 입출력 요구들, 입출력 장치들과 open 된 파일의 목록 등을 포함한다.
Schedulers
● 프로세스는 실행되는 동안 다양한 스케줄러 큐들 사이를 이주하게 된다. 운영체제는 어떤방법으로든지 이들 큐에서 프로세스들을 선택해야 한다.
- 장기 스케줄러(Long-term scheduler(or job scheduler)) : 프로세스를 선택하여 실행하기 위해 기억장치로 적재하는 것 (새로 만든 프로세스 중에 ready 큐로 보낼 것을 선택, 서버 같이 프로세스가 아주 많을 때)
- 단기 스케줄러(Short-term scheduler(or CPU scheduler)) : 실행 준비가 되어 있는 프로세스 중에서 하나를 선택하여 CPU를 할당. ● 단기 스케줄러는 실행 빈도수(milliseconds), 즉 CPU에 의해 매우 빈번히 선택되기 때문에, 매우 빨라야 한다. -> 단기 스케줄러의 프로세스 수가 많아지면 효율이 떨어진다. ● 장기 스케줄러는 시스템에서 자주 선택되지 않으므로(seconds, minute) 실행 빈도수가낮아 느리게 수행되어도 된다. -> 따라서, 장기 스케줄러는 다중 프로그래밍의 수(기억 장치에 있는 프로세스들의 수)를 제어한다. -> 단기 스케줄러가 처리할 ready queue에 있는 프로세스의 수를 적절히 유지해준다. ● 프로세스들은 다음과 같이 두 가지로 묘사할 수 있다
- 입출력 중심 프로세스(I/O-bound Process) : 이는 연산보다 입출력 수행에 더 많은 시간을 소비하는 프로세스
- CPU 중심 프로세스(CPU-bound Process) : 이는 입출력 중심 프로세스보다 연산에 더 시간을 소비하여 입출력 요청이 드물게 발생하는 프로세스 ** 장기 스케줄러는 good process mix를 위해 노력해야 한다. ● 시분할 시스템과 같은 일부 운영체제들은 부수적인 중간 단계의 중기 스케줄링을 도입