프로그램과 프로세스의 차이가 무엇일까요? 간단하게 프로그램은 컴퓨터 시스템에 실행 요청 전의 상태를 의미하며 프로세스는 실행 중인 프로그램을 의미합니다
프로세스는 실행 중인 프로그램을 의미한다고 했습니다. 여기서 실행 중인 프로그램이란 시스템(커널)에 등록되고 커널의 관리하에 있는 작업을 뜻합니다. 또한 프로세스는 각종 자원들을 요청하고 할당받을 수 있는 개체이며 프로세스 관리 블록(PCB)를 할당받은 개체입니다.
자원이란 커널의 관리 하에 프로세스에게 할당, 반납 되는 수동적인 개체입니다. 자원의 분류는 하드웨어 자원과 소프트웨어 자원으로 나뉘는데 하드웨어 자원은 메모리, 디스크, 모니터, 키보드 등이 있고 소프트웨어 자원은 메세지, 파일 등이 있습니다.
작업 제어 블록(Task Control Block, TCB), 작업 구조라고도 하는 프로세스 제어 블록은 운영체제가 프로세스 스케줄링을 위해 프로세스에 관한 모든 정보를 가지고 있는 데이터 베이스를 의미합니다. 프로레스 제어 블록은 커널안에 저장되어 있습니다. 운영체제에서 프로세스는 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)
(5) 기타 정보들 : 메모리 관리 정보, 입출력 관리 정보 등
PCB 정보는 OS 별로 서로 다르며, PCB 참조 및 갱신 속도는 OS의 성능을 결정짓는 중요한 요소 중 하나입니다.
이미지 출처 - https://youtu.be/jZuTw2tRT7w
1. Created State
2. Ready State
3. Running State
4. Blocked / Asleep State
5. Suspended State
6. Terminated / Zombie State
이미지 출처 - https://youtu.be/jZuTw2tRT7w
인터럽트란 CPU가 프로그램을 실행 하고 있을 때, 예기치 못한 외부에서 발생한 이벤트가 발생할 경우 그것을 CPU에게 알려 현재 작업을 중단하고 발생한 이벤트를 처리한 후 실행 중인 작업으로 복귀하는 것을 말합니다.
(1) 프로세스 실행
(2) 인터럽트 발생
(3) 인터럽트 처리(Interrupt handling)
(4) 인터럽트 발생 장소, 원인 파악
(5) 인터럽트 서비스 할 것인지 결정
(6) 인터럽트 서비스 루틴(interrupt service routine) 호출
<참고>