📌 프로세스의 유형
- 포그라운드 프로세스
사용자와 직접 상호작용하며 실행되는 프로세스. 예: 웹 브라우저, 터미널 등. - 백그라운드 프로세스
사용자와의 직접적인 상호작용 없이 백그라운드에서 동작하는 프로세스.- 데몬(Daemon)
백그라운드 프로세스 중에서도 사용자 개입 없이 특정 작업만 수행하는 특수한 프로세스.
→ Windows OS에서는 이를 ‘서비스’라고 부른다.
- 데몬(Daemon)
프로세스가 실행되면 메모리는 다음과 같이 구성된다:
- 커널 영역:
프로세스 제어 블록(PCB, Process Control Block) 저장. - 사용자 영역(코데힙스)
- 코드 영역: 실행 명령어 저장 (Read-Only)
- 데이터 영역: 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간이다. 전역 변수, 정적 변수 등 (정적 할당)
- 힙 영역: 실행 중 동적으로 할당되는 메모리, 사용가능한 메모리 공간이다.
힙 영역은 메모리 공간을 할당하면 반환해야 한다. → 반환하지 않으면 메모리 누수 발생 → 가비지 컬렉터 사용 - 스택 영역: 일시적으로 사용할 값들이 저장되는 공간이다. 함수 호출 정보, 매개변수, 지역 변수 등 저장
→ 스택 트레이스를 통해 디버깅 가능
스택 트레이스란 ?
특정 시점에 스택 영역에 저장된 함수 호출 정보를 말한다. => 문제의 발생 지점 추적가능, 디버깅 유용
⭐️ 코드영역과 데이터 영역은 프로그램 실행 도중 크기가 변하지 않기 때문에 정적 할당 영역이라고 부름
⭐️ 반면 힙과 스택영역은 크기가 변할 수 있는 영역이기 때문에 동적 할당 영역이라고 부른다.
📌PCB란?
프로세스 상태를 추적하기 위한 구조체의 일종이다. 새로운 프로세스가 메모리에 적재됐을 때 커널 영역에서 만들어지고 프로세스의 실행이 끝나면 폐기된다. PCB는 프로세스 테이블의 형태로 관리된다.
프로세스 테이블은 실행중인 PCB의 모음을 의미한다.
➡️ 실행중일 경우 PCB를 추가하고 종료될 경우 PCB에서 제거한다. 가끔가다 종료된 PCB가 남아있는 경우가 있는데, 이러한 비정상 종료 상태를 좀비 프로세스 상태라고 한다.
아래와 같은 정보들이 PCB에 포함된다.
- PID
- 레지스터 상태
- 메모리 정보
- 파일/입출력 정보
- 스케줄링 정보 등
프로세스가 실행된다. == 운영체제에 의해 CPU의 자원을 할당받았다.
프로세스의 CPU사용 시간은 타이머 인터럽트에 의해 제한된다. 타이머 인터럽트(타임아웃 인터럽트)는 시간이 끝났음을 알린다.

타이머 인터럽트가 발생하여 CPU를 프로세스 B에게 양보한다고 하자.
이때 프로세스A는 프로그램 카운터, 레지스터값, 메모리 정보, 실행을 위해 열엇던 파일, 사용한 입출력 장치 등, 지금까지의 중간 정보를 백업한다.
-> 이러한 걸, 문맥이라고 한다
Context : 프로세스 실행에 필요한 정보들
문맥은 해당 프로세스의 PCB에 명시된다. 또 실행할 경우 프로세스의 문맥을 복구한다.

위처럼 기존 프로세스의 문맥을 PCB에 백업하고 PCB에서 문맥을 복구하여 새로운 프로세스를 실행하는 것을 문맥 교환이라고 한다.
문맥 교환은 여러 프로세스가 끊임없이 빠르게 번갈아 가며 실행되는 원리이다
Context Switching : 현재 실행 중인 프로세스의 문맥을 PCB에 저장하고 다음 프로세스의 Context를 불러오는 작업
Context Switching이 빈번하게 일어나면 오버헤드가 발생한다. -> 캐시 미스로 성능 저하 가능
📌 프로세스 상태
프로세스틑 크게 5가지 상태가 있다.

