03|프로세스 관리와 교착상태

글 요약

사무자동화산업기사 – 프로세스와 PCB, 상태 전이, 스레드·동기화 기법과 교착상태의 발생 조건 및 예방·회피·발견·회복 방법을 정리합니다.

프로세스는 저장장치에 존재하는 프로그램이 실행되면서 운영체제로부터 CPU 시간, 메모리와 입출력 자원 등을 할당받은 실행 단위입니다. 운영체제는 여러 프로세스의 상태와 우선순위를 관리하고, 제한된 자원을 적절히 배분하여 작업이 안정적으로 진행되도록 합니다.

이 장에서는 프로세스와 프로세스 제어 블록의 개념, 프로세스 상태 전이, 스레드와 병행 프로세스, 임계 영역과 동기화 기법을 정리합니다. 이어서 여러 프로세스가 서로의 자원을 기다리며 진행하지 못하는 교착상태의 발생 조건과 해결 방법을 살펴봅니다.

이 장의 핵심 내용

  • 프로세스는 실행 중인 프로그램의 인스턴스이며 운영체제의 자원 할당과 스케줄링 대상입니다.
  • 운영체제는 프로세스 제어 블록에 프로세스 상태, 식별자, CPU 레지스터와 자원 정보를 저장합니다.
  • 프로세스는 생성·준비·실행·대기·종료 상태 사이를 이동합니다.
  • 스레드는 프로세스 내부의 실행 흐름이며 같은 프로세스의 자원을 다른 스레드와 공유합니다.
  • 병행 프로세스가 공유 자원에 동시에 접근하면 경쟁 상태가 발생할 수 있으므로 임계 영역을 보호해야 합니다.
  • 상호배제, 세마포어와 모니터는 프로세스 또는 스레드의 실행 순서와 공유 자원 접근을 제어하는 동기화 기법입니다.
  • 교착상태는 상호배제·점유 대기·비선점·환형 대기 조건이 동시에 성립할 때 발생할 수 있습니다.
  • 교착상태는 예방·회피·발견·회복의 관점에서 처리할 수 있습니다.

프로세스란 무엇인가?

프로세스(Process)는 실행 중인 프로그램의 인스턴스입니다. 프로그램이 저장장치에 보관된 정적인 코드라면, 프로세스는 해당 프로그램이 메모리에 적재되고 CPU와 각종 자원을 할당받아 실제로 동작하는 동적인 실행 단위입니다.

같은 프로그램을 여러 번 실행하면 실행마다 별도의 프로세스가 생성될 수 있습니다. 각 프로세스는 독립적인 프로세스 식별자와 실행 상태, 메모리 공간과 자원 정보를 가지며 운영체제의 관리 대상이 됩니다.

프로그램은 실행을 위한 코드와 데이터를 담은 정적인 파일이고, 프로세스는 그 프로그램이 실행되면서 상태와 자원을 가진 동적인 실행 주체입니다.

프로그램과 프로세스의 차이

구분프로그램프로세스
의미작업 절차를 표현한 코드와 데이터실행 중인 프로그램의 인스턴스
성격정적동적
존재 위치주로 저장장치의 실행 파일메모리와 운영체제의 관리 구조
상태실행 상태가 없음준비·실행·대기 등의 상태를 가짐
자원자원을 직접 할당받지 않음CPU 시간·메모리·파일·입출력 자원을 할당받음
관리 단위파일 관리 대상스케줄링과 자원 관리 대상
프로세스는 프로그램의 코드뿐 아니라 현재 실행 위치, 상태와 할당된 자원을 포함하는 개념입니다.

프로세스가 보유하는 주요 자원

  1. 코드 영역 — 실행할 명령어가 저장된 영역입니다.
  2. 데이터 영역 — 전역 변수와 정적 데이터 등을 저장합니다.
  3. 힙 영역 — 실행 중 동적으로 할당되는 메모리를 저장합니다.
  4. 스택 영역 — 함수 호출 정보, 매개변수와 지역 변수 등을 저장합니다.
  5. CPU 실행 정보 — 프로그램 카운터와 레지스터 값 등 현재 실행 위치를 나타냅니다.
  6. 입출력 자원 — 열린 파일, 장치와 통신 연결 등의 정보를 포함합니다.

