본문 바로가기

멀티쓰레드2

하드웨어 쓰레드와 소프트웨어 쓰레드 1. 코어와 하드웨어 스레드 (논리 프로세서) 스레드라는 단어가 하드웨어 단위에서 사용되는 경우도 있고, 위와 같이 소프트웨어적으로 사용되는 경우도 있다. 따라서 헷갈릴 수 있다. 그러나 서로 완전히 다른 개념이다. 멀티코어는 제어장치와 ALU와 같이 실제로 작업을 병렬적으로 처리할 수 있도록 CPU의 핵심 장치 자체를 여러 개 두는 것을 말한다. 시분할 방식이 아니라 정말로 여러 개의 코어에 작업을 적재시키면 동시에 실행시킬 수 있다. 하드웨어에서 말하는 멀티쓰레드는 제어장치나 ALU까지 병렬적으로 두는 것은 아니다. 다만 온전하게 하나의 실행 단위가 수행되기 위한 레지스터 세트 여러 개를 물리적으로 배치했다. 작업관리자로 내 컴퓨터의 코어 개수와 하드웨어 스레드 개수를 확인할 수 있다. 코어는 4개 .. 2023. 12. 27.
[OS] - 운영체제의 멀티 쓰레드 스케쥴링 및 개수 제약 1. 커널 쓰레드와 사용자 쓰레드 차이 과거 오래된 유닉스 시스템에서는 멀티쓰레드를 지원해주지 않았고 멀티프로세스만을 지원했다. 그러나 시간이 흘러 멀티쓰레드를 지원해주는 OS가 생겨나면서 커널이 쓰레드 단위를 인식하고 직접 관리나 스케쥴링을 해주는 서비스를 제공해줬다. 이것이 커널 쓰레드다. 물론 커널 쓰레드를 거치지 않고도 쓰레드 기능을 구현해볼 수는 있다. 이것이 사용자 쓰레드다. 하지만 사용자 쓰레드는 사용하는 프로그래밍 언어를 통해 직접 구현해보거나, 혹은 쓰레드를 관리해주는 라이브러리를 가져와 사용해야 한다. 현대 운영체제는 쓰레드와 프로세스를 모두 관리해주기 때문에 사용자 공간 자체에서 직접 쓰레드를 구현해 사용하는 경우는 없는 편이다. 게다가 사용자 쓰레드를 커널과 독립적으로 사용하는 경우.. 2023. 12. 27.