PPID (부모 프로세스) - 선행 프로세스라고도 하며, 자식 프로세스 생성 가능 - fork() 호출을 통해 자식 프로세스 생성 - 부모 프로세스는 여러 개의 자식 프로세스를 실행하여 다수의 작은 작업들을 동시에 처리
자식 프로세스 - 부모 프로세스가 처리 중인 파일 등을 공유 - 부모 프로세스에서 fort()하여 생긴 프로세스 - 프로그램에서는 부모 프로세스의 복사로 부모와 교신하면서 프로세스 진행
init - 부팅되면서 가장 먼저 실행되는 프로세스는 init, init의 PID는 1 - init 프로세스는 파일 시스템의 구조 검사 - 파일 시스템의 마운트하고 서버 데몬을 실행하며, 사용자 로그인을 기다리고 사용자를 위한 셸을 실행하는 역할 - /etc/initab : 처음 수행해야할 작업들을 설정하는 파일, 시스템의 상태에 따라 해당하는 런레벨에서 init 프로세스가 수행해야할 파일을 지정
2.2 프로세스 관련 명령어
ps 명령어 : 현재 작동하는 프로세스 목록, 프로세스의 현재 상태 출력
kill 명령어 : 현재 작동하는 프로세스 종료
top 명령어 : 실시간 프로세스 모니터링
2.3. 프로세스 상태
프로세스의 상태 종류 : 생성, 준비, 실행, 대기, 종료
new : 프로세스가 생성된 상태
ready : 프로세스가 생성된 후 프로세서에 할당되기를 기다리는 상태
running : 프로세서에 할당되어 CPU를 차지하고 있는 상태
wait : 프로세스가 특정 이벤트를 기다리는 상태 → 프로세서에 할당되어 있지만 프로세서의 클락을 낮추거나 일시적으로 멈춤으로써 에너지 소비를 줄일 수 있는 상태
terminated : 프로세스 종료된 상태
프로세스의 상태 전이
Dispatch (ready -> running)
여러 프로세스들 중 한 프로세스를 선정하여 CPU에 할당하는 과정
Interrupt (running -> ready)
할당된 CPU 시간이 지나면 Timeout Interrupt 가 발생하여 CPU를 다른 프로세스에게 양도하고 자신은 ready 상태로 전이되는 과정
Block (running -> waiting)
I/O 등의 자원 요청 후 즉시 할당받을 수 없어, 할당받을 때까지 기다리기 위해 running에서 waiting 상태로 전이되는 과정
I/O 처리는 CPU가 아닌 I/O 프로세스가 담당하기 때문에 block이 발생함
Wakeup (waiting -> ready)
필요한 자원이 할당되면 프로세스는 waiting에서 ready 상태로 전이되는 과정
2.4. 프로세스의 구성
2.4.1. 프로세스 메모리
운영체제는 프로세스마다 고유의 가상 메모리 공간 제공
프로세스 메모리 공간은 다시 코드, 데이터, 스택, 힙 영역으로 세분화
text section instruction(text section) - 컴파일된 기계어가 저장되는 영역 - compile time에 크기 결정
data section - 사전에 선언된 데이터가 저장되는 영역 - compile time에 크기 결정 - 내부 data&bbs 영역으로 구분 •initalized data section → 초기화된 전역 변수가 저장되는 영역 (DATA) •uninitialized data section→ 초기화되지 않은 전역 변수가 저장되는 영역 (BBS)
heap - new, delete, malloc, free 등을 호출하여 데이터를 저장 & 관리하는 영역 - runtime에 크기가 결정
stack - 매개변수, 지역변수, return 주소 등과 같은 데이터를 저장하는 영역 - 컴파일러에 의해 run time 도중 크기가 결정되며, 함수가 호출 & 종료되는 시점에 생성 & 제거
2.4.2. PCB (Process Control Block)
PCB는 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는, 운영체제 커널의 자료구조
운영체제가 프로세스 스케줄링을 위해 프로세스에 관한 모든 정보를 가지고 있는 데이터베이스
운영체제에서 프로세스는 PCB로 나타냄
PCB는 프로세스에 대한 중요한 정보를 가지고 있는 자료 구조
각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거됨
프로세스는 CPU를 점유하여 작업을 처리하다가도 상태가 전이되면, 진행하던 작업 내용들을 모두 정리하고 CPU를 반환 필요
진행하던 작업들을 모두 저장하지 않으면 다음에 자신의 순서가 왔을 때 어떠한 작업을 해야하는지 알 수 없는 상태에 빠짐
프로세스는 CPU가 처리하던 작업의 내용들을 자신의 PCB에 저장하고, 다음에 다시 CPU를 점유하여 작업을 수행해야 할 때 PCB로부터 해당 정보들을 CPU에 넘겨와서 계속해서 하던 작업을 진행할 수 있음
PCB는 다른 프로세스들이 쉽게 접근할 수 없고, kernel 영역에 저장
PCB 저장 정보 : process state, PID, PPID, CPU registers, program counter, CPU scheduling 정보, Memory 관리 정보, accounting 정보, I/O 상태 정보