프로세스 제어 블록이란?

프로세스 제어 블록(PCB, Process Control Block)은 운영체제가 각 프로세스를 관리하기 위해 필요한 정보를 저장하는 자료구조입니다. 프로세스가 생성되면 해당 프로세스를 위한 PCB가 만들어지고, 프로세스가 종료되어 관리 대상에서 제거되면 PCB도 함께 정리됩니다.

CPU가 한 프로세스에서 다른 프로세스로 전환될 때 운영체제는 현재 프로세스의 실행 정보를 PCB에 저장하고, 다음에 실행할 프로세스의 정보를 PCB에서 복원합니다. 이 과정을 문맥 교환 또는 컨텍스트 스위칭이라고 합니다.

용어 정리: PCB는 프로세스 자체가 아니라 운영체제가 프로세스를 추적하고 다시 실행하기 위해 사용하는 관리 정보의 집합입니다.

PCB 정보내용
프로세스 식별 정보프로세스 ID, 부모 프로세스 ID와 사용자 정보
프로세스 상태생성·준비·실행·대기·종료 등 현재 상태
프로그램 카운터다음에 실행할 명령어의 위치
CPU 레지스터범용 레지스터, 스택 포인터와 상태 레지스터 등의 값
스케줄링 정보우선순위, 큐 위치와 CPU 사용 정보
메모리 관리 정보주소 공간, 페이지 테이블과 메모리 경계 정보
입출력 상태 정보열린 파일, 할당된 장치와 입출력 요청 상태
회계 정보CPU 사용 시간, 실행 시간과 자원 사용량
PCB의 세부 항목은 운영체제에 따라 다르지만, 프로세스를 중단한 뒤 다시 실행하는 데 필요한 상태 정보가 핵심입니다.

문맥 교환은 실행 중인 프로세스의 CPU 상태를 PCB에 저장하고, 다음 프로세스의 상태를 PCB에서 복원하여 CPU 실행 대상을 바꾸는 과정입니다.

프로세스는 어떤 상태를 가질까?

프로세스는 생성된 뒤 항상 CPU를 사용하는 것이 아닙니다. CPU 할당 여부와 입출력 완료 여부 등에 따라 여러 상태를 이동합니다. 기본적인 5상태 모델은 생성, 준비, 실행, 대기와 종료 상태로 구성됩니다.

상태영문의미
생성 상태New프로세스가 만들어지고 초기화되는 상태
준비 상태Ready실행에 필요한 준비를 마치고 CPU 할당을 기다리는 상태
실행 상태RunningCPU를 할당받아 명령어를 실행하는 상태
대기 상태Blocked 또는 Waiting입출력이나 특정 사건이 완료되기를 기다리는 상태
종료 상태Terminated 또는 Exit실행이 끝나 운영체제가 자원을 회수하는 상태
준비 상태는 CPU만 기다리고, 대기 상태는 입출력 완료나 신호와 같은 특정 사건을 기다린다는 점이 중요합니다.

프로세스 상태 전이

상태 전이사건설명
생성 → 준비승인·적재초기화와 자원 준비를 마치고 CPU 대기열에 들어감
준비 → 실행디스패치스케줄러가 선택한 프로세스에 CPU를 할당
실행 → 준비선점·시간 할당량 만료CPU 사용 시간이 끝나거나 더 높은 우선순위 작업이 실행됨
실행 → 대기블록·입출력 요청입출력이나 사건 완료를 기다리기 위해 CPU를 반납
대기 → 준비웨이크업·사건 완료대기 조건이 충족되어 다시 CPU 할당을 기다림
실행 → 종료작업 완료·강제 종료프로세스 실행이 끝나고 자원이 회수됨
대기 조건이 해소된 프로세스는 일반적으로 곧바로 실행 상태가 아니라 준비 상태로 이동한 뒤 CPU 할당을 기다립니다.
디스패치, 선점, 블록과 웨이크업에 따른 프로세스의 생성·준비·실행·대기·종료 상태 전이

