-
기술 면접 질문 정리카테고리 없음 2024. 3. 31. 23:00
프로세스의 구조에 대해 설명해주세요.
더보기프로세스는 스택(stack), 힙(heap), 데이터(data), 코드(text) 영역으로 구성되어 있습니다.
스택 영역은 함수 실행을 위한 임시 데이터가 저장되고,
힙 영역은 동적으로 할당된 데이터가 저장되고,
데이터 영역은 전역변수나 초기화된 데이터 등이 저장되고,
코드 영역에는 프로그램 코드가 저장됩니다.컨텍스트 스위칭에 대해 설명해 주세요.
더보기컨텍스트 스위칭은 여러 개의 프로세스가 실행될 때, CPU에서 당장 실행할 프로세스를 교체하는 기술입니다.
PCB(Process Control Block)에 현재 실행 중인 프로세스의 PID, PC(Program Counter), SP(Stack Pointer) 등의 데이터를 저장하고, 다음 실행할 프로세스 정보를 담은 PCB에서 데이터를 CPU에 업데이트 한 뒤 다음 프로세스를 실행시킵니다.
프로세스와 스레드의 차이에 대해 설명해 주세요.
더보기프로세스는 운영체제로부터 자원을 할당받아 실행하는 작업의 단위이고, Thread는 프로세스로부터 자원을 할당받아 실행하는 흐름 또는 실행의 단위입니다.
하나의 프로세스 내에서 Thread들은 Code, Data, Heap 영역을 공유하고, 해당 Thread만의 Stack 영역을 갖고 동작합니다. 그래서 하나의 프로세스 내에서 Thread 간에는 별도의 기술 없이 데이터 공유가 가능합니다.
프로세스 간 통신과 스레드 간 통신의 차이에 대해 설명해 주세요.
더보기프로세스 간에는 주소 공간이 분리되어 있기 때문에, 프로세스 간 통신을 위해서는 IPC라고 하는 별도의 기술을 사용해야 합니다. 그러나 Thread의 경우 하나의 프로세스 주소 공간 내에 Stack 영역을 제외한 Code, Data, Heap 영역을 공유하기 때문에 별도의 통신 기술이 필요하지 않습니다.
멀티 프로세싱과 멀티 스레드의 차이에 대해 설명해 주세요.
더보기멀티 프로세싱은 하나의 프로세스에서 실행되어야 할 작업들을 여러 개로 분리한 후에 각각의 CPU 코어에 넣어서 병행하여 실행되도록 하는 기법입니다.
멀티 스레드는 프로세스 주소 공간을 공유하고 있기 때문에, 스레드 간 통신을 위해 별도 기술을 사용할 필요는 없지만, 공유한 데이터를 읽고 쓰는 과정에서 동기화 이슈가 발생할 수 있는 반면, 멀티 프로세스는 IPC 기술을 사용해서 프로세스 간 통신을 해야 합니다.
만약 스레드 간 공유한 데이터를 읽기만 할 경우에는 동기화 이슈가 발생하지 않기 때문에 멀티 스레드를 사용하는 것이 좋지만, 데이터를 읽고 쓰는 작업이 빈번하다면, 동기화 기술을 많이 사용해야 하므로, 이 경우 데드락(deadlock)과 같은 비정상 동작이 일어날 수 있기 때문에 멀티 프로세싱을 고려해 보는 게 좋습니다.스레드 동기화에 대해 설명해 주세요.
더보기스레드 간 공유할 수 있는 데이터를 읽고 쓸 경우, 스레드의 실행 순서에 따라 공유되는 데이터를 읽고 쓰는 작업이 누락되거나 데이터가 손상되어 비정상 동작이 발생할 수 있습니다. 스레드 동기화란 이러한 문제를 방지하기 위해 여러 스레드가 동시에 공유한 데이터를 읽고 쓸 수 없도록 하는 기술입니다.
데드락에 대해 설명해 주세요.
더보기데드락(deadlock)이란 프로세스가 자원을 할당받지 못하고 무한 대기 상태로 있는 경우를 말하며, 교착상태라고도 부릅니다.
임계 영역에 대해 설명해 주세요.
더보기공유되는 자원, 즉 동시 접근하려고 하는 자원에서 문제가 발생하지 않게 독점을 보장해줘야 하는 영역을 임계영역이라고 한다.
임계 구역은 지정된 시간이 지난 후 종료된다. 때문에 어떤 스레드가 임계 구역에 들어가고자 한다면 지정된 시간만큼 대기해야 한다. 스레드가 공유자원의 배타적인 사용을 보장받기 위해서 임계 구역에 들어가거나 나올떄는 세마포어 같은 동기화 매커니즘이 사용된다.
페이지 교체 알고리즘의 종류에 대해 설명해 주세요.
더보기- OPT - Optimal : 앞으로 가장 오랫동안 사용되지 않을 페이지 교체
- FIFO - First In First Out : 처음에 사용된 페이지 부터 교체
- LRU - Least Recently Used : 가장 오랫동안 사용되지 않은 페이지 교체
- LFU - Least Frequently Used : 참조 횟수가 가장 작은 페이지 교체
- MFU - Most Frequently used : 참조 횟수가 가장 많은 페이지 교체
- NUR - Not Used Recently : 최근에 사용하지 않은 페이지 교체