프로세스 ( Process ) 란?
실행 중인 프로그램을 의미하고 OS로부터 시스템 자원을 할당받는 작업의 단위입니다.
프로세스는 1개 이상의 쓰레드를 가지고 있습니다.
쓰레드 ( Thread ) 란?
- 프로세스의 메모리 공간을 사용하며, OS의 스케줄링 대상이 되어 퀀텀 타임을 할당받아 CPU에서 실행될 수 있는 단위를 말합니다.
프로세스의 메모리 구조
Code ( Text ) Segment
- 코드 영역 또는 텍스트 영역이라고도 부릅니다. 해당 영역은 프로그래머가 작성한 명령어가 저장되고 읽기만 가능한 공간입니다.
.rodata Segment
- 상수 데이터가 저장된 공간이며 읽기만 가능합니다.
Data Segment
- 초기화된 전역 변수 데이터가 저장된 공간입니다.
BSS ( Block Started by Symbol ) Segment
- 초기화되지 않은 전역 변수 데이터가 저장된 공간입니다.
Heap
- 프로그래머가 직접 메모리를 할당하고 반환할 수 있는 공간이며 낮은 주소에서 높은 주소로 할당됩니다.
Stack
지역 변수, 매개 변수, 콜 스택과 같이 데이터를 일시적으로 저장하는 공간이며 높은 주소에서 낮은 주소로 할당됩니다.
스택의 기본 최대 크기는 1MB 입니다.
쓰레드와 프로세스와의 관계
프로세스는 위와 같이 프로세스의 메모리 일부를 스택영역으로 사용하여 실행됩니다.
프로세스는 독립적인 메모리 공간을 가지고 있으며 프로세스 내부에 있는 모든 쓰레드들은 해당 메모리 영역에 있는 모든 데이터에 접근할 수 있습니다.
'운영체제 > Common' 카테고리의 다른 글
외부 단편화( External Fragmentation )와 내부 단편화( Internal Fragmentation )란? (0) | 2022.11.08 |
---|---|
CPU 스케줄링( CPU Scheduling )이란? (0) | 2022.11.07 |
명령어 사이클( Instruction Cycle ) 과 인터럽트( Interrupt )란? (0) | 2022.10.27 |
쓰레드 기아 ( Thread Starvation ) 현상이란? (0) | 2022.10.01 |
컨텍스트 스위칭 ( Context Switching ) 이란? (0) | 2022.09.24 |