시험 포인트: 디스패치(Dispatch)는 준비 상태의 프로세스를 실행 상태로 전환합니다. 타임아웃 또는 선점은 실행 상태를 준비 상태로 전환하고, 블록은 실행 상태를 대기 상태로 전환합니다. 웨이크업은 대기 상태를 준비 상태로 전환합니다.

준비 상태

실행에 필요한 자원과 조건은 갖추었지만 CPU를 아직 할당받지 못한 상태입니다.

대기 상태

CPU를 받더라도 계속 진행할 수 없으며 입출력 완료나 특정 사건을 기다리는 상태입니다.

스레드란 무엇인가?

스레드(Thread)는 프로세스 내부에서 명령어를 실행하는 흐름이며, 현대 운영체제에서는 커널이 스케줄링하는 실행 단위로 사용됩니다. 하나의 프로세스는 하나 이상의 스레드를 가질 수 있으며, 같은 프로세스에 속한 스레드는 코드·데이터·힙·열린 파일 등의 자원을 공유합니다.

각 스레드는 독립적으로 실행 위치를 추적해야 하므로 프로그램 카운터, CPU 레지스터와 스택을 개별적으로 가집니다. 자원 공유 덕분에 스레드 간 데이터 교환은 효율적이지만, 동시에 같은 데이터에 접근하면 경쟁 상태가 발생할 수 있습니다.

프로세스는 자원을 소유하고 보호하는 단위이고, 스레드는 그 프로세스 안에서 실제 명령을 실행하는 흐름입니다.

비교 항목프로세스스레드
기본 의미실행 중인 프로그램과 자원 집합프로세스 내부의 실행 흐름
메모리 공간다른 프로세스와 기본적으로 분리같은 프로세스의 코드·데이터·힙 공유
개별 보유 정보주소 공간, 파일과 각종 운영체제 자원프로그램 카운터, 레지스터와 스택
생성·전환 비용상대적으로 큼상대적으로 작음
통신 방식프로세스 간 통신 기법 필요공유 메모리를 통해 비교적 쉽게 통신
오류 영향다른 프로세스와 격리되는 편한 스레드 오류가 같은 프로세스 전체에 영향을 줄 수 있음
스레드는 자원을 공유하므로 효율적이지만, 공유 데이터에 대한 동기화가 필요합니다.

사용자 수준 스레드와 커널 수준 스레드

구분사용자 수준 스레드커널 수준 스레드
관리 주체사용자 영역의 스레드 라이브러리운영체제 커널
생성·전환커널 호출이 적어 빠를 수 있음커널 개입으로 상대적 비용이 큼
스케줄링라이브러리가 자체적으로 관리커널 스케줄러가 직접 관리
블로킹 영향구현 방식에 따라 한 스레드의 블로킹이 전체에 영향을 줄 수 있음한 스레드가 대기해도 다른 스레드 실행 가능
다중 CPU 활용구현 모델에 따라 제한될 수 있음여러 CPU에서 병렬 실행 가능
이식성라이브러리 기반으로 이식성이 높을 수 있음운영체제 지원 방식에 의존
현대 운영체제의 실제 스레드 구현은 사용자 스레드와 커널 스레드의 연결 모델에 따라 달라질 수 있습니다.

현대적 관점: Linux의 일반적인 POSIX 스레드 구현은 각 사용자 스레드가 커널의 스케줄링 대상과 대응하는 1:1 모델을 사용합니다. 따라서 모든 사용자 수준 스레드가 항상 커널과 무관하게 동작한다고 일반화해서는 안 됩니다.

병행 프로세스란 무엇인가?

병행 프로세스(Concurrent Process)는 둘 이상의 프로세스 또는 실행 흐름이 시간적으로 겹쳐 진행되는 상태를 의미합니다. 단일 CPU에서는 짧은 시간 간격으로 실행 대상을 바꾸어 병행성을 구현할 수 있고, 다중 CPU에서는 여러 작업이 실제로 동시에 실행될 수도 있습니다.

여러 실행 흐름이 서로 독립적이면 문제가 적지만, 공유 변수·파일·메모리와 장치를 함께 사용하면 실행 순서에 따라 결과가 달라질 수 있습니다. 이러한 상황에서는 상호배제와 동기화가 필요합니다.

