프로세스와 스레드는 컴퓨터 프로그램 실행 단위로, 자원의 효율적 관리를 위해 알아야 할 중요한 개념이다.
두 개념에 대해 자세히 알아보자.
미리 알아야 할 키워드 정리
실행 단위
- cpu core에서 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념
동시성(Concurrency)
- 여러 작업이 동시에 또는 병렬로 실행되는 것처럼 보이도록 하는 개념으로 실제로는 여러 작업이 정확히 같은 시간에 실행되는 것이 아닌 사용자나 시스템 입장에서 여러 작업이 동시에 진행되는 것처럼 보이는 것
프로세스와 스레드
프로세스 | 스레드 | |
정의 | 실행 중인 프로그램을 의미하며 하나의 응용 프로그램이 여러 프로세스로 구성될 수 있음 | 프로세스 내에서 실행되는 작은 실행 단위로 하나의 프로세스는 여러 개의 스레드를 가질 수 있음 |
주소 공간 | 각 프로세스는 독립된 주소 공간을 가짐 ➡️ 프로세스마다 별도의 메모리 공간이 할당됨 | 같은 프로세스 내의 스레드들은 동일한 주소 공간을 공유함 ➡️ 스레드 간 데이터 공유가 쉬움 |
안정성 | 한 프로세스에서 발생한 문제는 다른 프로세스에 영향을 미치지 않으며, 각 프로세스는 독립적으로 실행됨 | 스레드는 같은 프로세스 내에서 실행되므로, 하나의 스레드에서 문제가 발생할 경우, 전체 프로세스에 영향을 미칠 수 있음 |
통신 | IPC(Inter-Process Communication) 기법 활용, 비교적 복잡 | 같은 주소 공간을 공유하므로 비교적 간단 |
컨텍스트 스위칭 비용 |
(프로세스 간 전환) 높음 | (스레드 간 전환) 낮음 |
컨텍스트 스위칭(Context Switching)
- CPU가 현재 실행 중인 프로세스나 스레드의 상태(Context)를 저장하고, 다른 프로세스나 스레드의 실행 상태를 복원하는 작업
하나의 CPU에서는 여러 개의 작업을 동시에 수행할 수 없으며, 짧은 시간 간격으로 여러 프로세스를 전환하는 시분할(time-sharing) 방식을 사용하여 동시성을 구현할 수 있다.
과정
PCB(Process Control Block) or TCB(Thread Control Block)에 현재 상태 정보 저장 ➡️ 상태 변경을 통해 다음 실행할 프로세스나 스레드 선택 ➡️선택된 프로세스나 스레드의 PCB or TCB를 통한 상태 복원 ➡️ 세로운 프로세스나 스레드로 실행 재개
PCB (Process Control Block)와 TCB (Thread Control Block)
PCB와 TCB는 프로세스와 스레드 각각의 상태(실행 중, 준비 상태, 대기 상태)를 관리하는 데 사용되는 데이터 구조이다.
각각 PID, TID (Identifier) 식별자를 포함하고 context switching을 지원한다.
데이터 구조 | PCB | TCB |
구성 요소 | 프로세스 or 스레드 ID, 상태, 프로그램 카운터, CPU 레지스터 | |
메모리 관리 정보 | 스택 포인터 | |
메모리 관리 | 프로세스 전체의 메모리 공간 정보를 포함 ➡️ context switching 시 메모리 매핑 변경 필요 O | 스레드의 스택정보와 관련된 메모리 정보, 동일한 프로세스 내에서 이루어짐 ➡️ 메모리 매핑 변경 필요 X |
CPU 레지스터
- CPU 내부의 고속 메모리 공간으로 명령어 실행 중에 필요한 데이터를 일시적으로 저장 ➡️ 연산 속도 증가
프로그램 카운터
- CPU가 다음에 실행할 명령어의 주소를 가리키는 레지스터
출처
'ComputerScience > OS' 카테고리의 다른 글
Ubuntu ERROR "vmwgfx seems to be running on an unsupported hypervisor... (0) | 2024.05.30 |
---|