728x90
📌 2주차 : 프로세스와 쓰레드
- 멀티 프로세스
- 멀티 쓰레드
- Context Switching
- PCB
프로그램
- 어떤 작업을 위해 실행할 수 있는 파일
프로세스
- 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
- 메모리에 올라와 실행되고 있는 프로그램의 인스턴스
- 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다.
- 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다.
스레드
- “프로세스 내에서 실행되는 여러 흐름의 단위”
- 스레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유한다.
- 스레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들(힙 공간 등)을 같은 프로세스 내에 스레드끼리 공유하면서 실행된다.
프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다.
자바 스레드
- 자바에는 프로세스가 존재하지 않고 스레드만 존재하며, 자바 스레드는 JVM에 의해 스케줄되는 실행 단위 코드 블록이다.
- 스레드가 몇 개 존재하는지
- 스레드로 실행되는 프로그램 코드의 메모리 위치는 어디인지
- 스레드의 상태는 무엇인지
- 스레드 우선순위는 얼마인지
- 즉, 개발자는 자바 스레드로 작동할 스레드 코드를 작성하고, 스레드 코드가 생명을 가지고 실행을 시작하도록 JVM에 요청하는 일 뿐이다.
멀티 프로세스와 멀티 스레드의 차이
- 멀티 프로세스
- 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업(태스크)을 처리하도록 하는 것
- 장점: 하나의 프로세스가 문제 발생하더라도 다른 프로세스에 영향 미치지 않음
- 단점: Context Switching에서의 오버헤드, 프로세스 사이의 어렵고 복잡한 통신 기법(IPC)
- context switching? 동작 중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업
- 멀티 스레드
- 하나의 응용프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것
- 윈도우, 리눅스 등 많은 운영체제들이 멀티 프로세싱을 지원하고 있지만 멀티 스레딩을 기본으로 하고 있다.
- 장점: 시스템 자원 소모 감소 (자원의 효율성 증대), 시스템 처리량 증가 (처리 비용 감소), 간단한 통신 방법으로 인한 프로그램 응답 시간 단축(메모리 공유해서)
- 단점: 주의 깊은 설계, 디버깅 까다롭, 단일 프로세스 시스템은 효과 미미, 동기화 문제, 하나의 스레드 문제 발생시 전체 영향 받음
멀티 프로세스 대신 멀티 스레드를 사용하는 이유?
- 자원의 효율성 증대: 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.
- 프로세스간의 문맥 교환은 오버헤드가 큭;때문
- 스레드는 프로세스 내의 메모리르 ㄹ공유학때문에, 주고받는 것에 간단, 시스템 자원 소모 줄어듬
- 처리 비용 감소 및 응답 시간 단축
문맥 교환이란?
- 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥)을 보관하고 새로운 프로세스의 상태를 적재하는 작업
- PCB 기록
- 시점
- 멀티 태스킹
- 인터럽트 처리
- 사용자 및 커널 모드 전환
PCB
- 시스템 내의 프로세스들을 관리하기 위해 프로세스마다 유지하는 정보들을 담는 커널 내 자료구조
- 저장 내용: 프로세스 상태, PC값, CPU 레지스터, CPU 스케줄링 정보, 메모리 관리 정보, 자원 사용 정보, 입출력 상태 정보
- CPU를 선점하고 있던 프로세스는 프로세스 문맥을 PCB에 저장하게 되고, 새롭게 CPU를 할당받을 프로세스는 PCB로부터 예전에 저장했던 자신의 문맥을 실제 하드웨어로 복원하는 과정
문맥 교환 과정

아래 과정 반복
- 요청 발생: 인터럽트 또는 트랩에 의한 요청이 발생.(트랩은 소프트웨어 인터럽트)
- PCB에 저장: 운영체제는 현재 실행중인 프로세스(P0)의 정보를 PCB에 저장.
- CPU 할당: 운영체제는 다음 프로세스(P1)의 정보를 PCB에서 가져와 CPU를 할당.
다른 설명
- Process P1이 실행되는 도중 인터럽트나 시스템 콜이 발생합니다.
- PCB1에 P1의 정보를 저장하고 PCB2의 상태를 불러옵니다.
- Process P2를 실행합니다.
- P2가 실행되는 도중 인터럽트나 시스템 콜이 발생합니다.
- PCB2에 P2의 정보를 저장하고 PCB1의 상태를 불러옵니다.
- Process P1을 실행합니다.
Context Switching하는 동안 CPU는 아무일도 하지않는 시간이 발생하는데 이를 오버헤드(Overhead)
참고자료
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
https://wooody92.github.io/os/멀티-프로세스와-멀티-스레드/
면접 문제 출처
https://deious.tistory.com/288#💡 프로세스와 쓰레드의 차이에 대해 설명해주세요.
예상 문제
- 프로세스와 쓰레드의 차이에 대해 설명해주세요.
- 정답쓰레드는 프로세스 내에서 stack만 할당 받고, 그 이외의 메모리 영역은 공유하기때문에 다른 쓰레드의 결과를 즉시 확인가능합니다. 쓰레드는 프로세스 내에 존재하며 프로세스가 할당받은 자원을 이용하여 실행합니다.
- 프로세스는 실행중인 프로그램을 말하며, 메모리 영역을 다른 프로세스와 공유하지 않습니다.
- 문맥 전환(context switching)에 대해 설명해주세요
- 정답
- 하나의 프로세스가 CPU를 사용하다가 다른 프로세스가 사용할 수 있도록 이전 프로세스의 상태를 PCB에 저장하고 새로운 프로세스의 상태를 CPU에 적재하는 것을 의미합니다.
- 멀티 쓰레드의 동시성과 병령성을 설명해주세요.
- 정답병렬성: 멀티 작업을 위해 멀티 코어에서 한 개 이상의 쓰레드를 포함하는 각 코어들을 동시에 실행하는 것
- 동시성: 멀티 작업을 위해 싱글 코어에서 여러 개의 쓰레드가 번갈아 실행하는 것
'CS > 운영체제' 카테고리의 다른 글
| 프로세스 메모리 배치 (0) | 2025.10.20 |
|---|---|
| 스레드 동기화 (5) | 2024.08.28 |
| CPU 스케줄링 (1) | 2024.08.07 |
| 운영체제 기본 개념 (0) | 2024.07.30 |