본문 바로가기

Operating System

[OS] 쓰레드

쓰레드
프로세스는 하나의 제어를 위한 쓰레드로 돌아가는 실행중인 프로그램
하지만 현대의 OS같은 경우에는 제어를 위해서 n개의 쓰레드로 돌아간다.

그럼 쓰레드가 뭔데?
경량화된 프로세스 -> CPU의 이용을 하는데 있어서 기본적인 단위!
쓰레드도 ID가 있고 PC(Program Counter), 레지스터 셋, 스택 메모리 공간을 할당받는다.

사용 예시)웹서버

멀티 스레딩 프로그래밍의 장점
1. 반응성이 높아진다. 
-> 실행을 지속시키는 것이 가능하다.
2. 자원의 공유성 
-> 스레드는 프로세스의 자원 공간을 어느 정도 공유를 하기 때문에, 메모리-공유나 또는 메세지 패싱같은 것이 더 간단해진다.
3. 경제성
-> 컨텍스트 스위칭을 하는데 드는 값이 멀티 프로세싱보다 싸다. (오버헤드가 적다)
4. 확장성
-> 멀티프로세서 아키텍처 상에서 프로세스는 이득을 보기 쉽기 때문이다.

쓰레드 같은 경우에는 공부하기 적합한 언어로 보통 Java를 예시로 든다.
그 전에 많이 사용하던건 C++인데..... 문제는 얘는 뭐 멀티스레딩이 유행하기 전에 나온 언어다보니까,
모던 C++ 정도 와서는 어느 정도 해결이 되었지만 그럼에도 사실 Java, C#보다는 공부하기 어려워...

멀티 코어 시스템 상에서 멀티스레딩이란?
진보된 동시성을 위한 멀티코어의 더욱더 효과적인 사용법

4개의 스레드가 응용 프로그램에 할당 경우
싱글코어 같은 경우 한번에 하나의 스레드를 직렬적으로 실행한다.
멀티코어 환경에서는 몇몇의 쓰레드가 평행하게 실행될 수 있다.

멀티 코어 상에서는 프로그래밍을 할 때 고려해야 할 점
1. 작업 식별 : find area는 별도의 작업으로 나눌 수 있다.
2. 밸런싱 : 동일한 값을 가지고 동일한 일을 했을 경우 동일한 결과를 보장해야 한다.
3. 데이터 splitting : 데이터들은 반드시 분리된 코어들 마다 나눠져서 돌아가야 한다.
4. 데이터 의존성 : 작업 실행에 있어서 데이터 종속성을 수용하도록 동기화가 되었는지를 보장해야한다.
5. 테스트와 디버깅 : 싱글 스레딩 기법보다 어렵기 때문이다.

'Operating System' 카테고리의 다른 글

[OS] CPU 스케쥴링  (0) 2022.02.08
[C#, OS] Monitor  (0) 2022.02.08
[OS] 프로세스 간 통신  (0) 2022.01.11
[OS] Process란  (0) 2022.01.06
[Operating System] 1. OS란 무엇인가  (0) 2021.12.21