프로세스란 무엇인가?
프로세스는 컴퓨터에서 실행 중인 프로그램을 의미하며, 운영 체제의 핵심 요소로 관리된다.
프로그램이 디스크에 저장된 정적인 코드라면, 프로세스는 실행 중인 프로그램의 동적인 작업 단위를 말한다.
하나의 프로그램이 여러 번 실행되면 동일한 프로그램이라도 각각의 실행이 독립적인 프로세스로 구동된다.
프로세스는 다양한 상태를 가지며, 이 상태들은 운영 체제가 프로세스를 효율적으로 관리하기 위해 사용된다.
프로세스의 생성, 실행, 대기, 종료 등은 특정 이벤트나 스케줄링 알고리즘에 따라 전환된다.
프로세스의 주요 상태
- 생성 상태(Create)
- 프로세스가 생성되고 초기화 중인 상태를 말한다.
- 준비 상태(Ready)
- 프로세스가 CPU를 사용할 준비가 되어 있는 상태이다. CPU가 할당되기를 기다리는 상태로, 우선순위에 따라 스케줄링된다.
- 실행 상태(Running)
- 프로세스가 CPU를 점유하고 명령어를 실행 중인 상태이다.
- 대기 상태(Waiting)
- 입출력 작업이나 특정 이벤트를 기다리는 상태로, 실행 상태에서 대기 상태로 전환된다.
- 종료 상태(Terminated)
- 프로세스의 실행이 끝난 상태를 말한다.
프로세스 상태 전이
- 디스패치(Dispatch)
- 준비 상태에 있던 프로세스가 실행 상태로 전환되는 것을 말한다.
- 예: ready → running
- 보류(Block)
- 실행 중인 프로세스가 입출력 작업 등으로 인해 CPU를 반납하고 대기 상태로 전환되는 것을 의미한다.
- 예: running → waiting
- 깨움(Wakeup)
- 대기 상태에 있던 프로세스가 기다리던 작업을 완료하고 준비 상태로 전환되는 것을 뜻한다.
- 예: waiting → ready
- 시간 초과(Timeout)
- 프로세스가 일정 시간 동안 CPU를 점유한 뒤, 다시 준비 상태로 돌아가는 것을 말한다.
- 예: running → ready
프로세스와 관련된 면접 예상 질문 및 간단한 답변 정리
1. 프로세스와 스레드의 차이를 설명하라.
- 프로세스는 독립적인 실행 단위로, 각 프로세스는 고유의 메모리 공간(코드, 데이터, 스택)을 가진다.
- 스레드는 프로세스 내에서 실행되는 작업 단위로, 프로세스의 메모리(코드, 데이터)를 공유한다.
- 따라서, 프로세스는 자원 간섭이 적고 안정적이지만, 스레드는 자원 공유로 인해 더 가볍고 빠르게 실행된다.
2. 프로세스 상태 전이에 대해 설명하라.
프로세스는 다음과 같은 상태 전이를 거친다.
- 생성(create): 프로세스가 생성되는 단계.
- 준비(ready): 실행 대기 중이며 CPU 할당을 기다리는 상태.
- 실행(running): CPU를 할당받아 실행 중인 상태.
- 대기(waiting): I/O 작업 등 특정 이벤트를 기다리는 상태.
- 종료(terminated): 실행이 완료된 상태.
프로세스는 CPU 할당(디스패치) 또는 I/O 완료(깨움)를 통해 상태를 전이한다.
3. 멀티프로세싱과 멀티스레딩의 차이는 무엇인가?
- 멀티프로세싱: 여러 프로세스를 병렬로 실행. 각 프로세스는 독립적인 자원을 가짐. 안정성은 높지만, 메모리 소모가 크다.
- 멀티스레딩: 하나의 프로세스 내에서 여러 스레드를 병렬로 실행. 자원 공유로 효율적이나 동기화 문제를 관리해야 한다.
4. 프로세스 스케줄링 알고리즘에 대해 아는 대로 말하라.
- 라운드 로빈 (Round Robin): 각 프로세스에 동일한 시간 할당. 공정성 중시.
- 선점 스케줄링 (Preemptive Scheduling): 우선순위가 높은 프로세스가 CPU를 차지. 효율적이지만 컨텍스트 스위칭 비용이 증가.
- 고정 우선순위 스케줄링: 정해진 우선순위에 따라 CPU 할당. 긴급 작업 처리에 유리하지만, 낮은 우선순위 프로세스가 기아 상태에 빠질 수 있음.
5. 프로세스 간 통신(IPC: Inter-Process Communication)에 대해 설명하라.
프로세스가 데이터를 주고받는 방법은 다음과 같다.
- 파이프(Pipe): 부모-자식 프로세스 간 단방향 통신.
- 메시지 큐(Message Queue): 커널을 통해 여러 프로세스 간 데이터를 주고받는 방식.
- 공유 메모리(Shared Memory): 메모리 공간을 공유하여 빠르게 통신. 동기화 필요.
- 소켓(Socket): 네트워크 기반 프로세스 통신.
총 정리
프로세스는 컴퓨터 시스템에서 가장 기본적이고 중요한 개념으로, 운영 체제의 성능과 안정성에 큰 영향을 준다.
면접 준비를 할 때, 프로세스의 정의와 상태 전이뿐만 아니라, 관련된 스케줄링 알고리즘, 스레드와의 차이, 프로세스 간 통신 등 폭넓은 지식을 숙지해야 한다.
'CS(Computer Science)' 카테고리의 다른 글
네트워크 기본 개념 Socket 통신: OSI 7 계층 (0) | 2025.01.01 |
---|---|
스레드(Thread)란? (1) | 2025.01.01 |
컴퓨터와 프로그래밍의 이해 + 컴퓨터 기초 용어 정리 [DAY2] (0) | 2022.12.16 |
댓글