Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- The Banker's Algorithm
- Non-Preemptive
- Stack영역
- 블로킹 논블로킹
- 스레드 동기화
- 프로세스 상태 전이도
- Process Control Block
- 경량 프로세스
- Light Weight Process
- 동기 비동기
- 교착 상태
- Heap영역
- 유저 모드의 동기화
- Multi-level Queue
- Reentrant
- The DIning Philosopher Problem
- Activity
- 뮤텍스(Mutex)
- 유저 모드
- 커널 모드
- 인터락 함수
- 프로세스
- 문맥 교환
- 프로세스 제어 블록
- 임계 구역
- 방금 그 곡
- 스레드
- 모니터(Monitor)
- 은행원 알고리즘
- 커널 모드의 동기화
Archives
Blog For Me
[운영체제] 스레드(Thread)의 개념 본문
스레드(Thread)란?
- 프로세스 내에서 실행되는 프로그램 코드의 흐름을 의미하며, 프로세스 내 주소 공간이나 자원 공유 가능하다.
- 한 개의 프로세스 내에서는 반드시 하나 이상의 스레드가 존재한다.
- 스레드는 프로세스 내의 Code, Data, Heap 영역을 다른 스레드와 공유하고 Stack 영역은 따로 할당받는다.
- 여러 스레드는 한 프로세스 내의 Code, Data, Heap 영역을 공유하지만, 프로세스 간에는 서로 메모리에 접근할 수 없다.
- 스레드는 별도의 Register와 Stack을 가지고, 그 외의 다른 영역은 공유한다. 한 스레드가 프로세스 자원을 변경하면 다른 스레드도 그 변경 결과를 가져올 수 있다.
스레드가 필요한 이유
여러개의 작업 단위로 구성된 프로그램에서 요청을 동시에 처리하기 위함이다.
예를 들어, 워드 프로세스에서 사용자로부터 키보드 입력 받는 스레드, 그래픽이나 UI를 그리는 스레드, 그리고 문법 오류 체크하는 스레드 등 워드 프로세스 내에서 여러 요청들을 동시에 처리해야 하는데, 이때 스레드가 필요하다.
스레드의 이점
- 응답성(Responsiveness) : 다른 스레드의 실행 시간이 길거나 입출력 요청으로 인하 block 되더라도 계속 실행되는 것을 허용한다.
- 자원 공유(Resource sharing) : 프로세스 내 자원(데이터, 코드, 힙)을 공유한다.
- 경제성(Economy): 프로세스 생성을 위한 메모리와 자원 할당, 프로세스 간 문맥 교환은 비용이 많이 들고 오버헤드가 발생하는 반면에, thread는 프로세스의 자원을 공유하고 있으므로 스레드 생성이나 문맥 교환 시에 더 경제적이다.
- 확장성(Scalability) : 멀티 프로세서 구조에서는 스레드들이 각자 다른 프로세서 위에서 병렬적으로 실행되기 때문에, 다중 CPU 환경에서 병렬성이 크게 증대된다.
스레드가 경량 프로세스(Light Weight Process)라 불리는 이유
- 프로세스 생성(Process fork)에 비해 스레드의 생성 시간이 더 빠르기 때문이다.
- 스레드 간에 프로세스 자원을 공유할 수 있기 때문이다.
- 스레드 간에 통신이 용이하기 때문이다.
'컴퓨터과학 > 운영체제' 카테고리의 다른 글
[운영체제]멀티 프로세스 vs 멀티 스레드 (0) | 2021.11.11 |
---|---|
프로그램과 프로세스의 차이점 (0) | 2021.11.10 |
[운영체제] Context Switching(문맥 교환) (0) | 2021.10.29 |
[운영체제] PCB(Process Control Block) (0) | 2021.10.29 |
[운영체제]프로세스(Process) 상태 전이도 (0) | 2021.10.29 |
Comments