티스토리 뷰
1. 프로세스 구조에 대해 설명해주세요.
프로세스는 일반적으로 코드, 데이터, 힙, 스택 영역으로 이루어져 있습니다. 코드 영역은 프로그램 코드가 저장 되고, 데이터 영역은 전역 변수 등이 저장 되며, 힙 영역은 동적으로 할당된 메모리를 위한 공간이고, 스택 영역은 함수 실행을 위한, 지역 변수 등이 저장됩니다.
2. 컨텍스트 스위칭에 대해 설명해주세요.
컨텍스트 스위칭이란 멀티 태스킹 등 프로세스 스위칭이 필요할 때, 실행할 프로세스를 CPU에 교체해주는 기술입니다.
구체적으로는 현재 실행 중인 프로세스의 프로세스 ID, 레지스터값 등 주요 프로세스 상태 정보를 해당 프로세스의 PCB에 저장하고, 다음에 실행할 프로세스의 PCB 정보에서 주요 프로세스 상태 정보를 CPU에 업데이트한 후, 해당 프로세스를 실행시킵니다.
3. 프로세스간에는 어떤 기술을 사용해서 통신하는지, 왜 해당 기술을 사용해서 통신해야 하는지를 쓰레드와 비교해서 설명해주세요.
프로세스 간에는 주소 공간이 분리되어 있기 때문에, 프로세스간 통신을 위해서는 IPC라고 하는 별도의 기술을 사용해야 합니다. 쓰레드의 경우에는 하나의 프로세스 주소 공간 안에서, 코드, 데이터, 힙 영역을 공유하기 때문에 별도의 통신 기술은 필요 없습니다.
4. 프로세스와 쓰레드의 차이점에 대해 설명해주세요.
프로세스는 운영체제로부터 자원을 할당 받아 실행하고, 쓰레드는 프로세스로부터 자원을 할당 받아 실행합니다. 하나의 프로세는 여러 개의 쓰레드를 가질 수 있습니다. 프로세스 안에서 쓰레드는 프로세스의 코드, 데이터, 힙 영역을 공유하지만, 해당 쓰레드만의 스택을 가지고 동작합니다.
5. 언제 멀티 프로세스를 사용하고, 언제 멀티 쓰레드를 써야 하는지 설명해주세요.
멀티 프로세스는 독립적인 작업을 수행하며 메모리를 독립적으로 할당하여 안정성과 신뢰성을 높이고, 병렬 처리를 통해 무거운 작업을 효율적으로 처리할 때 사용합니다. 반면 멀티 쓰레드는 하나의 프로세스 내에서 작업을 나누어 실행하여 공유 자원을 활용하고, 경량 작업을 효과적으로 처리하여 병렬성을 확보할 때 사용합니다.
6. 쓰레드 동기화란 무엇이고, 왜 사용해야 하는지 설명해주세요.
쓰레드 동기화는 여러 쓰레드가 공유 자원에 안전하게 접근하도록 보장하는 기술로, 경쟁 조건과 데이터 일관성 문제를 해결하고 데드락을 방지하여 프로그램의 안정성을 유지합니다. 이를 통해 예상치 못한 결과를 방지하고 자원의 효율적인 사용을 도모합니다.
7. 뮤텍스와 세마포어의 차이점에 대해 설명해주세요.
뮤텍스와 세마포어는 모두 동기화 기법으로서 공유 자원에 대한 접근을 조절하는 데 사용됩니다.
뮤텍스는 쓰레드간 공유 데이터 접근시, 일정 순간에 하나의 쓰레드만 해당 데이터를 접근할 수 있도록 합니다.
세마포어는 쓰레드간 공유 데이터 접근시, 일정 순간에 미리 정한 동시 접근 쓰레드 수만큼만 해당 데이터를 접근할 수 있도록 합니다.
8. 데드락에 대해 설명해주세요.
데드락은 멀티프로세스나 멀티스레드 환경에서 발생하는 상태로, 각 프로세스나 스레드가 서로 상대방의 자원을 기다리며 무한히 대기하는 상황을 말합니다.
9. 가상 메모리와 페이징 시스템에 대해 설명해주세요.
가상 메모리는 주 기억장치보다 큰 프로그램을 실행할 때 사용되는 기술로, 실제 물리적 메모리보다 큰 가상 주소 공간을 제공합니다. 페이징 시스템은 가상 메모리를 구현하는 기술 중 하나로, 프로그램을 일정한 크기인 페이지로 나누어 관리합니다. 각 페이지는 물리적 메모리에 매핑되어 사용됩니다. 필요한 페이지만 메모리로 로드되고, 사용하지 않는 페이지는 디스크에 스왑됩니다.
10. 요구 페이징과 페이지 폴트에 대해 설명해주세요.
요구 페이징(Demand Paging)은 페이징 시스템에서 사용되는 전략 중 하나로, 프로그램이 실행될 때 모든 페이지를 미리 메모리에 로드하는 것이 아니라, 프로세스가 실제로 필요한 페이지만 메모리로 로드하는 방식입니다. 프로세스의 시작 시에는 페이지 테이블만 메모리에 올라가고, 실제 페이지들은 요청될 때 메모리로 로드됩니다.
페이지 폴트는 요구 페이징에서 발생하는 현상으로, 프로세스가 요청한 페이지가 현재 메모리에 없는 상태일 때 발생합니다. 이때 운영체제는 요청된 페이지를 디스크에서 메모리로 로드하여 페이지 테이블에 매핑하고, 프로세스의 실행을 계속합니다. 페이지 폴트는 디스크 I/O 작업으로 인해 오버헤드가 발생할 수 있지만, 요구 페이징은 실제로 필요한 페이지만 메모리에 올려 메모리의 효율성을 높이는 장점을 제공합니다.
11. 힙 영역과 스택 영역의 차이에 대해 설명해주세요.
스택 영역은 지역 변수와 함수 호출에 사용되는 데이터를 저장합니다. 함수 호출 시에 지역 변수 및 함수의 인수와 반환 주소가 스택에 저장되며, 함수가 종료되면 해당 데이터가 제거됩니다.
힙은 사용자가 직접 메모리를 할당하고 해제할 수 있는 메모리 영역입니다. 힙은 스택과 달리 메모리의 할당 및 해제 순서가 중요하지 않으며, 사용자가 필요한 만큼 메모리를 동적으로 관리할 수 있습니다.
'Study' 카테고리의 다른 글
| 기술면접-컴퓨터공학(웹)-1 (0) | 2024.03.12 |
|---|---|
| 기술면접-컴퓨터공학(네트워크)-1 (0) | 2024.03.05 |
| 기술면접-컴퓨터공학(운영체제)-2 (1) | 2024.03.04 |
| 단방향 바인딩 vs 양방향 바인딩 (0) | 2023.02.12 |
| MPA vs SPA 그리고 SSR vs CSR (0) | 2022.06.25 |