RangA 2023. 5. 31. 10:51

02. 프로세스 관리

01. 프로세스(Process)

1) 프로세스

  1. 프로세스의 개념
    • 디스크에 존재하는 프로그램 파일이 주기억 장치에 적재되어 CPU에 의해서 실행 과정에 있는 상태
  2. 프로세스의 정의
    • CPU에 의해서 현재 실행되고 있는 프로그램
    • PCB의 존재로서 명시되는 것
      • PCB : 운영체제 내에서 한 프로세스의 존재를 정의하는 것으로, 여러 개의 프로세스를 수행하는 다중 프로그래밍 환경하에서 각 프로세스를 구분하기 위한 프로세서 제어 블록
    • 프로세서(CPU)가 할당되는 개체로서 디스패치가 가능한 단위
      • 디스패치 : 준비 상태에서 대기하고 있는 프로세스 중 하나가 CPU를 할당 받아 실행 상태로 변하는 시점
    • 지정된 결과를 얻기 위한 일련의 계통적 동작
    • 목적 또는 결과에 따라 발생되는 사건들의 과정
    • 비동기적 행위를 일으키는 주체
    • 프로시저과 활동 중인 것
    • 실행 중인 프로시저의 제어 궤적
      • 궤적 : 프로세스가 한 시점만을 의미하는 것이 아닌, 이미 실행했거나 실행할 범위까지도 포함한다는 것
    • CPU가 할당되는 실체

2) 프로세스 상태 전이도

  1. 프로세스 주요 상태
    • 준비(Ready) 상태 : 준비 상태에 있는 여러 프로세스 중 프로세스를 선택하여 CPU에 할당하는 시점
    • 실행(Run) 상태 : 프로세스가 CPU를 차지하고 있음
    • 보류(Block, 대기) 상태 : 처리 속도가 느린 I/O 작업 중인 상태
  2. 상태 전이
    • 디스패치(Dispatch) : 준비 상태에서 대기하고 있는 프로세스 중 하나가 CPU를 할당 받아 실행 상태로 변하는 시점
    • Time run out(할당 시간 종료) : 자신에 할당된 시간만큼 CPU를 사용하고 준비 상태로 변하는 시점
    • I/O 요구 : 프로세스가 CPU를 사용 중에 I/O 행위가 필요하여 보류 상태로 이동하는 시점
    • Wake up : I/O 작업이 완료되어 준비 상태로 이동하는 시점
    • Suspend : 보류 상태에서 운영체제에 의해 일시적으로 벗어나는 상태
    • Resume : Suspended에서 프로세스 활성화 상태로 다시 복귀하는 것
  3. 장치 및 기술
    • 스풀(Spool)
      • 입출력 장치와의 속도 차를 극복하기 위한 장치로 대부분 하드디스크가 중재함
      • 스풀은 영역, 스풀링은 행위 자체, 스풀러(Spooler)는 프로그램
    • 버퍼링(Buffering)
      • CPU와 입출력 장치와의 속도 차를 줄이기 위해 메모리가 중재함
    • 채널(Channel)
      • 입출력만을 담당하는 소형 CPU로 간단한 명령 구조와 레지스터를 가지고 있으며 입출력 장치와 통신하기 위한 간단한 장치로 구성되어 있음
  4. 프로세스의 자원 이용 순서
    1. 요청 : 프로세스는 특정 자원을 사용하기 전에 운영체제에 지원을 요청함
    2. 사용 : 프로세스가 요청한 자원을 운영체제가 할당하면 자원을 사용함
    3. 해제 : 프로세스는 사용한 자원은 다른 프로세스를 위해서 자원 사용을 해제함

3) 인터럽트 처리(Interrupt Processing)

