반응형
스레드란
- 프로세스의 실행 단위라고 할 수 있으며, 한 프로세스 내에서 동작되는 여러 실행 흐름으로 프로세스 내의 주소 공간이나 자원을 공유할 수 있다.
- 위의 그림과 같이 Code, data, files, registers, stack을 담고 있는 프로세스가 있다고 가정하자.
- 만약 사용자가 똑같은 프로그램 3개를 실행한다면, 아래의 그림과 같이 3개의 프로세스가 실행될 것이다.
- 그림을 보면 똑같은 프로그램을 바탕으로 실행한 프로세스임에도 불구하고, code, data, files 부분을 각각 갖고 있다. 이때 자원 낭비를 줄이고자 등장한 개념이 Threads(스레드)이다.
- code : 실행 중에 바뀌지 않기 때문에 1개만 존재하면 된다.
- data, files: 프로세스마다 다르기 하지만 자원 공유가 가능하기 때문에 1개만 존재하면 된다.
- registers, stack: 실행시마다 달라지며, 공유 불가능하기 때문에 각각 존재해야 한다.
- 이러한 점을 고려하면 아래와 그림과 같이 하나의 프로레스로 표현 가능하다. 이때 registers와 stack 부분을 합쳐서 Threads라고 한다.
- 스레드는 한 번의 실행을 나타내는 registers와 stack을 포함하는 개념이고, 그림에서 곡선 모양이 Threads를 의미한다.
- 이러한 그림을 Multithreaded process라고 한다.
- 커널은 일반적으로 멀티 스레드로 구분됨
멀티스레드의 장점
- Responsiveness(응답성 증가) : (기다리지 않고 다른 동작이 별로도 동작을 하기 때문에)
- Resource Sharing (자원 공유) : 프로세스와 달리 요청 없이 자연스럽게 자원을 공유할 수 있다.
- Economy (경제성) : 프로세스를 생성하기 위해서는 많은 비용이 들지만, 스레드들은 자원을 공유하기 때문에 경제적이다.
멀티스레드의 대표적인 사용 사례 (web server)
- 새로운 요청이 올 때 멀티스레드를 사용하여 클라이언트와 통신을 함
출처 - 공룡 책 (Operating System Concepts)
반응형
'CS > OS' 카테고리의 다른 글
[OS]프로세스 간 통신(Interprocess Communication) (0) | 2021.04.30 |
---|---|
[OS]프로세스 연산 (Operations on Processes ), 시스템 콜(System Call) (0) | 2021.04.30 |
[OS]프로세스(Process)란? (0) | 2021.04.29 |
[OS]멀티프로그래밍(Multiprogramming) (0) | 2021.04.27 |
[OS]운영체제 구조 (Operating System Structure) (0) | 2021.02.19 |