병행성

여러 작업의 실행 구간이 시간적으로 겹쳐 진행되는 개념입니다. 단일 CPU에서도 문맥 교환으로 구현할 수 있습니다.

병렬성

둘 이상의 작업이 여러 CPU 또는 코어에서 물리적으로 같은 시점에 실행되는 개념입니다.

임계 영역과 경쟁 상태

임계 영역(Critical Section)은 여러 프로세스나 스레드가 공유하는 데이터 또는 자원에 접근하는 코드 영역입니다. 둘 이상의 실행 흐름이 임계 영역을 동시에 수행하면 실행 순서에 따라 결과가 달라지는 경쟁 상태가 발생할 수 있습니다.

예를 들어 두 스레드가 같은 계좌 잔액을 동시에 읽고 각각 값을 변경하면 한쪽 변경이 사라질 수 있습니다. 임계 영역에서는 한 번에 하나의 실행 흐름만 공유 데이터를 변경하도록 제어해야 합니다.

임계 영역은 공유 자원에 접근하는 코드 구간이고, 상호배제는 그 구간에 여러 실행 흐름이 동시에 들어가지 못하도록 보장하는 원칙입니다.

올바른 임계 영역 해결 조건

  1. 상호배제 — 한 프로세스가 임계 영역을 실행 중이면 다른 프로세스는 동시에 들어갈 수 없어야 합니다.
  2. 진행 — 임계 영역에 아무도 없고 진입하려는 프로세스가 있다면 진입할 프로세스를 무한정 미루지 않아야 합니다.
  3. 한정 대기 — 진입 요청 후 다른 프로세스가 무한히 먼저 들어가 특정 프로세스가 영원히 기다리지 않도록 해야 합니다.

혼동 주의: 임계 영역 안의 코드는 반드시 무한 반복을 피해야 하지만, 임계 영역 문제의 정식 핵심 조건은 상호배제·진행·한정 대기입니다. 임계 영역은 가능한 한 짧게 유지하는 것이 좋습니다.

상호배제와 동기화 기법

상호배제(Mutual Exclusion)는 공유 자원에 한 번에 하나의 프로세스나 스레드만 접근하도록 제한하는 방식입니다. 동기화는 상호배제를 포함하여 여러 실행 흐름의 순서와 조건을 조정하는 더 넓은 개념입니다.

기법핵심 원리특징
소프트웨어 알고리즘공유 변수와 진입 규칙으로 임계 영역 접근 제어Dekker·Peterson·Lamport 알고리즘 등
원자적 하드웨어 명령분리할 수 없는 읽기·수정 연산 사용Test-and-Set, Compare-and-Swap 등
뮤텍스잠금과 해제를 통해 하나의 실행 흐름만 접근 허용상호배제에 특화
세마포어정수 값과 원자적인 대기·해제 연산으로 접근 수와 순서 제어상호배제와 실행 순서 동기화 가능
모니터공유 데이터와 이를 조작하는 연산을 하나의 고수준 구조로 캡슐화내부에서 상호배제를 자동으로 보장하는 방식
상호배제 기법은 공유 데이터에 대한 동시 접근을 제어하며, 세마포어와 모니터는 실행 순서와 조건 동기화에도 활용됩니다.

세마포어의 P 연산과 V 연산

세마포어(Semaphore)는 정수 값과 원자적 연산을 이용해 공유 자원의 사용 가능 수와 실행 순서를 제어하는 동기화 도구입니다. 전통적으로 대기 연산을 P 또는 wait, 해제 연산을 V 또는 signal이라고 부릅니다.

연산다른 표현개념적 동작
P(S)wait, down사용 가능한 자원이 있을 때 값을 감소시키고 진입하며, 없으면 대기
V(S)signal, up자원 사용을 마친 뒤 값을 증가시키고 대기 중인 실행 흐름을 깨울 수 있음
세마포어 연산은 중간에 다른 실행이 끼어들 수 없는 원자적 연산으로 수행되어야 합니다.

