Thread (스레드)
● 프로세스(process) 내에서 실행되는 실질적인 작업 단위
● 모든 프로세스는 최소 하나의 스레드(메인 스레드)를 가지고 있다.
● 프로세스의 자원을 이용하여 실제 작업을 수행
● 같은 프로세스 내의 다른 스레드들과 자원을 공유
프로세스(process)란? - 프로그램을 실행 시켜 작동하지 않던 것을 작동하도록 변화시키는 것 - ex) 바탕화면에 Chrome.exe를 더블 클릭 → process! - 컴퓨터가 작업 중인 프로그램 |
● 프로그램(Program)과 프로세스(Process)의 차이
프로그램 | 프로세스 |
- 어떤 작업을 하기 위해 실행할 수 있는 파일 | - 실행되어 작업중인 컴퓨터 프로그램 |
- 파일이 저장 장치에 있지만 메모리에는 올라가 있지 않은 정적인(Static) 상태 |
- 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태 |
- 코드 덩어리 | - 코드 덩어리를 실행한 것 |
● 프로세스 안에는 여러 개의 스레드들이 있기 때문에,
스레드 수가 많을수록 동시에 처리할 작업이 많아져 성능 높아진다.
● 하나의 프로그램 당 하나 이상의 프로세스를 가지고 있고,
하나의 프로세스는 반드시 하나 이상의 스레드를 갖는다.
Process & Thread Memory
● 프로세스의 자원 구조
○ 스택(Stack) 영역 :
- 지역 변수와 같은 호출한 함수가 종료되면 되돌아올 임시적인 자료를 저장하는 독립적인 공간
- 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸
- IF, Stack영역을 초과하면 'stack overflow' 에러 발생
○ 힙(Heap) 영역 :
- 생성자, 인스턴스와 같은 동적(Dynamic)으로 할당되는 데이터들을 위해 존재하는 공간
- 사용자가 직접 메모리 공간에 할당하고 해제
○ 데이터(Data) 영역 :
- 코드가 실행되면서 사용하는 전역 변수나 각종 데이터들의 영역
○ 코드 (Code/Text) 영역 :
- 프로그래머가 작성한 프로그램 함수들의 코드가 CPU가 해석 가능한 기계어 형태로 저장되어 있는 공간
○ 화살표가 합쳐지는 부분은 Code 영역과 Data 영역에서 선언할 때
크기가 결정되는 것은 정적 영역이지만,
Stack 영역과 Heap 영역은 프로세스가 실행되는 동안 크기가 늘고 줄어드는 동적 영역이다.
온라인 쇼핑하면서 동영상 시청이 가능한 이유?
● 스레드의 자원 공유
- 스레드끼리 프로세스 자원을 공유하면서 프로세스 실행 흐름의 일부가 되기 때문에 가능한 것
- 프로세스 4가지 영역 중 스레드는 Stack만 할당받아 복사
- Code, Data, Heap은 프로세스 내의 다른 스레드들과 공유
# 다음 정리할 것
스레드 개념프로세스, 프로그램 차이
스레드의 자원 공유
프로세스, 스레드의 생명 주기
컨텍스트 스위칭
스레드 스케줄링
멀티 스레드
'IT > OS' 카테고리의 다른 글
[OS] Operating System (0) | 2025.01.27 |
---|---|
[OS] Thread & Process - 3 (0) | 2025.01.17 |
[OS] Thread & Process - 2 (0) | 2025.01.15 |