- 생성 상태(new)
프로세스가 생성중 상태, 메모리에 적재되어 PCB를 할당받은 상태이다. 생성상태 거친 후,준비 상태가 된다. - 준비 상태(ready)
CPU를 할당 받기를 기다리고 있는 상태이다. CPU를 할당받으면 실행 상태가 된다. 준비 상태인 프로세스가 실행 상태로 전환되는 것을 디스패치(dispatch)라고 한다. - 실행상태(running)
CPU를 할당받아 실행 중인 상태로, 일정 시간 동안만 CPU를 사용할 수 있다.
타이머 인터럽트가 발생하여 프로세스가 할당된 시간을 모두 사용하면 다시 준비 상태가 되고
실행 도중 입출력 장치가 발생하면 작업이 끝날 때까지 기다리는 대기 상태로 가야된다. - 대기 상태 (blocked)
프로세스가 입출력 작업을 요청하거나 바로 확보할 수 없는 자원을 요청하는 등, 곧장 실행이 불가능한 조건에 놓이는 경우 상태가 대기 된다. - 종료 상태(terminated)
프로세스가 종료된 상태를 말한다. 프로세스가 종료되면 운영체제는 PCB와 프로세스가 사용한 메모리를 정리한다.
📌 멀티프로세스와 멀티스레드
멀티프로세스 : 동시에 여러 프로세스가 실행되는 것
- 서로 독립된 여러 프로세스가 동시에 실행됨
- 자원을 공유하지 않음
- 한 프로세스에 문제가 생겨도 다른 프로세스에 영향이 없음
- 같은 작업을 수행하고 있지만 각각 PID 값이 다르다.
멀티스레드 : 프로세스를 동시에 실행하는 여러 스레드
- 하나의 프로세스 내부에서 여러 스레드가 실행된다.
- 스레드를 식별할 수 있는 고유 정보인 스레드 ID, 프로그램 카운터, 레지스터 값, 스택 등으로 구성된다.
- 스레드마다 각 프로그램 카운터 값과 스택을 가지고 있기 때문에 스레드마다 다음에 실행할 주소를 가지고 있고, 연산 과정의 임시 저장 값을 가질 수 있다.
- 공유 : 코드, 데이터, 힙 영역, 열린 파일 등
- 개별: 스택, 프로그램 카운터, 레지스터
- 하나의 스레드 오류 ➡️ 전체 프로세스에 영향을 줄 수 있다.
📌 프로세스 간 통신(IPC)
프로세스 간에도 자원을 공유하고 데이터를 주고 받을 수 있다.
- 공유메모리 : 데이터를 주고받는 프로세스가 공통적으로 사용할 메모리 영역을 두는 방식이다.
- 프로세스 간에 주고받을 데이터를 메시지의 형태로 주고받는 방식을 말한다.

공유 메모리 기반 IPC
- 프로세스 간에 특정 메모리 공간을 공유하여 데이터를 주고받는 통신 방식
- 다른 프로세스의 메모리 공간을 임의로 수정할 수 없다.
- 메모리 접근 속도가 빠르다.
- 시스템 콜 또는 공유 파일/변수를 통해 구현된다.
메시지 전달 기반 IPC
- 프로세스 간에 주고받을 데이터가 커널을 거쳐 송수신되는 통신 방식
- 메시지를 보내는 송신자와 수신자가 명확히 구분된다.
- 구조가 명확해서 유지 보수가 쉽다.
https://product.kyobobook.co.kr/detail/S000214014967
이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접 | 강민철 - 교보문고
이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접 | 기술 면접과 실무에 필요한 CS 지식, 한 권으로 끝내자!프로그램의 실행 원리를 이해하지 못한 채 ‘일단 작동만 하도록 만드는 것’과 정
product.kyobobook.co.kr
'Computer Science' 카테고리의 다른 글
| [CS]CPU스케줄링 (0) | 2025.04.18 |
|---|---|
| [CS]동기화와 교착 상태 (0) | 2025.04.18 |
| 운영체제를 알아보자 (2) | 2025.03.31 |
| [OSTEP 운영체제 정리] - Log-Structured File System (0) | 2024.06.24 |
| [OSTEP 운영체제 정리] - File system implementation (0) | 2024.06.24 |