개념 예시:
P(S) — 자원 사용을 요청하고 필요하면 대기합니다.
임계 영역 실행 — 공유 데이터를 안전하게 처리합니다.
V(S) — 자원을 반납하고 대기 중인 실행 흐름을 깨웁니다.

세마포어와 모니터 비교

구분세마포어모니터
추상화 수준상대적으로 낮음상대적으로 높음
제어 방식P·V 또는 wait·signal 연산을 명시적으로 사용공유 데이터와 연산을 구조 안에 캡슐화
상호배제프로그래머가 올바른 순서로 연산해야 함모니터 내부 진입을 구조적으로 제한
오류 가능성연산 순서 오류나 해제 누락 가능구조화되어 상대적으로 관리가 쉬움
조건 동기화세마포어 값과 대기 큐 사용조건 변수와 wait·signal 사용
모니터는 모니터 외부에서 내부 데이터에 직접 접근하지 못하도록 하고, 공유 데이터 접근 절차를 하나의 구조로 묶습니다.

교착상태란 무엇인가?

교착상태(Deadlock)는 둘 이상의 프로세스나 스레드가 서로가 보유한 자원을 기다리면서 어느 쪽도 진행하지 못하는 상태입니다. 외부에서 자원을 회수하거나 프로세스를 종료하는 등의 조치가 없다면 대기가 계속될 수 있습니다.

예를 들어 프로세스 A가 프린터를 보유한 상태에서 스캐너를 기다리고, 프로세스 B가 스캐너를 보유한 상태에서 프린터를 기다리면 두 프로세스 모두 필요한 자원을 얻지 못해 멈출 수 있습니다.

교착상태는 여러 프로세스가 서로의 자원을 기다려 모든 관련 프로세스의 진행이 멈춘 상태입니다. 단순히 실행이 느리거나 잠시 대기하는 상태와는 다릅니다.

교착상태의 네 가지 필요조건

다음 네 조건이 동시에 성립하면 교착상태가 발생할 가능성이 생깁니다. 이 조건들은 교착상태가 반드시 발생했다는 뜻이 아니라, 교착상태가 발생하기 위해 필요한 조건입니다.

발생 조건영문의미
상호배제Mutual Exclusion하나의 자원을 동시에 하나의 프로세스만 사용할 수 있음
점유 대기Hold and Wait이미 자원을 가진 상태에서 다른 자원을 추가로 기다림
비선점No Preemption다른 프로세스가 보유한 자원을 강제로 빼앗을 수 없음
환형 대기Circular Wait프로세스들이 원형으로 연결되어 다음 프로세스가 가진 자원을 기다림
교착상태를 예방하려면 네 가지 필요조건 가운데 적어도 하나가 성립하지 않도록 시스템을 설계해야 합니다.

시험 포인트: 선점(Preemption)은 교착상태의 필요조건이 아닙니다. 다른 프로세스의 자원을 강제로 빼앗을 수 없는 비선점이 교착상태의 필요조건입니다.

교착상태는 어떻게 해결할까?

교착상태 처리 방법은 발생 전에 조건을 제거하는 예방, 안전한 자원 할당만 허용하는 회피, 발생 여부를 검사하는 발견, 발생 후 시스템을 정상화하는 회복으로 나눌 수 있습니다.

해결 방법핵심 원리대표적인 특징
예방
Prevention
교착상태의 네 필요조건 중 하나 이상을 원천적으로 제거설계가 명확하지만 자원 이용률이 낮아질 수 있음
회피
Avoidance
현재 할당 후에도 안전 상태를 유지하는 경우에만 자원 배분각 프로세스의 최대 자원 요구량 등의 정보 필요
발견
Detection
교착상태 발생을 허용하고 주기적으로 자원 대기 관계를 검사검사 비용이 들며 발생 후 회복 필요
회복
Recovery
프로세스 종료 또는 자원 선점으로 교착상태 해소작업 손실과 데이터 일관성 문제를 고려해야 함
은행가 알고리즘은 자원 할당 후에도 모든 프로세스가 완료될 수 있는 안전 순서가 존재하는지 확인하는 대표적인 교착상태 회피 알고리즘입니다.

