1. What is process?
1) Process
- Process 용어의 몇몇 정의
- A program in execution
- The entity that can be assigned to and executed on a processor(프로세서에 할당되고 실행될 수 있는 엔티티)
- 일련의 instruction, current state 및 관련된 시스템 자원의 집합이 실행되는 것을 특징으로 하는 활동 단위
- job, task 그리고 process는 일반적으로 OS 측명에서는 유사
- 비록 그들은 다소 다른 용어적 역사를 가지고 있지만
- 예 : Machkernel : 프로세스를 두 개의 추상화로 나눈다.
- Task : 리소스 할당의 기본 단위
- Thread : 실행 상태의 기본 단위
2. Program vs Process
1) Program vs Process
- 프로그램 : 디스크에 저장된 passive entity(수동 엔티티)이다. ( binary sequence)
- 프로세스 : active entity(활성 엔티티)이다. (execution sequence)
- 실행파일(executable file)이 메모리에 로드되면 프로그램이 프로세스가 된다.
- 일련의 명령, current state 및 관련 시스템 리소스 집합이 실행되는 것을 특징으로 하는 활동 단위
- 프로세스의 두 가지 필수 요소는 다음과 같다.
- Program code
- A set of data associated with that code(해당 코드와 연결된 데이터의 집합)
2) The memory layout of a program
- Dynamic storage allocation(동적 스토리지 할당)
- execution sequence 제어 및 임시 데이터 저장을 위한 스택
- 필요에 따라 동적으로 할당할 Heap
3) Execution Sequence
- 프로그램 실행은 일반적으로 스택을 포함한다.
- Stack : LIFO(Last In First Out) list로 알려져 있다.
- Call Stack(또는 런타임 스택) : 프로시저 호출 및 프로시저 간 매개 변수 전달을 OS에서 "stack"으로 추적하는 데 사용
- 콜 스택은 Stack Frame(activation records 또는 activation frame이라고 함)으로 구성
- 프로세서가 호출을 실행할 때 return address를 스택에 푸시한다.
→ call된 process가 종료되고 다시 돌아와야 하기 때문에 스택에 return 주소를 푸시한다.
4) Implementation of Stack
- 스택 원소를 저장하는 데 사용되는 위치 집합이 필요하다.
- Stack pointer : 스택의 현재 top의 주소를 포함한다.
- 대부분의 프로세서에서 높은 주소에서 낮은 주소로 스택 증가
- Stack base : 맨 아래 위치의 주소를 포함한다.
- Stack limit : 다른 쪽 끝의 주소를 포함한다.
- Stack pointer : 스택의 현재 top의 주소를 포함한다.
- 프로세서가 call을 실행할 때
- return address를 스택에 푸시한다.
- 호출된 프로시저로 전달될 parameter를 스택에 푸시한다.
- 위의 두개가 저장된 스택의 공간을 Stack Frame이라고 함
3. Process Control Block
1) Process Control Block(PCB)
- OS에서 가장 중요한 데이터 구조
- OS에 필요한 프로세스에 대한 모든 정보를 포함
- 주요 목적
- 실행 중인 프로세스를 중단했다가 나중에 중단이 발생하지 않은 것처럼 실행을 재개할 수 있다.
- 프로세스가 중단되면 PC 및 프로세서 레지스터(context data)가 PCB에 저장
- OS가 여러 프로세스를 지원하고 multiprocessing을 제공할 수 있도록 지원
- PCB은 OS의 모든 module에서 읽거나 수정된다.
- Queue는 PCB의 링크된 목록으로 구현될 수 있다.
- PCB의 연결을 허용하는 포인터 포함
4. Process Description
1) Process Image
- 프로세스를 관리하고 제어하려면 OS가 알아야 할 사항을 고려한다.
- User program, data, and stack → 보통 user level context
- User program의 기본 요소(text 및 data areas)를 포함한다. 프로세스가 실행되는 동안 프로세서는 스택을 사용
- Process Control Block(PCB) → 보통 system level context
- OS가 프로세스를 관리하는 데 필요한 정보를 포함한다(process descriptor라고 함)
- User program, data, and stack → 보통 user level context
- 프로세스를 실행하려면 전체 process image가 main memory 또는 적어도 virtual memory에 로드되어야 한다.
- 각 process image는 process control block, user stack, 프로세스의 private address space 및 프로세스가 다른 프로세스와 공유하는 기타 주소 공간으로 구성
2) Trace of Process
- 가상 메모리 사용 안함
- 메모리에 완전히 로드된 3개의 프로세스
- Dispatcher(스케쥴링하는 코드 블럭)는 프로세서를 한 프로세스에서 다른 프로세스로 전환하는 프로그램이다.
- A 프로세스에서 6개의 명령어를 실행한 후 timeout이 되어 커널모드로 전환되고, B 프로세스에서 4개의 명령어를 실행 한 후 I/O operation이 발생
- process switch는 반드시 mode switch를 트리거한다.
- process switch 시가는 언제일까?
- Timer(Clock) Interrupt, System(Supervisor) Call, Exception
- 인터런트의 발생이 반드시 process switch를 의미하는 것은 아님!!!!!
• system call에 I/O request가 포함됨
• process swtich와 mode switch를 잘 구분해야 함 → mode switch의 빈도가 process switch보다 높음
5. Process States
1) Two-State Process Model
- 프로세스가 프로세서에 의해 실행되고 있는지 여부로 상태가 결정됨
- implementation은 inadequate(부적절)하다
- 실행 중이지 않은 프로세스
- 일부는 실행할 준비가 되어 있다.
- 다른 것들은 I/O 작업이 완료되기를 기다리고 있다.
2) Five-state Process Model
- 이 상황을 보다 자연스럽게 처리하는 방법은 실행 중이지 않은 상태를 두 가지 상태로 나누는 것이다.
- Ready state와 Blocked state
(1) Five-state
- New : 프로세스가 OS에 의해 실행 가능한 프로세스 풀(pool of executable process)에 아직 채택되지 않았을 때
- Ready : 기회가 주어졌을 때 실행할 준비가 된 프로세스
- Running : 현재 실행 중인 프로세스
- Blocked(Waiting) : I/O 작업 완료와 같은 특정 이벤트가 발생할 때까지 실행할 수 없는 프로세스
- Exit : 중지되었거나 어떤 이유로 중단되었기 때문에 OS에 의해 실행 가능한 프로세스 풀에서 해제된 프로세스
(2) Five-State Process Model
- ready queue과 blocked queue로 두 가지 queue로 구현
- 대규모 OS에서는 해당 queue에 수백 또는 수천 개의 프로세스가 있을 수 있다.
- 따라서 이벤트별로 하나씩 여러 개의 queue를 갖는 것이 더 효율적일 것이다.
3) Suspended Processes(일시 중단된 프로세스)
(1) Swapping
- 프로세스의 일부 또는 전부를 main memory에서 disk로 이동
- OS는 프로세스를 Suspend state로 전환하고 disk로 전송하여 프로세스 하나를 일시 중단할 수 있다.
- OS에서 blocked process 중 하나를 디스크로 스왑할 수 있다.
- OS가 높은 우선순위의 ready process보다 낮은 우선순위의 ready process를 일시 중단할 수 있음
- suspend queue : main memory에서 일시적으로 제거된 기존 프로세스의 queue
- 설명한 대로 swapping을 사용한다.
- blocked/suspend : 프로세스가 보조 메모리에 있으며 이벤트를 대기 중이다.
- ready/suspend : 프로세스는 보조 메모리에 있지만 main memory에 로드되는 즉시 실행할 수 있다.
(2) Seven-State Process Model
- Running → Ready/Suspend
- blocked/suspend queue에서 우선순위가 높은 프로세스가 방금 unblock되었기 때문에 OS가 프로세스를 preempting(선점)하고 있는 경우, OS는 running process를 (ready/suspend) queue로 직접 이동 시킬 수 있다.
'오퍼레이팅 시스템' 카테고리의 다른 글
오퍼레이팅 시스템 : Processor Scheduling Ⅰ (0) | 2023.04.08 |
---|---|
오퍼레이팅 시스템 : Process Description and Control Ⅱ (0) | 2023.04.08 |
오퍼레이팅 시스템 : Operating System Overview (0) | 2023.03.31 |
오퍼레이팅 시스템 : Computer System Overview Ⅱ (0) | 2023.03.25 |
오퍼레이팅 시스템 : Computer System Overview Ⅰ (7) | 2023.03.19 |