[운영체제] 3장: Process Description and Control

CoCoral·2023년 10월 19일
0

운영체제

목록 보기
3/11

Process

  • 정의
    • 실행중인 프로그램
    • instruction sequence, current state, system resource 에 의해 특징 지어지는 활성화 단위이다.
  • 구성 요소
    • Program code
    • Data (전역 변수, 정적 변수)
    • Stack (지역 변수)
    • Process Control Block
      • 프로세스 상태를 설명하는 속성
      • OS에 의해 생성되고 관리된다.
    • 실행 파일과의 차이점
      • Process 에만 Stack과 PCB가 있고 실행 파일에는 없다.
  • Dispatcher: 프로그램 스위칭 과정에서 어떤 프로그램을 실행시킬 지 결정하는 기능
    • OS 기능
    • 하나의 프로그램이 프로세서를 독점하는 것을 방지한다.
    • Ready Queue 에 있는 프로세스 중에서 결정한다. (Blocked Queue X)

5-State Model

  • New: 프로세스가 생성된 상태
  • Ready: 실행할 준비가 된 상태
    • Dispatcher 에 의해 Running 으로 전환된다.
  • Running: 실행 상태 (프로세서 할당 받음)
    • Timeout 에 의해 Ready 로 전환된다.
    • Event Wait(I/O 작업)에 의해 Blocked 로 전환된다.
  • Blocked: I/O 작업 수행 상태
    • Event Occurs(I/O Interrupt)에 의해 Ready 로 전환된다.
  • Exit: 프로세스 종료
    • 사용한 자원을 반납한다.

  • Queue: 프로세스 자체가 아닌 ID, 포인터만 저장되고 메모리 상에 존재한다.
    • OS에 의해 관리되는 자료 구조이다.
    • 메인 메모리에 올라와 있는 프로세스의 PCB를 가리키고 있다.
    • 이벤트 종류에 따라 여러 큐를 구현할 수 있다.

Swapping

  • 필요성
    • 프로세서는 I/O 모듈보다 훨씬 처리 속도가 빠르기 때문에 메모리에 있는 모든 프로세스들의 상태가 Blocked 인 상황이 발생 가능하다. (즉 Ready Queue 가 비어 있는 상황)
    • OS는 Blocked Queue 에 있는 프로세스들을 하드디스크의 Swapping area 로 밀어내고, Swapping area 에서 실행 대기중이었던 프로세스들을 메모리로 가져온다.
    • 실행 파일 형태가 아닌 프로세스 형태로 Swapping area 로 옮겨진다. (Stack + PCB)
  • 2 new states
    • Blocked/Suspend: Blocked → Swapping area
    • Ready/Suspend: Blocked/Suspend 에서 I/O 작업이 완료된 상태로 메인 메모리에 적재되면 실행 가능하다.
    • New → Ready/Suspend: Multiprogramming Level 이 가득 찬 상태에서 새로운 프로그램을 실행했을 때 발생한다.
      • Multiprogramming Level: 동시에 실행시킬 수 있는 프로그램의 개수로 동시에 메모리 적재가 가능하다.
    • Blocked/Suspend → Blocked: I/O 작업의 완료를 예측하거나 높은 우선 순위로 인해 발생한다.
    • 하나씩이 아닌 여러 프로세스에 대해 한 번에 Swapping 작업이 이루어진다.
      • 하드디스크에서 데이터를 읽을 때 효율성의 관점에서, 데이터 수의 영향보다 하드디스크 접근 횟수의 영향이 더 크다.


Reasons for Process Suspension

  • Swapping
  • Other OS reason
    • 백그라운드 프로세스나 유틸리티 프로세스가 Ready or Running 에서 Ready/Suspend 가 될 수 있다. (시스템 성능과 효율성 증대)
    • 문제를 일으킬 수 있는 프로세스가 Running 에서 Ready/Suspend 가 될 수 있다.
  • Interactive user request
    • 디버깅
    • 다른 프로세스가 사용중인 자원을 요청한 경우
  • Timing
    • 주기적으로 실행되는 프로세스의 작업이 끝나고 다음 실행을 기다리는 동안 Suspension 된다.
  • Parent process request
    • 자원 관리나, 동기화, 오류 처리를 위해 부모 프로세스가 자식 프로세스를 suspension 하도록 요청할 수 있다.