예방

교착상태가 발생할 수 있는 구조 자체를 제한합니다. 예를 들어 자원 요청 순서를 고정하면 환형 대기를 방지할 수 있습니다.

회피

각 자원 요청이 시스템을 불안전 상태로 만들지 않는지 검사한 뒤 안전한 요청만 허용합니다.

발견

자원 할당 그래프나 대기 관계를 검사하여 교착상태에 포함된 프로세스와 자원을 찾습니다.

회복

하나 이상의 프로세스를 종료하거나 자원을 선점하고 작업을 되돌려 대기 고리를 해소합니다.

은행가 알고리즘

은행가 알고리즘(Banker’s Algorithm)은 프로세스가 앞으로 요구할 수 있는 최대 자원량을 알고 있다는 가정 아래, 자원을 할당한 뒤에도 모든 프로세스가 차례로 종료할 수 있는 안전 순서가 존재하는지 검사합니다.

요청을 허용한 뒤 안전 순서가 존재하면 안전 상태이고, 안전 순서가 존재하지 않으면 불안전 상태입니다. 불안전 상태가 곧 교착상태를 의미하는 것은 아니지만, 이후의 요청에 따라 교착상태가 발생할 가능성이 있으므로 해당 할당을 보류합니다.

혼동 주의: 은행가 알고리즘은 교착상태를 발생 후 찾는 발견 기법이 아니라, 불안전 상태로 들어가는 자원 할당을 거부하는 회피 기법입니다.

교착상태와 기아상태의 차이

교착상태와 기아상태는 모두 프로세스가 오랫동안 진행하지 못하는 문제지만 원인이 다릅니다. 교착상태는 관련 프로세스들이 서로의 자원을 기다려 전체가 멈추는 문제이고, 기아상태는 스케줄링이나 자원 배분에서 계속 밀려 특정 프로세스만 실행 기회를 얻지 못하는 문제입니다.

구분교착상태기아상태
원인프로세스 사이의 순환적인 자원 대기불공정한 우선순위나 반복적인 자원 배제
영향 범위대기 고리에 포함된 여러 프로세스주로 특정 프로세스
다른 프로세스 진행관련 프로세스 모두 진행 불가다른 프로세스는 계속 진행 가능
해결 방향대기 고리 제거와 자원 회수공정한 스케줄링과 에이징 적용
에이징은 오래 기다린 프로세스의 우선순위를 점차 높여 기아상태를 완화하는 방법입니다.

시험에서 자주 혼동되는 개념

준비 상태와 대기 상태

준비 상태는 CPU만 할당받으면 실행할 수 있습니다. 대기 상태는 입출력이나 사건이 완료되지 않아 CPU를 받아도 진행할 수 없습니다.

프로세스와 스레드

프로세스는 자원과 주소 공간의 단위이고, 스레드는 프로세스 내부에서 실행되는 흐름입니다.

임계 영역과 상호배제

임계 영역은 공유 자원에 접근하는 코드이고, 상호배제는 한 번에 하나만 그 영역을 실행하게 하는 원칙입니다.

상호배제와 동기화

상호배제는 동시 접근을 막는 것이고, 동기화는 접근 제한과 함께 실행 순서와 조건까지 조정하는 더 넓은 개념입니다.

교착상태 예방과 회피

예방은 필요조건 자체를 제거하고, 회피는 현재 상태를 검사하여 안전한 자원 할당만 허용합니다.

교착상태와 기아상태

교착상태는 여러 프로세스가 서로를 기다리고, 기아상태는 특정 프로세스가 계속 실행 기회를 얻지 못하는 문제입니다.

