[운영체제] 프로세스
Updated: Categories: CS프로세스에 대해 알아보자
정의
- 실행중인 상태의 프로그램을 뜻한다.
- 스케줄링의 대상이 되는 task임
- 프로세스 내부에는 최소 하나의 스레드가 존재함
- 하드디스크의 프로그램 실행 -> 메모리 할당 -> 바이너리 코드 업로드 -> 프로세스 전환
구조
text
: 컴파일된 일반 코드가 존재하는 영역data
: 전역 변수나 초기화된 데이터가 존재하는 영역stack
: 매개변수 지역변수 리턴 값 저장. 컴파일시 크기 결정heap
: 동적 메모리를 할당 및 해제할 수 있는 영역. 런타임시 크기 결정
프로세스 상태
생성
(new) : 프로세스가 생성된 상태준비
(ready) : 자원을 할당받기 위해 기다리는 상태실행
(running) : 자원을 할당 받아 프로세스가 실행되고 있는 상태 (kernel mode)대기
(wait/blocked) : 이벤트 및 I/O가 발생하여 완료될때까지 대기하는 상태종료
(terminated) : 프로세스 종료됨
상태 전이
new -> ready
: 프로세스가 생성됨과 동시에 ready 상태에서 자원할당을 기다림ready -> running
: 스케줄러가 ready 상태의 프로세스 하나를 골라(우선순위에 따라) 실행상태로 변경running -> ready
: ready 큐에 우선순위가 높은 프로세스가 들어오면 기존 running 프로세스를 ready로 변경.running -> blocked
: 프로세스 실행 중 이벤트 및 I/O가 발생될때 변경. 이 때 ready 프로세스 하나를 실행시킴 (문맥교환 발생)blocked -> ready
: 이벤트가 완료된 프로세스는 ready 상태로 변경.
프로세스 제어 블록
정의
- PCB (Process Control Block)
- 커널 주소 공간의 data 영역에 존재하는 프로세스 정보 저장/관리용 자료구조
- 프로세스가 생성될때마다 해당 프로세스 고유의 PCB가 생성되고, 프로세스 종료시 삭제됨
역할
- 프로세스 스케줄링을 위해 데이터베이스를 관리
- 만약 running -> ready (interupt) 상황에서 프로세스가 진행하던 작업을 저장해놓지 않는다면 다시 running 상태가 되었을 때 이전에 작업했던 내용은 모두 사라지게 됨
- 따라서 running 상태의 프로세스는 작업을 수행하며 작업 진행상황(문맥,Context)을 PCB에 저장한다.
구조
- PCB에는 프로세스의 여러 정보를 저장하고 있음
- 운영체제는 PCB에 빠르게 접근하기 위해 프로세스 테이블을 사용한다
문맥 교환
- Context Switching
- CPU의 제어권이 다른 프로세스로 이양되는 과정을 뜻함
- running 상태의 프로세스가 blocked 상태로 변경되면서, ready 큐의 프로세스가 CPU를 할당받을때 발생함.
- 시스템 콜이나 인터럽트로 인한 CPU 할당 변경은 문맥교환 아님!