[정보처리기사 필기] 응용 SW 기초 기술 활용 - 117. 프로세스의 개요

1. 프로세스 Process의 정의

  • 작업 Job, 태스크 Task
  • 일반적으로 프로세서(처리기, CPU)에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 실행 중인 프로그램
  • 프로세스의 정의 
    • PCB를 가진 프로그램
    • 실기억장치에 저장된 프로그램
    • 프로세서가 할당되는 실체, 디스패치가 가능한 단위
    • 프로시저가 활동중인 것
      • 프로시저 : 한 프로그램은 여러 개의 작은 프로그램으로 분할될 수 있는데, 이 때 분할된 작은 프로그램을 의미, 부프로그램
    • 비동기적 행위를 일으키는 주체
      • 비동기적 행위 : 다수의 프로세스가 서로 규칙적이거나 연속적이지 않고 독립적으로 실행되는 것
    • 지정된 결과를 얻기 위한 일련의 계통적 동작
    • 목적 또는 결과에 따라 발생되는 사건들의 과정
    • 운영체제가 관리하는 실행 단

2. PCB Process Control Block (프로세스 제어 블록)

  • Task Control Block, Job Control Block
  • 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 곳
  • 각 프로세스가 생성될 때마다 고유의 PCB가 생성되고 프로세스가 완료되면 PCB는 제거됨
  • PCB에 저장되어 있는 정보
    • 프로세스의 현재 상태 : 준비, 대기, 실행 등의 프로세스 상태
    • 포인터
      • 부모 프로세스에 대한 포인터 : 부모 프로세스의 주소 기억
      • 자식 프로세스에 대한 포인터 : 자식 프로세스의 주소 기억
      • 프로세스가 위치한 메모리에 대한 포인터 : 현재 프로세스가 위치한 주소 기억
      • 할당된 자원에 대한 포인터 : 프로세스에 할당된 각 자원에 대한 주소 기억
    • 프로세스 고유 식별자 : 프로세스를 구분할 수 있는 고유의 번호
    • 스케줄링 및 프로세스의 우선순위 : 스케줄링 정보 및 프로세스가 실행될 우선순위
    • CPU 레지스터 정보 : Accumulator(누산기, 인덱스 레지스터, 범용 레지스터, 프로그램 카운터 등에 대한 정보
    • 주기억장치 관리 정보 : 기준 레지스터 Base Register, 페이지 테이블 Page Table에 대한 정보
      • 기준 레지스터 : 주기억장치가 분할된 영역으로 나뉘어 관리될 때, 프로그램이 한 영역에서 다른 영역으로 옮겨지더라도 명령의 주소 부분을 바꾸지 않고 정상적으로 수행될 수 있도록 하기 위한 레지스터
      • 페이지 테이블 : 페이징 기법에서 주소 변환을 위해 페이지가 존재하는 주기억장치의 위치 정보를 가지고 있는 테이블을 의미
    • 입출력 상태 정보 : 입출력장치, 개방된 파일 목록
    • 계정 정보 : CPU 사용 시간, 실제 사용 시간, 한정된 시간

3. 프로세스 상태 전이

  • 제출 Submit : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
  • 접수 Hold : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태
  • 준비 Ready
    • 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
    • 프로세스는 준비상태 큐에서 실행을 준비하고 있음
      • 준비상태 큐 : 여러 프로세스가 프로세서를 할당받기 위해 기다리는 장소
    • 접수상태에서 준비 상태로의 전이는 Job 스케줄러에 의해 수행
  • 실행 Run
    • 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
    • 프로세스 수행이 완료되기 전에 프로세스에게 주어진 프로세서 할당 시간이 종료되면 프로세스는 준비 상태로 전이
    • 실행 중인 프로세스에 입출력(I/O) 처리가 필요하면 실행중인 프로세스는 대기 상태로 전이됨
    • 준비 상태에서 실행 상태로의 전이는 CPU(프로세서) 스케줄러에 의해 수행됨
  • 대기 Wait, 보류, 블록 Block
    • 프로세스에 입출력 처리가 필요하면 현재 실행중인 프로세스가 중단됨
    • 입출력 처리가 완료될 때까지 대기하고 있는 상태
  • 종료 Terminated, Exit : 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태

4. 프로세스 상태 전이 관련 용어

  • Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정
  • Wack Up : 입출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이 되는 과정
  • Spooling : 입출력장치의 공유 및 상대적으로 느린 입출력장치의 처리 속도를 보오나하고 다중 프로그래밍 시스템의 성능을 향상시키기 위해 입출력할 데이터를 직접 입출력장치에 보내지 않고 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정
  • 교통량 제어기 Traffic Controller : 프로세스의 상태에 대한 조사와 통보를 담당

5. 스레드 Thread

  • 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위
  • 스레드의 종류
    • 단일 스레드 : 하나의 프로세스에 하나의 스레드에 존재하는 경우
    • 다중 스레드 : 하나 이상의 스레드가 존재하는 경우
  • 정량 프로세스 : 프로세스의 일부 특성을 갖고 있으므로 붙여진 이름
  • 스레드 기반 시스템에서 스레드는 독립적인 스케줄링의 최소 단위로서 프로세스의 역할을 담당
  • 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능
  • 스레드의 분류
    • 사용자 수준의 스레드
      • 사용자가 만든 라이브러리를 사용하여 스레드를 운용
      • 커널 모드로의 전환이 없어 오버헤드가 줄어듬
      • 속도는 빠르지만 구현이 어려움
    • 커널 수준의 스레드
      • 운영체제의 커널에 의해 스레드를 운용
      • 한 프로세스가 운영체제를 호출할 때 전체 프로세스가 대기하지 않으므로 시스템의 성능을 높일 수 있음
      • 여러 스레드가 커널에 동시에 접근할 수 있음
      • 스레드의 독립적인 스케줄링이 가능
      • 구현이 쉽지만 속도가 느림
  • 스레드 사용의 장점
    • 하나의 프로세스를 여러 개의 스레드로 생성하여 병행성을 증진시킬 수 있음
    • 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬 수 있음
    • 응용 프로그램의 응답 시간 Response Time 을 단축시킬 수 있음
    • 실행 환경을 공유시켜 기억장소의 낭비가 줄어듦
    • 프로세스들 간의 통신이 향상됨
    • 스레드는 공통적으로 접근 가능한 기억장치를 통해 효율적으로 통신