- 프로세스란 무엇인가요?
프로세스를 설명하기 전, 프로그램은 디스크에 저장된 실행 파일을 의미합니다. 프로그램을 실행시키기 위해 메모리에 프로그램을 적재하고 CPU를 할당받아야 하는데, 이러한 실행 중인 프로그램을 프로세스라고 합니다.
- 스레드란 무엇인가요?
먼저 프로그램은 디스크에 저장된 실행 파일, 프로세스는 이러한 프로그램이 실행되고 있는 상태, 스레드는 프로그램이 동작할 수 있는 실행의 단위입니다. 프로그램이 동작할 때 컴퓨터가 이해할 수 있는 명령어로 해석되고, 이러한 명령어를 스레드라고 부릅니다.
- 프로세스와 스레드 차이점에 대해 설명해 주세요.
여러 개의 스레드를 구성해 프로세스가 됩니다. 먼저 프로세스가 생성이 되면 메모리에 각 프로세스마다 독립적인 영역이 할당됩니다. 하지만 스레드는 생성 시 메모리 영역 중 스택 영역만 독립적으로 할당받고, 스택을 제외한 코드, 데이터, 힙 영역을 공유하면서 동작합니다.
따라서 각 프로세스는 독립적으로 메모리를 할당받기 때문에, 서로의 자원을 필요로 할 때 위해 IPC 통신이 필요로 합니다. 하지만 스레드는 코드, 힙, 데이터 영역을 공유하기 때문에, 공유 자원에 대한 동기화를 지원해야 합니다.
- 멀티 스레드란 무엇인가요?
컴퓨터를 할 때 여러 개의 프로그램이 동시에 실행되는 것처럼 보입니다. 하지만 실제로 CPU는 한 번에 한 가지 일만 처리할 수 있는데, 이는 빠른 속도로 여러 개의 스레드를 교체해 가면서 실행하기 때문에 동시에 실행되는 것처럼 보이는 것입니다. 즉, 멀티 스레드는 CPU가 여러 개의 스레드를 교체해 가면서 작업을 처리하는 것을 의미합니다.
- 멀티 프로세스 대신 멀티 스레드를 사용해야 하는 이유는 무엇인가요?
멀티 프로세스 대신에 멀티 스레드를 이용해야 하는 가장 큰 이유는 컨텍스트 스위칭에 발생하는 비용이 적기 때문입니다. 컨텍스트 스위칭은 컴퓨터가 동시에 여러 일을 처리하지 못하기 때문에, 여러 프로그램이 동작하도록 프로세스나 스레드를 교체해 가면서 처리할 수 있도록 동작하는 것입니다. 각 스레드 정보를 저장해 둔 Thread Control Block의 크기가 프로세스보다 더 작아서 컨텍스트 스위칭에 드는 오버헤드도 더 작다는 장점을 가집니다.
- 멀티 스레드를 사용하는 이유는 무엇인가요?
멀티 스레드는 컨텍스트 스위칭에 필요한 비용이 작기 때문에 효율성이 좋다는 장점을 가집니다. 또한, 코드, 데이터, 힙 영역을 공유하기 때문에 응답 속도가 증가하고, 자원의 중복을 막을 수 있기 때문에 멀티 스레드를 이용합니다.
- 스레드 장단점을 말씀해 주세요.
스레드는 프로세스에서 실행되는 작업의 단위를 의미합니다. 따라서 프로세스보다 더 적은 정보를 가지고 있기 때문에, 컨텍스트 스위칭에 드는 비용이 더 작다는 장점을 가집니다. 또한, 코드, 데이터, 힙 영역을 공유하기 때문에 별도의 통신 없이 데이터를 공유해 경제성이 좋지만, 공유 데이터에 대한 동기화 문제가 발생할 수 있고, 하나의 데이터에 문제가 생길 경우 다른 스레드에 영향을 끼칠 수 있는 단점을 가지고 있습니다.
- Process Control Block에 저장되는 데이터를 아는 대로 말씀해 주세요.
프로세스의 PID 값, 상태 정보, 레지스터와 메모리 주소 등이 저장됩니다.
- Thread Control Block에 저장되는 데이터를 아는 대로 말씀해 주세요.
스레드의 PID 값, PC, SP 레지스터, 우선순위 등이 저장됩니다.
'면접 질문 > 운영체제' 카테고리의 다른 글
[OS/운영체제] 페이징과 세그먼트 면접 질문 및 답변 정리 (1) | 2024.02.07 |
---|---|
[운영체제/OS] 메모리와 가상 메모리 면접 질문 및 답변 정리 (0) | 2024.02.07 |
[운영체제/OS] 데드락과 기아 상태 면접 질문 및 답변 정리 (0) | 2024.02.01 |
[운영체제/OS] 동기화 문제 면접 질문 및 답변 (0) | 2024.02.01 |
[운영체제/OS] 운영체제 및 커널 면접 질문 및 답변 (0) | 2024.01.22 |
댓글