본문 바로가기

오퍼레이팅 시스템

오퍼레이팅 시스템 : Proccess Description and Control Ⅰ

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 및 관련 시스템 리소스 집합이 실행되는 것을 특징으로 하는 활동 단위
  • 프로세스의 두 가지 필수 요소는 다음과 같다.
    1. Program code
    2. 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

  • 스택 원소를 저장하는 데 사용되는 위치 집합이 필요하다.
    1. Stack pointer : 스택의 현재 top의 주소를 포함한다.
      • 대부분의 프로세서에서 높은 주소에서 낮은 주소로 스택 증가
    2. Stack base : 맨 아래 위치의 주소를 포함한다.
    3. Stack limit : 다른 쪽 끝의 주소를 포함한다.
  • 프로세서가 call을 실행할 때
    • return address를 스택에 푸시한다.
    • 호출된 프로시저로 전달될 parameter를 스택에 푸시한다.
    • 위의 두개가 저장된 스택의 공간을 Stack Frame이라고 함

3. Process Control Block

1) Process Control Block(PCB)

  • OS에서 가장 중요한 데이터 구조
    • OS에 필요한 프로세스에 대한 모든 정보를 포함
    • 주요 목적
      • 실행 중인 프로세스를 중단했다가 나중에 중단이 발생하지 않은 것처럼 실행을 재개할 수 있다.
      • 프로세스가 중단되면 PC 및 프로세서 레지스터(context data)가 PCB에 저장
    • OS가 여러 프로세스를 지원하고 multiprocessing을 제공할 수 있도록 지원

PCB 구성

  • PCB은 OS의 모든 module에서 읽거나 수정된다.
  • Queue는 PCB의 링크된 목록으로 구현될 수 있다.
    • PCB의 연결을 허용하는 포인터 포함

4. Process Description

1) Process Image

  • 프로세스를 관리하고 제어하려면 OS가 알아야 할 사항을 고려한다.
    1. User program, data, and stack → 보통 user level context
      • User program의 기본 요소(text 및 data areas)를 포함한다. 프로세스가 실행되는 동안 프로세서는 스택을 사용
    2. Process Control Block(PCB)  → 보통 system level context
      • OS가 프로세스를 관리하는 데 필요한 정보를 포함한다(process descriptor라고 함)
  • 프로세스를 실행하려면 전체 process image가 main memory 또는 적어도 virtual memory에 로드되어야 한다.

왼) 메인 메모리에 저장된 Process Image 사진, 오) Process Image 구성

  • 각 process image는 process control block, user stack, 프로세스의 private address space 및 프로세스가 다른 프로세스와 공유하는 기타 주소 공간으로 구성

2) Trace of Process

  • 가상 메모리 사용 안함
  • 메모리에 완전히 로드된 3개의 프로세스
  • Dispatcher(스케쥴링하는 코드 블럭)는 프로세서를 한 프로세스에서 다른 프로세스로 전환하는 프로그램이다.

가정 1 : Process B는 4개의 명령어를 실행하고 우리는 4번째 명령어에서 I/O 연산을 유발한다고 가정한다.

  • A 프로세스에서 6개의 명령어를 실행한 후 timeout이 되어 커널모드로 전환되고, B 프로세스에서 4개의 명령어를 실행 한 후 I/O operation이 발생

가정 2 : OS는 프로세스가 최대 6개의 명령 주기 동안만 실행되도록 허용한다고 가정. 이는 단일 프로세스가 프로세서 시간을 독점하는 것을 방지

  1. process switch는 반드시 mode switch를 트리거한다.
  2. 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

  1. New : 프로세스가 OS에 의해 실행 가능한 프로세스 풀(pool of executable process)에 아직 채택되지 않았을 때
  2. Ready : 기회가 주어졌을 때 실행할 준비가 된 프로세스
  3. Running : 현재 실행 중인 프로세스
  4. Blocked(Waiting) : I/O 작업 완료와 같은 특정 이벤트가 발생할 때까지 실행할 수 없는 프로세스
  5. 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을 사용한다.
    1. blocked/suspend : 프로세스가 보조 메모리에 있으며 이벤트를 대기 중이다.
    2. ready/suspend : 프로세스는 보조 메모리에 있지만 main memory에 로드되는 즉시 실행할 수 있다.

(2) Seven-State Process Model

  • Running → Ready/Suspend
    • blocked/suspend queue에서 우선순위가 높은 프로세스가 방금 unblock되었기 때문에 OS가 프로세스를 preempting(선점)하고 있는 경우, OS는 running process를 (ready/suspend) queue로 직접 이동 시킬 수 있다.