Process Description

  • Operating System Control Structure
    • 각 프로세스의 현재 상태와 자원에 대한 정보를 테이블로 만들어 관리한다.
    • 종류: Memory Table, I/O Table, File Table, Process Table
    • 메인 메모리 상의 OS 공간에 위치한다.
  • Memory Table
    • 메인 메모리 중 어느 부분이 어떤 프로세스에게 할당되어 있는지에 대한 정보
    • secondary memory(swapping area)에서 어느 부분이 어떤 프로세스에게 할당되어 있는지에 대한 정보
    • 공유 메모리 영역에 어떤 프로세스가 접근할 수 있는지에 대한 정보
    • 가상 메모리를 관리하기 위해 필요한 정보
  • I/O Table
    • I/O 장치가 사용 가능한 지, 사용 중인지에 대한 정보
    • I/O 장치가 사용 중일 때의 상태 정보
    • I/O transfer 의 출발지나 목적지로 사용되고 있는 메인 메모리의 위치
  • File Table
    • 파일의 존재 여부 정보
    • secondary memory 에서의 위치 정보
    • 현재 상태, 열린 상태라면 파일 포인터 위치 정보도 포함된다.
    • 그 외 속성들(생성 및 수정 시간, 소유자 등)
  • Primary Process Table
    • Process ID
    • 프로세스 이미지에 대한 포인터
    • 메인 메모리 상 위치

Process Image

  • 프로세스의 상태 정보로 프로세스를 실행하기 위해 필요한 정보가 포함되어 있다.
  • 구성 요소
    • User Data: 전역 변수, 정적 변수
    • User Program: 프로그램 코드
    • Stack: 지역 변수와 반환 주소 등을 저장
    • Process Control Block: OS 가 프로세스를 관리하기 위해 필요한 정보
  • OS 는 프로세스 이미지를 통해 프로세스를 관리한다.
    • 프로세스 이미지가 메모리 상에 적재되어 있어야 OS에 의해 관리될 수 있다.
  • User Address Space: 프로그램 안에서 사용할 수 있는 주소 공간으로 프로그램 코드와 데이터가 포함된다.
  • Shared Address Space: 다른 프로세스와 같이 사용할 수 있는 코드나 데이터가 있는 공간

Process Control Block

  • OS 에 의해 관리되는 자료구조이다.
  • Process Identification
    • Process Identifier
    • Parent Process Identifier
    • User Identifier
  • Processor State Information
    • User-Visible Registers: 사용자 프로그램에서 직접 액세스할 수 있는 레지스터
    • Control & Status Registers: PC, PSW
    • Stack Pointers
  • Process Control Information
    • 스케줄링과 상태 정보
    • 메모리 관리 (메인 메모리, 하드 디스크, 가상 메모리 등)
    • 자원의 소유권과 이용률
    • 프로세스 간 통신 (IPC)
    • 프로세스 권한
    • 프로세스 포인터에 대한 자료 구조

Typical functions of OS

  • 프로세스 관리
    • 프로세스 생성과 종료
    • 프로세스 스케줄링과 디스패칭
    • 프로세스 스위칭
    • 프로세스 동기화와 IPC 지원
      • 프로세스 A 에서 B 로 데이터가 전송될 때, OS 를 거쳐서 B 로 전송된다. (A -> OS -> B)
    • PCB 관리
  • 메모리 관리
    • 프로세스에게 메모리 주소 공간을 할당
    • Swapping
    • 페이지와 세그먼트 관리
  • I/O 관리
    • 버퍼 관리
    • 프로세스에게 I/O 채널과 장치 할당
  • 지원 기능
    • Interrupt handling
    • Accounting
    • Monitoring

Process Creation

  1. 새로 생성된 프로세스에게 ID 할당
  2. 프로세스에게 공간 할당
  3. PCB 초기화
    • 일반적으로 부모 프로세스의 PCB 를 복사하여 초기화된다.
  4. 적절한 연결 설정
  5. 다른 자료 구조 생성 및 확장

