-
[OS] 스레드와 멀티프로세스, 멀티스레드운영체제 2023. 3. 19. 13:10728x90반응형
오늘은 스레드에 대해서 공부해 볼 겁니당🤨. 스레드는 프로세스를 구성하는 실행의 흐름 단위인데, 정확한 의미와 멀티스레드와 멀티프로세스의 차이도 알아봅시당🧐스레드란?
- 프로세스를 구성하는 실행의 흐름 단위
- 하나의 프로세스는 여러 개의 스레드를 가질 수 있음
- 스레드를 이용하면 하나의 프로세스에서 여러 부문을 동시에 실행할 수 있음
프로세스와 스레드
🧲 단일 스레드 프로세스
프로세스가 하나의 실행 흐름을 가지고 한 번에 하나의 부분만 실행되는 프로세스
🧲 멀티스레드 프로세스
스레드라는 개념이 도입된 후, 하나의 프로세스가 여러 일을 동시에 처리하게 된 프로세스
🧲 스레드의 구성- 스레드 ID
- 프로그램 카운터 및 레지스터 값
- 스택
프로세스의 스레드들은 실행에 필요한 최소한의 정보(프로그램 카운터를 포함한 레지스터, 스택)만을 유지한 채 프로세스 자원을 공유하며 실행됩니다. 프로세스의 자원을 공유한다는 점이 스레드의 핵심입니다.
최근 많은 운영체제는 CPU를 처리할 작업을 전달할 때 프로세스가 아닌 스레드 단위로 전달합니다.✋🏻여기서 잠깐, 리눅스는 조금 다르다.
리눅스는 프로세스와 스레드 모두 실행의 문맥이라는 점에서 동등하다고 간주하고 이 둘을 크게 구분 짓지 않습니다. 프로세스와 스레드라는 말 대신 태스크 (task)라는 이름으로 통일하여 부릅니다.
멀티프로세스와 멀티스레드
컴퓨터는 실행 과정에서 여러 프로세스가 동시에 실행될 수 있고, 그 프로세스를 이루는 스레드는 여러 개 있을 수 있습니다. 이때 여러 프로세스를 동시에 실행하는 것을 멀티프로세스(multiprocess), 그리고 여러 스레드로 프로세스를 동시에 실행하는 것을 멀티스레드(multithread)라고 합니다.
🤔 그렇다면, 동일한 작업을 수행하는 단일 스레드 프로세스 여러 개를 실행하는 것과 하나의 프로세스를 여러 스레드로 실행하는 것은 무엇이 다를까요?
스레드끼리는 자원을 공유한다는 점에서 큰 차이가 발생합니다.
프로세스를 fork하여 같은 작업을 하는 동일한 프로세스 두 개를 실행하면 코드 영역, 데이터 영역, 힙 영역 등을 비롯한 모든 자원이 복제되어 메모리에 적재됩니다. 한 마디로 PID와 저장된 메모리 주소만 제외하면 모든 것이 동일한 프로세스 두 개가 통째로 메모리에 적재되는 것이 됩니다. 같은 프로그램을 위한 똑같은 내용이 중복 적재되어 있다는 것은 낭비일 수 있습니다.
프로세스의 자원을 공유한다는 특성은 때로는 단점이 될 수도 있는데, 멀티프로세스 환경에서는 하나의 프로세스에 문제가 생겨도 다른 프로세스에는 지장이 적거나 없지만, 멀티스레드 환경에서는 하나의 스레드에 문제가 생기면 프로세스 전체에 문제가 생길 수 있습니다.LIST'운영체제' 카테고리의 다른 글
[OS] CPU 스케줄링 알고리즘의 종류 (0) 2023.03.26 [OS] CPU 스케줄링이란? | 선점형 스케줄링과 비선점형 스케줄링 (0) 2023.03.25 [OS] 프로세스 상태와 계층 구조 (0) 2023.03.18 [OS] 프로세스의 메모리 영역, 정적 할당 영역과 동적 할당 영역 (0) 2023.03.12 [OS] 프로세스와 프로세스 제어 블록(PCB), 문맥 교환 (2) 2023.03.11