프로세스 관리
프로세스의 상태
와 리소스 소유권
을 표시하고, 프로세스 제어를 가능케하는 자료구조
(PCB : Process Control Block, 프로세스 제어 블록)를 유지해야 한다.프로세스 배경지식
컴퓨터 플랫폼은 하드웨어 자원들의 집합으로 구성되어있다. 컴퓨터 프로그램은 어떤 업무를 수행하기 위해 개발된 것인데, 주어진 하드웨어 플래폼 상에서 직접 응용을 작성하는 것은 비효율적이다. 공통 루틴 그리고 리소스 공유를 위해 소프트웨어가 필요해졌다. 그렇기 때문에 이러한 내부 리소스를 보호하는 기법을 필요로 한다. OS는 프로그램이 사용할 수 있는 편리하고, 풍부하고, 안전하고, 일관성있는 인터페이스를 제공한다. OS는 리소스에 대해 균일하고 추상화된 표현을 제공한다. 프로그램은 해당 리소스를 요청하고 접근 가능하다.
프로세스란?
프로세스는 멀티프로그래밍과 시분할 시스템의 메인 컨셉으로, 응용프로그램 실행 모델을 이야기한다.
실행중인 프로그램
,컴퓨터 상에서 실행중인 프로그램의 인스턴스
,처리기에 할당되어 수행될 수 있는 개체(entity)
,명령들의 순차 수행, 현재 상태, 연계된 시스템 자원들의 집합 등에 의해 특징지어지는 활성화 단위(a unit of activity)
이 모든 것이 프로세스라고 부를 수 있다. 간단하게 실행중인 프로그램이라고 이해하는 것이 편할 것 같다.
프로세스의 필수 요소
동일 프로그램을 수행하는 서로 다른 프로세스들이 공유할 수 있는 부분)
우선순위
프로그램 카운터
PCB의 주요 역할
- 수행하는 프로세스를 인터럽트한 후 나중에 그 인터럽트가 발생되지 않은 것처럼 프로세스 수행을 재개할 수 있도록 충분한 정보를 유지하는 것
- 다수의 프로세스를 지원하고 다중처리를 제공할 수 있게 해주는 주요 도구
- Context Switching
어떤 프로세스가 인터럽트될 때, 프로그램 카운터 및 처리기 레지스터들(하드웨어의 Context Data)의 현재 값이 해당 프로세스 제어블록(PCB)의 적절한 필드에 저장되고, 그 프로세스의 상태가 (이후 설명될) 블록 또는 준비 등과 같은 값으로 변경
- OS는 다른 프로세스 선택해서 수행 상태로 만들고, 그 프로세스의 프로그램 카운터와 문맥 데이터를 처리기 레지스터로 적재해서
새로운 프로세스
를 수행(CPU는 한번에 한개의 프로세스만 수행한다.)- 단일 처리기 컴퓨터에서는 임의 시점에 단 하나의 프로세스만이 수행된다.
처리기 관점
에서 볼 때, 처리기는 프로그램 카운터 레지스터(PC Register)값에 의해 결정된 순서에 따라 명령어들을 수행
한다.프로그램 카운터
는 시간이 흐름에 따라 다른 프로세스들을 표현하는 다른 프로그램 내의 코드를 가리킬 수 있다
프로그램의 수행
은 자신에 속한 일련의 명령어들을 수행
한다.trace
라고 부른다.