1. 인터럽트 처리

  • 프로세스가 수행 중에 다른 프로세스를 수행하기 위하여 현재 수행 중인 프로세스를 중단하거나 외부 입력 장치에 의해 프로세스가 중단되는 상태
  • 사용자에 의해서 새로운 프로그램이 실행될 때, 현재 실행 중인 프로세스의 상태를 잠시 중단하고, 새로운 프로그램을 실행시키는 과정으로, 잠시 중단한 프로세스의 상태는 다시 실행을 시작하기 위해 중단되었던 시점의 정보를 잠시 저장함
  • 인터럽트는 입출력 연산, 하드웨어 실패, 프로그램 오류 등에 의해서 발생함
  • 인터럽트가 발생한 경우, 진행 중인 프로그램의 재개(Resume)에 필요한 레지스터 문맥(Register Context)을 저장함

2. 인터럽트 처리를 위한 작업 순서

  1. 인터럽트가 발생하면 운영체제가 제어권을 받음
  2. 운영체제는 인터럽트가 걸린 현재의 프로세스 상태를 저장함
  3. 운영체제는 인터럽트의 발생 원인을 찾아 저장되어있는 루틴으로 제어권을 넘겨줌
  4. 인터럽트 처리 루틴이 인터럽트를 처리함
  5. 인터럽트가 걸렸던 이전 프로세스의 상태로 복구됨
  6. 인터럽트가 걸렸던 시점 이후부터 프로세스가 실행됨

3. 인터럽트의 종류

  • SVC(SuperVisor Call) 인터럽트
    • 프로세스 관리 호출, 기억 장치 할당 루틴 호출, 입출력 수행 루틴 호출 시에 발생하는 인터럽트로 사용자가 새로운 프로그램을 실행할 때 발생함
    • 새로운 프로그램을 실행하는 것은 사용자와 운영체제가 정보 교환을 하므로 오퍼레이터와의 대화 시에 발생하는 인터럽트라고도 함
  • 입출력(I/O) 인터럽트
    • 하드웨어적 인터럽트로 프린트나 디스크 저장 시에 입출력 채널 확인, 준비, 할당, 완료 시에 발생함
  • 외부(Extern) 인터럽트
    • 여러 개의 프로세스가 운영되는 다중 프로그래밍 기법에서 임의의 프로세스는 CPU를 사용하기 위한 일정한 시간 간격이 있는데, 이를 시간 할당량이라고 함
    • 임의의 프로세스는 운영체제에 의해서 시간 할당량이 확인되며, 운영체제가 관리하는 인터럽트 시계(타이머)에 의해서 해당 프로세스가 종료되는데, 이때 발생하는 인터럽트가 외부 인터럽트
  • 재시작(Restart) 인터럽트
    • 사용자가 Ctrl + Alt + Del 키를 입력하거나 Reset 버튼을 이용하여 시스템을 재부팅하는 경우에 발생함
  • 프로그램 검사(Program Check) 인터럽트
    • 실행 중인 프로그램에서 오버플로우, 언더플로우, 분모가 0인 나눗셈을 처리하는 경우 발생함
  • 기계 검사(Machine Check) 인터럽트
    • 컴퓨터 시스템의 고장으로 발생함

4. 인터럽트의 특징

  • 컴퓨터 시스템에 비상사태가 발생할 때 그 처리를 위해서 인터럽트가 필요함
  • 프로그램의 착오는 하드웨어의 기능에 의해 정해진 인터럽트 처리 루틴에 따라 복구되어야 함
  • 인터럽트가 발생되면 CPU는 현재 실행 중인 명령을 마친 후 CPU의 상태를 보관함
    • 상태를 보관 : 인터럽트가 발생하면 현재 작업 중이던 상태를 저장해야 나중에 복귀했을 때 이어서 처리할 수 있음
  • 연산 오류가 발생할 경우에 인터럽트가 발생함
  • 메모리 보호 구역에 접근을 시도하는 경우에 인터럽트가 발생함
  • 입출력이 완료되었을 때 인터럽트가 발생함
  • 인터럽트 요구를 처리하는 서비스 프로그램의 시작 주소는 다음 수행할 명령어의 번지를 기억하고 있는 레지스터인 프로그램 계수기(PC)에 기억시킴

