-
[OS] 쓰레드와 멀티쓰레드Computer Science/OS 2023. 1. 5. 14:25
http://www.kocw.net/home/cview.do?lid=29d9a718cff884c3
운영체제
운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각
www.kocw.net
Process2
동기식 입출력과 비동기식 입출력, 프로세스 스케줄링 큐의 모습, Thread
http://www.kocw.net/home/cview.do?lid=54e1a4abcd59272d
운영체제
운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각
www.kocw.net
Process 3
Thread, Single and Multithreaded Processes, Benefits of Threads, Implemetation of Threads
쓰레드
- 프로세스 내에서 실행되는 흐름의 단위
- 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행 할 수 있다. 이러한 실행 방식을 멀티스레드 라고 한다.
- 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(waiting) 상태인 동안에도 동일한 테스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다.
- 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다.
- 스레드를 사용하면 병렬성을 높일 수 있다
멀티 쓰레드의 장점
- 응답성
- 프로세스의 일부가 blocked 상태여도 실행을 하는 것이 가능
- e.g) multi-threaded Web
- 자원 공유
- 스레드들은 프로세스의 리소스들을 공유하므로, 이는 메시지를 전달하거나 메모리를 공유하는 것보다 쉬움
- 경제성
- 스레드를 생성하는 것이 프로세스를 생성하는 것보다 비용이 적게 들며, thread switching(스레드 전환)이 context switching보다 오버헤드가 적다.
오버헤드: 어떤 처리를 하기 위해 들어가는 간적적인 처리시간, 메모리 등을 의미
- 확장성
- 프로세스가 멀티 프로세서 구조의 이점을 적극적으로 활용할 수 있다.
쓰레드를 구현할 수 있는 방법
- 커널 스레드
- 운영체제가 지원하는 스레드 기능으로 구현되며, 커널이 스레드의 생성 및 스케줄링 등을 관리
- 유저 스레드
- 커널 영역의 상위에서 지원되며 일반적으로 사용자 레벨의 라이브러리를 통해 구현되며, 라이브러리는 스레드의 생성 및 스케줄링 등에 관한 관리 기능을 제공한다.
📝 멀티 프로세스 vs 멀티 쓰레드
멀티프로세스
- 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 1개의 작업을 처리하도록 하는 것
- 특징
- 1개의 프로세스가 죽어도 자식 프로세스 이외의 다른 프로세스들은 계속 실행된다.
- context switching을 위한 오버헤드(캐시 초기화, 인터럽트 등)이 발생한다.
- 프로세스는 각각 독립적인 메모리를 할당받았기 때문에 통신하는 것이 어렵다.
멀티쓰레드
- 하나의 프로그램을 여러 개의 쓰레드로 구성하여 각 쓰레드가 1개의 작업을 처리하도록 하는 것
- 특징
- 프로세스를 위해 자원을 할당하는 시스켐톨이나 context switching의 오버헤드를 줄일 수 있다.
- 쓰레드는 메모리를 공유하기 때문에 통신이 쉽고 자원을 효율적으로 사용할 수 있다.
- 하나의 쓰레드에 문제가 생기면 전체 프로세스가 영향을 받는다.
- 여러 쓰레드가 하나의 자원에 동시에 접근하는 경우, 자원 공유(동기화)의 문제가 발생할 수 있다.'Computer Science > OS' 카테고리의 다른 글
[OS] CPU 스케줄링 - 1 (CPU 스케줄러, 스케줄링 성능평가) (0) 2023.01.17 [OS] 프로세스의 생성과 프로세스 간의 협력 (0) 2023.01.12 [OS] 운영체제 프로세스, 스케줄러 (0) 2022.12.29 [OS] 시스템 구조와 프로그램 실행 (0) 2022.12.29 [OS] 컴퓨터 시스템 구조 (0) 2022.12.27