Skip to content

Latest commit

 

History

History
83 lines (46 loc) · 4.63 KB

05. 스레드 (2022-12-30).md

File metadata and controls

83 lines (46 loc) · 4.63 KB

질문 리스트


💻 스레드 생성과 프로세스 생성의 차이에 대해 설명해주세요(예지)


프로세스와 스레드는 비슷한 생성 과정을 거칩니다.

각 프로세스는 별도의 주소 공간에서 실행됩니다. 반면에, 스레드는 하나의 프로세스 내의 주소 공간이나 자원들을 공유합니다.

따라서 스레드는 프로세스 내에서 스택 만 따로 할당받고 코드, 데이터, 힙 영역은 공유합니다.




💻 멀티프로세스와 멀티 스레드의 차이점에 대해 설명해주세요 (지윤)


티 스레드는 자원을 공유하기 때문에 하나의 스레드가 문제가 생기면 전체 프로세스에 영향을 끼치고, 멀티 프로세스는 자원을 독립적으로 메모리 영역을 가지기 때문에 하나의 프로세스에 문제가 생겨도 다른 프로세스에 영향을 끼치지 않습니다.




💻 프로세스와 스레드의 차이에 대해 설명해주세요 (소연)


프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고, 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위입니다.

프로세스는 운영체제로부터 메모리, 주소 공간 등을 할당받고, 스레드는 할당받은 자원들을 내부 스레드끼리 공유하면서 실행됩니다.




💻 스택을 스레드마다 독립적으로 할당하는 이유가 무엇인가요?(지윤)


스택은 함수 호출시 사용되는 인자, 리턴값 및 지역 변수 등을 저장하기 위해 사용되는 메모리 공간입니다.

독립적인 함수 호출을 위해서 입니다.




💻 스레드의 장점에 대해 설명해주세요 (예지)


하나의 프로세스 내에서 여러 개의 실행흐름을 가질 수 있기 때문에, 특정 작업에서 작업을 오랜 시간동안 수행 중이더라도 다른 스레드를 통해 사용자의 요청에 즉각적으로 반응할 수 있습니다.

프로세스 안의 자원을 공유하기 때문에 자원을 효율적으로 사용할 수 있습니다. 또한 IPC와 같이 자원 공유를 위한 번거로운 작업이 불필요합니다.

스레드를 생성하는 것이 프로세스를 생성하는 것보다 비용이 적게 들며, thread switching이 context switching보다 오버헤드가 적습니다.

다중 CPU 구조에서 각각의 스레드가 다른 프로세스에서 병렬로 수행될 수 있으므로 병렬성이 증가합니다.




💻 유저 스레드와 커널 스레드에 대해 설명해주세요. (소연)


사용자 스레드는 커널 영역의 상위에서 지원되며 일반적으로 사용자 레벨의 라이브러리를 통해 구현됩니다. 커널 스레드는 운영체제가 지원하는 스레드 기능으로 구현됩니다.

커널 스레드는 커널이 직접 제공해 주기 때문에 안정성이 있지만 유저 모드에서 커널 모드로의 전환이 빈번하게 이뤄져 성능 저하가 발생합니다. 유저 스레드는 모드 간의 전환이 없어 성능 이득이 발생하지만 하나의 스레드가 커널에 의해 블로킹 되면 프로세스 전체가 블로킹되고, 이를 해결하려면 프로그래밍이 어려워지고 커널 레벨 쓰레드에 비해 결과 예측이 어려워집니다.




💻 운영체제 관점에서 스레드가 프로세스의 자원을 공유하는 이유는 무엇일까요? (아람)


CPU의 최소 작업 단위는 스레드이기 때문에 CPU의 스케줄링 단위도 스레드입니다.

그러나 운영체제의 최소 작업 단위는 프로세스이기 때문에, 운영체제는 프로세스에 메모리 영역을 할당하고 이 메모리 영역을 스레드들이 공유하게 됩니다.




💻 Context Switching이란 무엇이고, Process와 Thread의 Context Switching에는 어떤 차이가 있는지 간단히 설명하세요. (아람)


Context Switching이란 CPU 스케줄링에 의해 현재 실행되고 있는 프로세스(또는 스레드)를 중단시키고 다른 프로세스(또는 스레드)를 실행하는 것을 말합니다.

멀티 프로세스 환경에서는 현재 실행되고 있는 프로세스의 PCB에 PC register에 있는 정보를 기록하고 다른 프로세스의 PCB 정보를 PC register에 저장해 실행합니다. 만약 프로세스가 여러 개의 스레드로 나누어져 있다면 TCB의 정보도 함께 변경해야 합니다.

멀티 스레드 환경에서는 스레드의 TCB의 정보만 변경하면 됩니다.