Chapter 10
프로세스와 스레드
10-1. 프로세스 개요
프로세스
'실행 중인 프로그램'을 말한다.
사용자가 볼 수 있는 공간에서 실행되는 포그라운드 프로세스와 보이지 않는 공간에서 실행되는 백그라운드 프로세스가 있다.
프로세스 제어 블록
모든 프로세스는 실행을 위해 CPU가 필요하지만 CPU 자원은 한정되어 있어 차례대로 돌아가며 한정된 시간만큼 CPU를 이용한다. 운영체제는 빠르게 번갈아 수행되는 프로세스의 실행 순서를 관리하고, 프로세스에 CPU를 비롯한 자원을 배분한다. 이를 위해 운영체제는 프로세스 제어 블록(PCB)을 이용한다.
프로세스 ID
특정 프로세스를 식별하기 위해 부여하는 고유한 번호이다.
레지스터 값
해당 프로세스가 실행하며 사용했던 프로그램 카운터를 비롯한 레지스터 값들이 담긴다.
프로세스 상태
현재 프로세스의 상태를 PCB에 기록한다.
CPU 스케쥴링 정보
프로세스가 언제, 어떤 순서로 CPU를 할당받을지에 대한 정보를 PCB에 기록한다.
메모리 관리 정보
프로세스마다 메모리에 저장된 위치가 달라 PCB에는 프로세스가 어느 주소에 저장되어 있는지에 대한 정보가 있어야 한다.
사용한 파일과 입출력장치 목록
프로세스가 실행 과정에서 특정 입출력장치나 파일을 사용하면 PCB에 해당 내용이 명시된다.
문맥 교환
중간 정보, 즉 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보를 문맥이라고 한다. 기존 프로세스의 문맥을 PCB에 백업하고 새로운 프로세스를 실행하는 것을 문맥 교환이라고 한다.
프로세스의 메모리 영역
프로세스가 생성되면 커널 영역에 PCB가 생성된다. 하나의 프로세스는 사용자 영역에 크게 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어 저장된다.
코드 영역(텍스트 영역)
기계어로 이루어진 명령어가 저장된다. 코드 영역에는 데이터가 아닌 CPU가 실행할 명령어가 담겨 있기 때문에 쓰기가 금지되어 있다.
데이터 영역
실행되는 동안 유지할 데이터가 저장되는 공간이다. 프로그램이 실행되는 동안 유지되며, 프로그램 전체에서 접근할 수 있는 변수인 전역 변수를 사용한다. 코드 영역과 데이터 영역은 '크기가 고정된 영역'으로 정적 할당 영역이다. 힙 영역과 스택 영역은 프로세스 실행 과정에서 크기가 변할 수 있는 영역으로 동적 할당 영역이다.
힙 영역
프로그래머가 직접 할당 할 수 있는 저장 공간이다. 프로그래밍 과정에서 힙 영역에 메모리 공간을 할당했다면 언젠가는 해당 공간을 반환해야한다. 메모리 공간을 변환하지 않는다면 할당한 공간은 메모리 내에 계속 남아 메모리 낭비를 초래한다. 이를 메모리 누수라고 한다.
스택 영역
데이터를 일시적으로 저장되는 공간이다. 데이터 영역에 담기는 값과는 달리 잠깐 쓰다가 말 값들이 저장되는 공간이다. 일시적으로 저장할 데이터는 스택 영역에 PUSH되고, 더 이상 필요하지 않은 데이터는 POP됨으로써 스택 영역에서 사라진다.
힙 영역과 스택 영역은 실시간으로 그 크기가 변할 수 있기 때문에 동적 할당 영역이라고 부른다.
10-2. 프로세스 상태와 계층 구조
프로세스 상태
생성 상태 - 프로세스를 생성중인 상태
준비 상태 - 당장이라도 CPU를 할당받아 실행할 수 있지만 아직 차례가 아니라 기다리고 있는 상태
실행 상태 - CPU를 할당받아 실행 중인 상태
대기 상태 - 입출력장치의 작업을 기다리는 상태
종료 상태 - 프로세스가 종료된 상태
프로세스 상태
프로세스는 실행 도중 시스템 호출을 통해 다른 프로세스를 생성할 수 있다. 이때 새 프로세스를 생성한 프로세스를 부모 프로세스, 부모 프로세스에 의해 생성된 프로세스를 자식 프로세스라고 한다. 부모 프로세스와 자식 프로세스는 엄연히 다른 프로세스이기에 각기 다른 PID를 가진다. 일부 운영체제에서는 자식 프로세스의 PCB에 부모 프로세스의 PID인 PPID가 기록된다.
📌확인문제
1. 다음은 프로세스 상태를 보여주는 프로세스 상태 다이어그램이다. ①부터 ⑤까지 올바른 상태를 적어보시오.
2. 프로세스 상태에 대한 설명으로 옳은 것을 고르세요.
① 생성 상태는 프로세스가 입출력 장치의 작업을 기다리는 상태이다.
② 실행 상태는 프로세스가 종료되는 상태이다.
③ 종료 상태는 프로세스가 이제 막 생성된 상태이다.
④ 준비 상태는 CPU를 할당받기를 기다리고 있는 상태이다.
❗정답❗
1. ① 생성 상태
② 준비 상태
③ 실행 상태
④ 종료 상태
⑤ 대기 상태
2. ④
해설
① - 생성 상태는 프로세스를 생성 중인 상태
② - 실행 상태는 CPU를 할당받아 실행 중인 상태
③ - 종료 상태는 프로세스가 종료된 상태
'System > 운영체제' 카테고리의 다른 글
[혼공컴운] Ch 14 가상 메모리 (0) | 2025.02.24 |
---|---|
[혼공컴운] Ch 12 프로세스 동기화 (0) | 2025.02.17 |