슈뢰딩거의 고등어

[운영체제] 프로세스 vs 쓰레드 본문

cs 면접

[운영체제] 프로세스 vs 쓰레드

슈뢰딩거의 고등어 2022. 2. 18. 15:26

면접 예상 질문

프로세스와 쓰레드의 차이를 설명하시오.

쓰레드가 필요한 경우에 대해서 예를 들어 설명하세요.

프로세스를 여러 개 띄우는 경우와 쓰레드를 여러 개 띄우는 경우에 대한 차이를 설명하시오


답변 핵심 Keyword

문맥 전환 (context switching), 멀티 쓰레드, 싱글 쓰레드


컴퓨터를 구동하고 있는 것은 cpu, 메모리, 하드디스크 등으로 구성된 하드웨어와 이 하드웨어들을 구동 시켜주는 운영체제 그리고 운영체제 위에서 실행되고 있는 프로그램 즉 소프트웨어로 구성이 됩니다.

소프트웨어가 실행되고 있지 않을 때는 프로그램은 파일 형태로 하드디스크에 저장이 되어있습니다. 이 프로그램이 실행이 되는 순간, 프로그램이 메모리에 적재가 되고 실행이 되는데 이것을 프로세스라고 합니다. 프로세스는 실행되고 있는 프로그램으로 생각하면 됩니다.

 

각각의 프로세스는 자신의 실행 이미지 일부와 실행에 필요한 추가적인 메모리 공간을 가지고 있습니다. 이것은 각 프로세스마다 구별이 되며 해당 프로세스가 접근하고자 하는 파일, I/O 장치들에 대해서 또한 프로세스 단위로 할당받아 관리가 됩니다.

 

프로세스와 쓰레드의 차이를 설명하시오.

프로세스는 os 에서 자원을 할당받는 작업의 단위이고. 쓰레드는 그 프로세스가 할당받은 자원을 사용하는 실행의 단위입니다.

예를 들어 한 Applictaion 을 프로세스라 할 수 있고, 그 어플리케이션의 분기처리를 쓰레드라고 할 수 있습니다. 프로세스는 하나 이상의 쓰레드를 가질 수 있습니다. 

여러개의 프로그램이 동작하고 있다는 것은 여러 프로세스가 띄워져 있다는 것입니다.

한 프로세스 내의 쓰레드는 stack 을 제외한 (code, data, heap) 자원을 공유한다는 점에서 프로세스와 차이가 있습니다.

 

쓰레드가 필요한 경우에 대해서 예를 들어 설명하세요.

쓰레드는 자원을 공유하기 때문에 멀티 쓰레딩을 통해 자원 낭비를 줄일 수 있고, 성능 향상을 할 수 있습니다. 또한, 멀티 프로세싱의 경우 IPC (소켓통신 등) 의 방법으로 프로세스끼리의 통신을 해야 상태를 공유할 수 있는 반면, 쓰레드는 메모리 영역을 공유하기 때문에 각 작업에 대한 상태를 알기가 쉽습니다. 하지만 자원을 공유하는 것이 좋은 장점이기도 하지만 deadlock 교착상태를 발생시킬 수 있기 때문에 주의해야합니다. 이러한 교착상태를 해결하기 위해서 mutex, semaphore 를 사용하기도 합니다. mutex 는 공유 자원에 하나의 쓰레드만 접근할 수 있도록 하여 동시에 두 자원 사용에 충돌이 일어나지 않도록 하는 기법입니다. 

멀티 쓰레드를 사용하여 하나의 프로세스 안에서 여러개의 루틴을 동시에 수행해서 성능을 향상할 수 있습니다.

또한 네트워크나 화면처리를 별도 쓰레드로 처리하여 통신을 기다리는 동안 화면이 멈추지 않게 할 수 있습니다.

 

프로세스를 여러 개 띄우는 경우와 쓰레드를 여러 개 띄우는 경우에 대한 차이를 설명하시오

쓰레드는 자원을 공유하기 때문에 context-switching 이 빠릅니다.

'cs 면접' 카테고리의 다른 글

[기업조사] 롯데정보통신  (0) 2022.02.23
[프로그래밍 언어] c, c++, java, python 의 차이점은?  (0) 2022.02.20
[알고리즘] 정렬  (0) 2022.02.18
[자료구조] Tree  (0) 2022.02.13
[자료구조] 배열 vs 링크드리스트  (0) 2022.02.13
Comments