Process Switching

  • 현재 Running 상태의 프로세스가 인터럽트 되고 OS 가 다른 프로세스에게 Running 상태를 넘겨주는 것이다.
  • 전환 시점
    • Interrupts (hardware)
      • Clock: Ready 로 전환
      • I/O: Running or Ready 로 전환
      • Memory fault: Blocked 로 전환
    • Trap (software interrupt)
      • 치명적 오류가 발생했다면 Exit 로 전환
      • 치명적이지 않다면 다시 Running 가능
    • Supervisor Call
      • Blocked 로 전환
      • 간단한 기능일 때는 Running 도 가능
  • Processor Execution Mode
    • User mode: 사용자 프로그램을 실행하고 있을 때의 프로세서 모드로 권한이 적다.
    • Kernel mode: OS 프로그램을 실행하고 있을 때의 프로세서 모드로 권한이 많다.
  • Mode Switching
    • User mode(A) -> Kernel mode -> User mode(A)
  • Process Switching
    • User mode(A) -> Kernel mode -> User mode(B)
    • 프로세스 스위칭 과정에서 모드 스위칭도 발생한다.
  • Change of Process State
    1. PC 와 레지스터를 포함한 프로세서의 context 를 저장한다.
    2. 현재 실행 중인 프로세스의 PCB 를 업데이트 한다.
    3. 프로세스의 PCB 를 적절한 큐로 옮긴다.
    4. 다음에 실행할 다른 프로세스를 선택한다.
    5. 선택된 프로세스의 PCB 를 업데이트 하고 Running 상태로 전이시킨다.
    6. 메모리 관리와 관련된 자료 구조를 업데이트 한다.
    7. 프로세서의 context 를 복구한다.

Execution of Operating System

  • Non-process Kernel: 커널이 프로세스가 아닌 특별한 모드로 동작한다.
    • OS 전체가 커널일 때 사용하던 방식이다.
  • Execution within user processes: OS 가 사용자 프로세스의 context 에서 동작한다.
    • 사용자 프로세스 안에 커널 스택이 추가되고 OS 는 Shared address space 에 위치한다.
    • OS 는 별도의 프로세스가 아니기 때문에 OS 만의 PCB 가 존재하지 않는다.
    • 사용자 프로세스 안에 있어도 OS 코드를 실행할 때는 커널 모드로 동작한다.
    • OS 를 실행할 때 프로세스 스위칭이 아닌 모드 스위칭만 발생하므로 불필요한 프로세스 스위칭이 줄어들고 프로세서 context 를 저장할 필요가 없다.
  • Proceess-Based Operating System: OS 가 별도의 프로세스로 동작한다.
    • OS 를 실행할 때마다 프로세스 스위칭이 발생한다.
    • 멀티 프로세서 시스템에서 동시에 여러 OS 실행이 가능하다.

UNIX SVR4

  • Process Management
    • 대부분의 OS 기능이 사용자 프로세스 안에서 실행된다. (모두 그런 것은 아니다)
    • 시스템 프로세스
      • Swapper(0)
      • init(1)
      • Process Tree
    • 사용자 프로세스
  • Process Description
    • User Level Context
      • Process text (code)
      • Process data
      • User stack
      • Shared memory
    • Register Context (= Processor state information)
      • PC
      • Processor status register
      • Stack pointer
      • General-purpose register
    • System Level Context
      • Process table entry
      • User area: OS 가 사용자 프로세스 안에서 실행될 때 액세스 하는 정보
      • Per process region table: Process control information 중 메모리 관련 정보
      • Kernel stack
      • Process table entry 와 User area 에 Process identification, Process control information 이 나뉘어져 저장된다.

  • UNIX Process State Transition Diagram
    • Created: New
    • Preempted / Ready to Run In Memory: Ready
      • Preempted: 실행 상태에 있다가 Ready 로 전이된 것
    • User Running / Kernel Running: Running
    • Zombie: Exit
    • Asleep in Memory: Blocked
    • Sleep, Swapped: Blocked/Suspend
      • Asleep in Memory 로 상태 전이 불가
    • Ready to Run Swapped: Ready/Suspend

      프로세스가 대기 상태에 있다가 실행될 때, OS 의 개입이 필요하다.
      하지만 상태도에서는 Preempted 에서 바로 User Running 으로 전이되는 것을 볼 수 있다.
      유닉스는 OS 가 사용자 프로세스 안에서 실행되는 특징이 있다.
      즉, Preempted 상태에 있던 프로세스가 실행되기 직전에 실행 중이던 프로세스가 중단되는 과정에서 OS 가 다음 프로세스 실행 준비를 처리했기 때문에 위와 같은 상태도가 가능한 것이다.

profile
언젠간 iOS 개발자가 되겠지

0개의 댓글