[기술면접] 운영체제 : 예상 질문과 답변(프로세스, 스레드)

Alice·2023년 9월 24일
0

프로세스가 무엇인가요?

디스크에 파일 형태로 저장된 프로그램이 메모리를 할당받고 실행상태가 되면 그것을 프로세스라 합니다.


프로세스와 스레드의 차이점을 말해보세요.

프로세스는 고유의 코드, 데이터, 힙, 스택 영역을 할당받습니다. 또한 프로세스는 하나 이상의 스레드로 구현되어있습니다. 스레드는 프로세스 내에서 실행되는 작업 단위입니다. 스택 영역만을 따로 할당받고, 나머지 코드, 힙, 데이터 영역은 프로세스 내부의 다른 스레드들과 공유합니다.


멀티 프로세스와 멀티 스레드의 차이점과 장단점을 말해보세요.

멀티 프로세스는 하나의 프로세스가 중단되어도 다른 프로세스에 영향을 주지 않고 연이어 실행된다는 장점이 있습니다. 하지만 멀티 스레드보다 많은 공간과 CPU를 차지합니다. 또한 프로세스간 컨텍스트 스위칭에 필요한 오버헤드가 크다는 단점이 존재합니다.

멀티 스레드는 멀티 프로세스보다 적은 메모리를 차지하고 컨텍스트 스위칭의 오버헤드가 적습니다. 하지만 하나의 스레드가 시스템 콜 등의 작업으로 block되면 프로세스의 나머지 스레드들이 전부 block되는 단점이 있습니다.


모든 멀티 스레드 방식은 하나의 스레드가 중단되면 전체 스레드가 중단되는건가요?

아닙니다. 말씀드린 멀티 스레드 방식은 유저레벨 스레드의 방식에 해당됩니다. 유저레벨 스레드는 커널이 사용자 프로세스의 스레드를 인지하지 못하고 프로세스만 인지하기 때문에 하나의 스레드가 중단되면 전체 프로세스의 스레드가 중단된다는 단점이 존재합니다.

하지만 커널레벨 스레드는 다릅니다. 커널레벨 스레드는 커널에서 스레드 정보와 프로세스 정보를 모두 관리하기 때문에 하나의 스레드가 중단되어도 다른 스레드까지 중단되지 않고 정상적으로 작동합니다.


방금 말씀하신 유저 레벨 스레드와 커널 레벨 스레드의 차이점과 장단점을 말씀해주세요.

유저레벨 스레드는 프로세스 하나당 하나의 커널 스레드가 할당됩니다. 프로세스 내부에 스레드 라이브러리가 있어서 커널의 도움없이 스레드를 스케줄링할 수 있습니다. 유저레벨 스레드 방식에서는 TCB는 프로세스 내부에서, PCB는 커널에서 관리합니다.

유저레벨 스레드 방식은 TCB정보만 저장/복구하면 되기에 컨텍스트 스위칭 오버헤드가 작습니다.또한 운영체제의 영향을 덜 받기에 이식성이 좋습니다. 하지만 하나의 스레드가 중단되는 경우 해당 프로세스의 모든 스레드가 중단된다는 단점이 있습니다.

커널레벨 스레드는 프로세스 스레드 하나당 하나의 커널 스레드가 할당됩니다. 커널이 스레드의 생성과 스케줄링을 관리합니다. TCB와 PCB를 모두 커널에서 관리합니다. 스레드가 시스템 콜의 호출 등으로 중단되어도 나머지 프로세스의 스레드는 문제없이 작동합니다. 하지만 유저레벨 스레드에 비해 컨텍스트 스위칭 오버헤드가 큽니다. 이는 유저모드와 커널모드를 전환하기 떄문입니다.


방금 말씀하신 TCB와 PCB의 차이점이 무엇인가요?

운영체제의 스케줄러가 관리해주는 것이 PCB입니다. 운영체제의 스케줄러에 의해 컨텍스트 스위칭이 되는 프로세스의 정보 단위가 PCB입니다. TCB는 프로세스 내부의 스레드 라이브러리에 의해 스케줄링됩니다. 스레드 라이브러리에 의해 컨텍스트 스위칭 되는 정보의 단위가 TCB입니다.

TCB는 스레드의 상태, PCB를 가리키는 포인터, 스택, 레지스터 등 스레드의 정보를 저장하는 자료구조입니다.

profile
SSAFY 11th

0개의 댓글