- 일반적으로 함수의 매개변수, 복귀주소와 로컬변수와 같은 임시적인 자료를 가지는 프로세스 스택과 전역변수들을 수록하는 데이터섹션을 포함한다
- 프로세스 실행중에 동적으로 할당되는 메모리인 힙을 포함한다.
프로그램 : 명령어 리스트를 내용으로 가진 디스크에 저장된 파일과 같은 수동적인 존재(passive entity)
프로세스 : 다음에 실행할 명령어를 지정하는 프로그램 카운터 및 관련된 자원의 집합을 가진 능동적인 존재(active entity)
프로세스를 생성하는 과정에서 많은 프로세서들을 생성하는 것이 보통이다
3.1.2 프로세스 상태(process state)
프로세스의 상태(process state)
-new : 프로세서가 생성중이다.
-running : 명령어들이 실행중이다
-waiting : 프로세스가 어떤 사건이 일어나기를 기다린다.
-ready : 프로세스가 할당되기를 기다린다.
-terminated : 프로세스가 실행을 종료한다.
3.1.3 프로세스 제어블록(process control block)
PCB는 특정 프로세서와 연관된 여러 정보를 수록하며, 다음과 같은 것들이 포함된다.
- 프로세서 상태: 상태는 new, ready, running, waiting, halted 등이 있다.
- 프로그램카운터 : 프로그램 카운터는 이 프로세스가 다음에 실행할 명령어의 주소를 가리킨다.
- cpu레지스터 : 컴퓨터의 구조에 따라 다양한 개수와 타입을 가진다. 레지스터에는 누산기(accumulator), 인덱스 레지스터, 스택 레지스터, 범용 레지스터들과 상태코드정보가 포함된다. 이 상태 정보는 인터럽트 발생시 프로그램 카운터와 함께 저장되어야 한다. 인터럽트 처리후 프로세스가 중단 지점으로부터 올바르게 실행할 수 있게 한다.
- cpu-스케줄링 정보: 이 정보는 프로세스 우선순위, 스케줄 큐에 대한 포인터와 다른 스케줄 매개변수들을 포함한다.
- 메모리 관리 정보: 이 정보는 운영체제가 지원하는 메모리 시스템에 따라 기준(base) 레지스터와 한계(limit) 레지스터의 값, 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보를 포함한다.
- 회계(accounting) 정보 : 이 정보는 cpu가 사용된 양과 사용된 실제시간, 시간제한, 계정 번호, 잡 또는 프로세스 번호등을 포함한다.
- 입출력 상태 정보 : 이 정보는 이 프로세스에 할당된 이 프로세스에 할당된 입출력 장치들과 열린파일의 목록등을 포함한다.
3.1.4 스레드
하나의 제어쓰레드는 프로세서로 하여금 한번에 단지 한가지일만 실행할 수 있게 한다.
3.2 프로세스 스케줄링
3.2.1 스케줄링 큐
프로세스가 시스템에 들어오면 이들은 잡큐에 놓여진다.
준비완료 상태에서 실행을 대기하는 프로세스들은 준비완료 큐(ready queue)라 불리는 리스트 상에 유지된다.
장치큐(device queue) : 특정 입출력 장치를 대기하는 프로세스들의 리스트
큐잉도표(queueing diagram)
프로세스에 cpu가 할당되어 실행되면 다음 여러가지 사건들 중 하나가 발생할 수 있다
-프로세스가 입출력을 요청하여 입출력 큐에 넣어질 수 있다
-프로세스가 인터럽트의 결과에 따라 강제로 cpu로부터 제거되어 준비완료 큐에 다시 놓일 수 있다.
3.2.2 스케줄러
프로세스는 일생동안 다양한 스케줄링 큐들 사이를 이주한다.
장기스케줄러는(잡스케줄러) 풀에서 프로세스들을 선택하여 실행하기 위해 메모리로 적재한다.
단기스케줄러(cpu스케줄러)는 실행 준비가 완료되어있는 프로세스들 중에서 선택하며 이들중 하나에게 cpu를 할당한다.
실행간격이 짧기때문에 단기스케줄러는 반드시 매우 빨라야 한다.
장기스케줄러는 다중프로그램의 정도를 제어한다.
입출력 중심프로세스는 연산보다 입출력실행에 더 많은 시간을 소요하는 프로세스이다.
cpu중심 프로세스는 입출력 중심프로세스보다 연산시간을 더 소요하여 입출력 요청을 드물게 발생시키는 프로세스이다.
장기스케줄러는 입출력중심과 cpu중심 프로세스들이 적절히 혼합되도록 선택해야 한다.
중기스케줄러(medium-term scheduler)의 핵심 아이디어는 메모리에서 프로세스를 제어하여 다중프로그래밍 정도를 완하하는것이다.