프로세스 기술(description)

  • 운영체제 컴퓨터 시스템에서 발생하는 사건들을 제어하면서 프로세스가 사용하는 시스템 자원들을 관리하는 개체

  • 멀티프로그래밍 환경에서 가상메모리에 여러 프로세스들이 존재

  • P1

    • 최소한 자신의 일부분은 주기억장치에 있으면서도 두 개의 입출력 장치에 대한 제어권을 가지고 수행중
  • P2

    • P2 또한 주기억장치에 존재하지만 P1에게 할당된 입출력 장치를 얻기 위해 기다리면서 블록 상태에 있는 상태를 점선으로 표현
  • Pn

    • 주기억장치로부터 스왑아웃(swap out) 된 상태가 점선으로 표시되어 있으며, 현재는 보류 상태
  • 이렇듯 각각의 프로세스에는 상태가 존재하고, 이러한 상태를 운영체제는 계속해서 모니터링하고 자원들을 관리해야 할 필요성을 가짐

운영체제 제어 구조

  • 운영체제는 각 개체(프로세스)에 대한 정보를 관리하기 위해 개체에 대한 정보를 테이블로 구성해서 유지
  • 테이블의 구조
  • 운영체제가 관리해야 할 서로 다른 4가지 타입의 테이블
    • 메모리
    • 입출력 장치
    • 파일
    • 프로세스
    • 에 대한 정보들은 계속 유지

메모리 테이블

  • 메모리 테이블은 주기억장치(실메모리)와 보조기억장치(가상메모리) 모두의 자취(track) 를 유지하기 위해 사용
  • 메모리 테이블의 정보
    • 프로세스에게 할당된 주기억장치
    • 프로세스에게 할당된 보조기억장치
    • 어떤 프로세스가 특정 공유 메모리 영역에 접근이 가능한 속성 등의 주기억장치/가상메모리 블록들에 대한 보호 속성
    • 가상 메모리를 관리하기 위해 필요한 정보

입출력 테이블

  • 입출력 장치와 컴퓨터 시스템의 채널들을 관리하기 위해 사용
  • 특정 프로세스에 할당되어있는 경우/사용가능한 경우가 있으며 입출력 동작이 진행 중일 때 운영체제는 입출력 동작의 진행 상태와 입출력 전송의 출발지/목적지로 사용되는 주기억장치 내의 위치를 알아야함

파일 테이블

  • 파일의 존재 여부와 보조기억장치에 저장된 파일의 위치, 현재 상태, 그 밖에 다른 속성들에 대한 정보가 저장됨
  • 이러한 정보들은 대부분 파일 관리 시스템에 의해 유지되고 사용된다.

프로세스 테이블

  • 프로세스 관리를 위한 테이블
  • 각 프로세스들은 Hash로 연결된 연결리스트로 되어 있다.
  • 메모리, 입출력, 파일 테이블 모두 프로세스를 위해 관리되는 테이블이기 때문에 프로세스 테이블은 이러한 자원들에 대한 참조가 직간접적으로 이루어져야 함

이러한 테이블들은 그림 상으로는 분리되어 있는 것처럼 보이지만 서로 어떤 식으로든 연결되거나 상호 참조되어야 함

프로세스 제어 구조

  • 운영체제가 임의 프로세스를 관리하고 제어하기 위해 알아야 할 사항 프로세스가 어느 곳에 위치하고 있는지를 알고, 프로세스를 관리하는데 있어 필요한 속성들을 알아야 함

프로세스 제어블록과 이미지

  • 프로세스는 수행될 하나의 프로그램 혹은 여러 프로그램 집합을 가지고 있어야 하며, 그 프로그램과 관련된 전역 및 지역 변수들, 미리 정의된 상수 등에 대한 데이터 위치들의 집합이 있어야 함
  • 이렇게 구성된 프로세스는 프로그램 수행 시 프로시저 호출들의 트랙(track)과 프로시저들 간에 전달되는 매개변수, 호출 주소(복귀 주소) 등을 유지하는데 사용되는 스택이 필요하다.
  • 이러한 속성들을 모두 담아 프로세스를 제어하기 위한 하나의 집합으로 만드는데, 이를 프로세스 제어블록이라고 함
  • 프로그램과 데이터, 스택, 속성들의 집합을 프로세스 이미지라고 함

프로세스 이미지의 일반적인 요소들

  • 사용자 데이터
    • 사용자 공간에서 수정 가능한 부분
    • 프로그램 데이터와 사용자 스택 영역
    • 수정될 수 있는 프로그램
  • 사용자 프로그램
    • 수행 될 프로그램
  • 시스템 스택
    • 각 프로세스는 하나 이상의 시스템 스택을 가짐
    • 스택은 프로시저와 시스템 호출에 필요한 매개변수와 호출 주소(복귀 주소)를 저장하는데 사용
  • 프로세스 제어 블록
    • 프로세스 식별
      • 주 프로세스 테이블에 대한 인덱스 사상(mapping) 기법을 통한 프로세스 테이블 위치 파악
      • 작업에 대해 책임지고 있는 사용자 지시
    • 프로세스 상태 정보
      • 레지스터 집합(프로그램 상태 워드, PSW, Program Status Word)
        • 사용자가 사용 가능한 레지스터
        • 제어 레지스터 및 상태 레지스터
        • 스택 포인터
    • 프로세스 제어 정보
      • 스케줄링과 상태 정보
      • 자료구조화(Data Structuring)
      • 프로세스간 통신(IPC)
      • 프로세스 권한(Process Privileges)
      • 메모리 관리
      • 자원의 소유권과 이용률
      • x86 EFLAGS 레지스터

프로세스 위치

  • 프로세스 이미지의 위치는 어떤 메모리 관리 기법이 사용되는가에 따라서 달라짐.
  • 간단하게는 프로세스 이미지를 메모리(보조기억장치, 디스크 등에서 관리)의 연속된 인접 블록에 위치시키고 운영체제는 프로세스 이미지의 일부를 주기억장치 내에 유지함으로써 프로세스를 관리

프로세스 제어 블록의 역할

  • 프로세스 제어 블록들은 스케줄링, 자원 할당, 인터럽트 처리, 성능 측정과 분석 등에 관련된 모듈들을 포함하여 운영체제의 모든 모듈에 의해 읽혀지고 수정될 수 있음
  • 따라서 프로세스 제어블록의 집합은 운영체제 상태를 정의한다고 말할 수 있음
  • 이러한 설계의 문제점
    • 운영체제 내에 있는 수많은 루틴들은 프로세스 제어블록에 있는 정보들을 접근할 필요가 있기 때문에 각 프로세스의 유일한 ID를 Index로 사용하여 정보들에 접근할 수 있음
    • 하지만 이 과정에서 두 가지 문제점
      1. 인터럽트 핸들러와 같은 단일 루틴에서의 버그가 프로세스 제어블록에 손상을 줄 수 있고 결국 해당 프로세스를 관리하는 시스템 기능이 파괴될 수 있음
      2. 프로세스 제어블록의 구조와 의미(semantics)부분의 설계가 변경되면 수많은 운영체제 모듈이 영향받음

이러한 문제를 해결하는 법은 운영체제의 모든 루틴들에게 핸들러(handler)루틴을 통하도록 요구함으로써 프로세스 제어 블록을 보호할 수 있다.

핸들러 루틴 프로세스 제어블록을 보호하는 것으로 제어블록에 대한 읽고 쓰기 연산을 제어하는 유일한 조정자 역할을 한다.