5. 인터럽트 동기

  • 동기 인터럽트(Synchronous Interrupt)
    • 명령어 실행 중 CPU에 의해 처리되는 인터럽트로 하나의 명령어가 종료된 후 인터럽트가 발생함
    • 프로세스가 실행 중에 0으로 나누기를 할 때 발생하는 인터럽트, 프로세스 내 명령어 실행 때문에 발생하는 인터럽트, 프로세스 내 명령어가 보호 메모리 영역을 참조할 때 발생하는 인터럽트 등을 말함
  • 비동기 인터럽트(Asynchronous Interrupt)
    • 다른 하드웨어 장치가 CPU 클럭 시그널과 상관없이 생성하는 인터럽트
    • 키보드 혹은 마우스를 사용할 때 발생하는 것과 같은 인터럽트를 말함

6. 트랩(Trap)

  • 프로세스가 특정 시스템 기능을 사용하려고 할 때 그 기능을 운영체제에 요청하는 방법
  • 인터럽트 중에 소프트웨어적 인터럽트를 트랩이라고 할 수 있음
  • 인터럽트나 트랩이 발생하면 프로그램 카운터(PC)를 정해진 특정 번지로 변경하여 정해진 처리 루틴을 수행하게 함

4) PCB(Process Control Block)

1. PCB 정의

  • PCB는 운영체제 내에서 한 프로세스의 존재를 정의함
  • 여러 개의 프로세스를 수행하는 다중 프로그래밍 환경 하에서 각 프로세스를 구분하기 위한 프로세스 제어 블록
  • PCB 테이블은 프로세스들의 현재 상태를 기록한 정보 테이블이며 각 프로세스의 주기억 장치에 적재된 기억 장치 위치 혹은 포인터와 식별자 등이 PCB 항목에 기록됨

2. PCB 항목

  1. 프로세스 식별자
  2. 프로세스 현재 상태
  3. 프로그램 카운터(계수기)
  4. 프로세스 우선순위
  5. 프로세스가 적재된 기억 장치 부분을 가리키는 포인터
  6. 프로세스에 할당된 자원을 가리키는 포인터
  7. 중앙 처리 장치 레지스터 정보
  8. CPU의 각종 레지스터 상태를 가리키는 포인터
  9. 계정 정보(시간 할당량)
  10. 기억 장치 관리 정보
  11. 입출력 정보
  12. 부모 프로세스를 가리키는 포인터
  13. 자식 프로세스를 가리키는 포인터

3. 프로세스 생성 과정

  • 새로운 프로세스를 위한 프로세스 식별자를 할당함
  • 새로운 프로세스를 위한 주소 공간과 프로세스 제어 블록(PCB)을 할당함
  • 새로운 프로세스의 프로세스 제어 블록을 초기화함
  • 새로운 프로세스를 스케줄링 큐의 준비 또는 준비/보류 리스트에 연결함

5) 문맥 교환(Context Switching)

  1. 문맥 교환의 정의
    • 다중 프로그래밍 시스템에서 운영체제에 의하여 CPU가 할당되는 프로세스를 변경하기 위하여 현재 CPU를 사용하여 실행되고 있는 프로세스의 상태 정보를 저장하고, 앞으로 실행될 프로세스의 상태 정보를 설정한 다음에 CPU를 할당하여 실행하도록 하는 작업
    • 인터럽트가 발생한 경우, 진행 중인 프로그램의 재개에 필요한 레지스터 문맥을 저장함
  2. 시간 할당량 크기에 따른 문맥 교환수, 인터럽트 횟수, 오버헤드
    • 여러 개의 프로세스가 CPU를 차지하는 시간 길이를 시간 할당량이라고 함
    • 시간 할당량이 적으면 적을수록 여러 개의 프로세스가 동시에 수행되는 느낌이 들 수 있지만 그에 따른 문맥 교환수, 인터럽트 횟수, 오버헤드는 증가함
  시간 할당량     문맥 교환수     인터럽트 횟수     오버헤드  
  작음     증가함     증가함     증가함  
  큼     감소함     감소함     감소함