[OS] 프로세스 관리

Choi Rim·2021년 5월 27일
0

Way to developer

목록 보기
1/21
post-thumbnail

프로그램(Program) vs 프로세스(Process)

프로그램과 프로세스의 차이가 무엇일까요? 간단하게 프로그램은 컴퓨터 시스템에 실행 요청 전의 상태를 의미하며 프로세스는 실행 중인 프로그램을 의미합니다

프로세스(Process)의 정의 🔧

프로세스는 실행 중인 프로그램을 의미한다고 했습니다. 여기서 실행 중인 프로그램이란 시스템(커널)에 등록되고 커널의 관리하에 있는 작업을 뜻합니다. 또한 프로세스는 각종 자원들을 요청하고 할당받을 수 있는 개체이며 프로세스 관리 블록(PCB)를 할당받은 개체입니다.

자원

자원이란 커널의 관리 하에 프로세스에게 할당, 반납 되는 수동적인 개체입니다. 자원의 분류는 하드웨어 자원과 소프트웨어 자원으로 나뉘는데 하드웨어 자원은 메모리, 디스크, 모니터, 키보드 등이 있고 소프트웨어 자원은 메세지, 파일 등이 있습니다.

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

작업 제어 블록(Task Control Block, TCB), 작업 구조라고도 하는 프로세스 제어 블록은 운영체제가 프로세스 스케줄링을 위해 프로세스에 관한 모든 정보를 가지고 있는 데이터 베이스를 의미합니다. 프로레스 제어 블록은 커널안에 저장되어 있습니다. 운영체제에서 프로세스는 PCB로 나타내어지며 PCB는 프로세스에 대한 중요한 정보를 가지고 있는 자료입니다. 각 프로세스가 생성될 때마다 고유한 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거됩니다. 정리하면, PCB는 운영체제가 프로세스 관리에 필요한 정보가 저장되어 있는 모임이라고 할 수 있습니다.

PCB가 관리하는 정보

(1) 포인터(Pointer) : 부모프로세스에 대한 포인터, 자식 프로세스에 대한 포인터, 프로세스가 위치한 메모리 주소에 대한 포인터, 할당된 자원에 대한 포인터 정보 등.

(2) 프로세스 상태(Process State) : 생성(create), 준비(ready), 실행 (running), 대기(waiting), 완료(terminated) 상태가 존재함

(3) 프로세스 식별자(Process number(ID)) : 프로세스의 고유 식별 번호

(3) 프로그램 계수기(Program Counter) : 프로그램 계수기는 이 프로세스가 다음에 실행할 명령어의 주소를 가리킵니다.

(4) CPU 레지스터 및 일반 레지스터(Register)

  • 레지스터(Register) : cpu옆에 붙어있는 기억장치이며 cpu가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치이다. 메모리보다 속도가 빠르다.

(5) 기타 정보들 : 메모리 관리 정보, 입출력 관리 정보 등

PCB 정보는 OS 별로 서로 다르며, PCB 참조 및 갱신 속도는 OS의 성능을 결정짓는 중요한 요소 중 하나입니다.

프로세스의 상태

출처 - https://youtu.be/jZuTw2tRT7w이미지 출처 - https://youtu.be/jZuTw2tRT7w

1. Created State

  • 작업(Job)을 커널에 등록
  • PCB 할당 및 프로세스 생성 - created
  • 쓸 수 있는 메모리 공간 체크 및 프로세스 상태 전이 - Ready (메모리 공간 있을 때) or suspended ready(메모리 공간 없을 때)

2. Ready State

  • 프로세서(CPU) 할당 대기 상태 - ready
  • 즉시 실행 가능 상태

3. Running State

  • 프로세서와 필요한 자원을 모두 할당 받은 상태
    • Preemption
      Running State에서 Ready State로 돌아가는 것
    • block/sleep
      Running State에서 Asleep State로 가는 것
      , I/O 등 자원 할당 요청

4. Blocked / Asleep State

  • 프로세서외에 다른 자원을 기다리는 상태
    • Wake - up
      Asleep State 에서 Ready State로 가는 , asleep 상태에서 data 대기 후 data를 받았을 때 ready 상태에서 기다리게 됨

5. Suspended State

  • 메모리를 할당 받지 못한(빼앗긴) 상태
    • 커널 또는 사용자에 의해 발생
    • Swap-out(suspended)

6. Terminated / Zombie State

  • 프로세스 수행이 끝난 상태
  • 모든 자원 반납 후 커널 내에 일부 PCB 정보만 남아 있는 상태

이미지 출처 - https://youtu.be/jZuTw2tRT7w

인터럽트(Interrupt)란

인터럽트란 CPU가 프로그램을 실행 하고 있을 때, 예기치 못한 외부에서 발생한 이벤트가 발생할 경우 그것을 CPU에게 알려 현재 작업을 중단하고 발생한 이벤트를 처리한 후 실행 중인 작업으로 복귀하는 것을 말합니다.

인터럽트의 종류

  • I/O Interrupt : 예상치 못한 입출력 명령 들어올 시, 입출력 데이터에 이상 있는 경우.
  • Clock Interrupt : 운영체제가 지정한 시간 동안만 프로세스가 CPU를 점유하도록 하는 인터럽트. 프로세스가 CPU를 계속 독점하는 일을 막기 위함.
  • Console Interrupt : 시스템 관리자가 콘솔 터미널에서 Interrupt Key 누를 때 발생.
  • Program Interrupt : 프로그램 실행 중 오류.
  • Machine Interrupt : 하드웨어, CPU의 기능적 오류.
  • Inter-process Interrupt : 임의의 프로세스가 지역 호스트 및 원격 호스트의 다른 프로세스로부터 통신 메시지를 받을 경우에 발생.
  • System Call Interrupt : 실행 중인 프로세스가 입출력 등을 위한 시스템 호출을 하였을 때 발생한다. 이와 같은 시스템 호출의 경우에 대해서는 Interrupt로 보지 않는 경우도 있음.

인터럽트 처리 과정

(1) 프로세스 실행
(2) 인터럽트 발생
(3) 인터럽트 처리(Interrupt handling)
(4) 인터럽트 발생 장소, 원인 파악
(5) 인터럽트 서비스 할 것인지 결정
(6) 인터럽트 서비스 루틴(interrupt service routine) 호출

  • 인터럽트 서비스 루틴(interrupt service routine)
    인터럽트 접수에 의해 발생되는 인터럽트에 대응하여 특정 기능을 처리하는 기계어 코드 루틴

<참고>

profile
https://rimi0108.github.io/

0개의 댓글