Operating System(OS)에 이어서 Part2에는 다음과 같은 순서*로 알아보겠습니다.
*공룡책을 기반
[프로세스 관리]
1. 프로세스
2. 스레드와 병행성
3.CPU 스케줄링
[프로세스 동기화]
4. 프로세스동기화
5. 동기화 예제
6. 교착상태
[메모리 관리]
7. 메인 메모리
8. 가상 메모리
[저장장치 관리]
9. 대용량 저장장치 구조
10. 입출력 시스템
[파일시스템]
11. 파일시스템
12. 파일시스템 구현
Operating System(OS) Part2 - 2. 스레드와 병행성
1. 개요
스레드는 프로세스 내에서 실행되는 작은 실행 단위로, 독립적인 실행 흐름을 가지며 여러 작업을 동시에 처리하는 것을 가능하게 합니다. 병행성은 여러 작업이 동시에 진행되는 것을 의미하며, 스레드는 이를 구현하는 주요 기술 중 하나입니다.
2. 스레드(Thread)
스레드는 프로세스 내에서 실행되는 경량 프로세스로, 프로세스의 자원을 공유하면서 독립적인 실행 흐름을 갖습니다.
스레드는 프로세스 내의 코드, 데이터, 파일 등의 자원을 공유하며, 별도의 주소 공간을 가지지 않습니다.
3. 멀티(Multithread)
멀티스레딩은 하나의 프로세스 내에서 여러 스레드가 동시에 실행되는 것을 의미합니다.
이는 프로세스의 자원을 효율적으로 활용하여 병렬성을 구현하는 데 사용됩니다. 멀티스레딩은 여러 개의 스레드를 갖는 구조로 이루어져 있습니다.
4. 프로세스와 스레드의 비교
프로세스는 독립적인 주소 공간을 가지며, 각각의 프로세스는 자신의 메모리 공간을 가집니다.
스레드는 프로세스 내에서 실행되며, 프로세스의 자원을 공유하며 별도의 주소 공간을 가지지 않습니다.
프로세스 간의 전환이 스레드 간의 전환이 보다 더 많은 시스템 자원을 필요로 합니다.
따라서 스레드를 사용하면 자원 사용량을 줄일 수 있습니다.
5. 스레드의 종류
5.1. 사용자 레벨 스레드 (User-Level Thread)
- 특징: 사용자 수준에서 스레드 관리를 수행하는 방식입니다.
- 장점: 빠른 생성 및 스레드 전환 속도, 사용자가 스레드 관리에 대한 유연성을 가집니다.
- 단점: 블로킹 시스템 호출 시 전체 프로세스가 블로킹될 수 있습니다.
5.2. 커널 레벨 스레드 (Kernel-Level Thread)
- 특징: 커널이 스레드 관리를 수행하는 방식입니다.
- 장점: 블로킹 시스템 호출 시 해당 스레드만 블로킹되며, 다른 스레드는 계속 실행될 수 있습니다.
- 단점: 스레드 생성 및 전환에 대한 오버헤드가 발생할 수 있습니다.
https://link.coupang.com/a/bEUIk9
* 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.
6. 멀티스레드 모델
6.1. Many-to-One Model
여러 사용자 레벨 스레드가 하나의 커널 스레드에 매핑되는 모델입니다. 스레드 간 병렬성이 보장되지 않을 수 있습니다.
6.2. One-to-One Model
각 사용자 레벨 스레드가 하나의 커널 스레드에 매핑되는 모델입니다. 병렬성이 보장되지만, 스레드 생성에 비용이 큽니다.
6.3. Many-to-Many Model
여러 사용자 레벨 스레드가 여러 커널 스레드에 매핑되는 모델입니다. 병렬성과 확장성을 모두 제공합니다.
6.4. Two-level Model
사용자 레벨 스레드와 커널 레벨 스레드를 혼합한 모델로, 유연성과 효율성을 조합합니다.
7. 스레드 풀(Thread Pools)
스레드 풀은 사전에 생성된 스레드의 집합을 의미합니다. 이를 사용하여 스레드를 효율적으로 관리하고 작업을 처리할 수 있습니다.
스레드 풀은 작업을 제출하면 풀에서 사용 가능한 스레드를 할당하여 작업을 처리합니다.
작업이 완료되면 스레드는 다시 풀에 반환됩니다.
이를 통해 스레드 생성 및 소멸에 따른 오버헤드를 줄일 수 있으며, 시스템 자원을 효율적으로 활용할 수 있습니다.
8. 종합
스레드는 병행성을 구현하고, 프로세스 내에서 독립적인 실행 흐름을 가질 수 있게 해주는 중요한 개념입니다.
사용자 레벨 스레드와 커널 레벨 스레드는 각각의 장단점을 가지며, 멀티스레드 모델은 시스템의 요구사항에 따라 선택되어야 합니다. 스레드 풀은 스레드 생성 및 관리에 따른 오버헤드를 줄이고, 시스템 자원을 효율적으로 활용할 수 있는 방법 중 하나입니다.
스레드와 관련된 개념을 잘 이해하고, 적절히 활용함으로써 시스템의 성능을 향상하고, 병행성을 구현할 수 있습니다.
'IT Auditor Study > 운영체제' 카테고리의 다른 글
[Part2-공룡책] 3. CPU 스케줄링(2/2) - Operating System(OS) (2) | 2024.06.06 |
---|---|
[Part2-공룡책] 3. CPU 스케줄링(1/2) - Operating System(OS) (0) | 2024.06.06 |
[Part2-공룡책] 1.프로세스 - Operating System(OS) (0) | 2024.06.06 |
6. Operating System(OS) - 6. 주요용어 (0) | 2024.04.16 |
5. Operating System(OS) - 5. 시장점유율 (0) | 2024.04.14 |