IT공부/IT서적

[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 11장. 쓰레드의 이해

shine94 2025. 2. 4. 13:37

* 해당 글은 윤성우의 뇌를 자극하는 윈도우즈 시스템 프로그래밍 도서를 읽고 정리한 글입니다

   https://product.kyobobook.co.kr/detail/S000001223395

 

뇌를 자극하는 윈도우즈 시스템 프로그래밍 | 윤성우 - 교보문고

뇌를 자극하는 윈도우즈 시스템 프로그래밍 |

product.kyobobook.co.kr

 

 

 

 

 

* 쓰레드가 실행할 수 있는 환경을 제공하는 것이 프로세스이고, 그 환경 안에서 스레드가 동작한다

 

* 멀티 프로세스 운영체제 기반 프로그램의 문제점과 대안

   [문제] 빈번한 컨텍스트 스위칭(Context Switching)은 성능 저하를 유발

   [해결책] 컨텍스트 스위칭에 소요되는 시간을 줄이기 위해 저장하고 복원하는 컨텍스트 정보의 개수를 줄이자

   [탄생] 이 니즈를 통해 쓰레드가 만들어짐

 

* 쓰레드

   하나의 프로그램 내에서 둘 이상의 실행 흐름을 두는 것

   쓰레드들 사이에는 공유하는 요소들이 있고 때문에 컨텍스트 스위칭에 걸리는 시간이 프로세스보다 짧다

   (1) 메모리 관점

        - 스택을 독립적으로 할당

          함수 호출시 필요한 메모리 영역

          따라서, 실행 흐름의 추가를 위한 최소 조건이 독립된 스택을 제공한다

        - 코드, 데이터, 힙 영역 공유

   (2) Windows 관점

        - 프로세스는 단순히 스레드를 담는 상자다

          ㄴ 실제 프로그램의 흐름을 형성하는 것은 쓰레드다

        - 프로세스는 상태를 지니지 않는다

          ㄴ 상태를 지니는 것은 쓰레드다

        - 실행의 중심에 있는 것은 프로세스가 아닌 쓰레드다

        - Windows에서는 쓰레드가 존재하지 않는 프로세스란 있을 수 없다

          ㄴ 프로세스 생성과 동시에 main 함수를 호출해 줄 쓰레드를 생성한다

 

* 커널 레벨(Kernel Level) 쓰레드

   하나의 프로세스에서 할당된 총 메모리 공간 중에서 유저 영역을 제외한 나머지 영역을 커널영역이라고 한다

   ㄴ 운영체제라는 하나의 소프트웨어를 실행시키기 위해서 필요한 메모리 공간을 커널 영역이라고 한다

   [장점] 커널에서 직접 제공해주기 때문에 안정성과 다양한 기능성 제공

   [단점] 유저모드와 커널모드로의 전환이 빈번하게 일어남에 따른 성능 저하

 

* 유저 레벨(User Level) 쓰레드

   사용자에 의해서 할당되는 메모리 공간을 의미한다

   ㄴ 코드영역, 데이터 영역, 스택 및 힙 영역을 가리켜 유저 영역이라고 한다

   [장점] 유저 모드에서 커널 모드로 전환이 필요 없기 때문에 성능이 좋다

   [단점] 커널에 의해 블로킹되면 프로세스 전부가 블로킹이 된다