이번 장 핵심 요약

  1. 프로세스는 실행 중인 프로그램이며 운영체제의 자원 할당과 스케줄링 대상입니다.
  2. PCB에는 프로세스 상태, 식별자, 프로그램 카운터, 레지스터와 자원 관리 정보가 저장됩니다.
  3. 프로세스의 기본 상태는 생성·준비·실행·대기·종료입니다.
  4. 디스패치는 준비 상태를 실행 상태로, 블록은 실행 상태를 대기 상태로 전환합니다.
  5. 웨이크업은 대기 상태를 준비 상태로 전환합니다.
  6. 스레드는 프로세스 내부의 실행 흐름이며 코드·데이터·힙과 파일 등을 공유합니다.
  7. 병행성은 실행 구간이 시간적으로 겹치는 것이고, 병렬성은 여러 작업이 실제로 동시에 실행되는 것입니다.
  8. 임계 영역은 공유 자원에 접근하는 코드 구간이며 상호배제로 보호해야 합니다.
  9. 임계 영역 문제의 핵심 조건은 상호배제·진행·한정 대기입니다.
  10. 세마포어는 원자적인 P·V 연산으로 자원 접근과 실행 순서를 제어합니다.
  11. 교착상태의 필요조건은 상호배제·점유 대기·비선점·환형 대기입니다.
  12. 은행가 알고리즘은 안전 상태를 유지하는 자원 요청만 허용하는 교착상태 회피 기법입니다.
  13. 교착상태 해결 방법은 예방·회피·발견·회복으로 구분합니다.

복습 문제

프로그램과 프로세스의 가장 중요한 차이는?

프로그램은 저장된 코드와 데이터이고, 프로세스는 해당 프로그램이 실행되면서 상태와 자원을 가진 동적인 실행 단위입니다.

운영체제가 프로세스의 상태와 실행 정보를 저장하는 구조는?

프로세스 제어 블록(PCB)입니다.

CPU만 할당받으면 곧바로 실행할 수 있는 프로세스 상태는?

준비 상태(Ready State)입니다.

입출력 완료를 기다리는 프로세스는 어떤 상태일까?

대기 상태 또는 블록 상태(Blocked State)입니다.

대기 중인 사건이 완료되면 프로세스는 일반적으로 어떤 상태로 이동할까?

준비 상태로 이동한 뒤 CPU 할당을 기다립니다.

프로세스와 스레드는 자원을 어떻게 다르게 사용할까?

프로세스는 독립적인 주소 공간과 자원을 가지며, 같은 프로세스의 스레드는 코드·데이터·힙과 열린 파일 등의 자원을 공유합니다.

공유 자원에 접근하는 코드 영역을 무엇이라고 할까?

임계 영역(Critical Section)이라고 합니다.

임계 영역 문제의 세 가지 해결 조건은?

상호배제, 진행과 한정 대기입니다.

세마포어의 P 연산과 V 연산은 각각 어떤 역할을 할까?

P 연산은 자원 사용을 요청하고 필요하면 대기하며, V 연산은 자원을 반납하고 대기 중인 실행 흐름을 깨울 수 있습니다.

교착상태의 네 가지 필요조건은?

상호배제, 점유 대기, 비선점과 환형 대기입니다.

선점과 비선점 중 교착상태의 필요조건에 해당하는 것은?

비선점(No Preemption)입니다.

은행가 알고리즘은 교착상태의 어떤 해결 방식에 해당할까?

교착상태 회피(Avoidance) 방식입니다.

교착상태 예방과 회피의 차이는?

예방은 교착상태 필요조건 중 하나 이상이 성립하지 않도록 구조적으로 제한하고, 회피는 자원 요청 때마다 안전 상태가 유지되는지 검사해 안전한 요청만 허용합니다.

교착상태와 기아상태의 가장 중요한 차이는?

교착상태는 여러 프로세스가 서로의 자원을 기다려 함께 진행하지 못하는 상태이고, 기아상태는 특정 프로세스가 계속 자원이나 실행 기회를 얻지 못하는 상태입니다.

참고자료

이 글은 사무자동화산업기사 시험 범위에 포함된 프로세스 관리, 스레드, 병행 처리와 교착상태의 개념을 이해하고 복습할 수 있도록 재구성한 정리입니다. 시험에서 사용하는 단순화된 상태 모델과 분류가 현대 운영체제의 실제 구현과 일부 다를 수 있으므로 실제 시험 준비 시에는 최신 Q-Net 출제기준을 함께 확인해야 합니다.


같은 주제의 다른 글

이 글과 같은 카테고리에 있는 이전 글과 다음 글을 확인해보세요.