Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- UXUIPrimary
- UXUI기초정복
- 오블완
- 디자인강의
- 백준
- 티스토리챌린지
- 객체지향
- 국비지원취업
- Java
- 오픈챌린지
- 내일배움캠프
- 내일배움카드
- Spring
- 부트캠프
- UXUI챌린지
- baekjoon
- Be
- OPENPATH
- 백엔드
- 디자인교육
- 국비지원
- 국비지원교육
- 오픈패스
- KDT
- 패스트캠퍼스
- mysql
- 디자인챌린지
- 백엔드 부트캠프
- 환급챌린지
- 백엔드개발자
Archives
- Today
- Total
군만두의 IT 공부 일지
신입 개발자 기술면접 예상 질문 정리 - 운영체제(2) 본문
1. 뮤텍스(Mutex)와 세마포어(Semaphore)의 차이에 대해 설명해주세요.
- 뮤텍스와 세마포어 모두 동시성 제어를 위해 사용되지만 기본적인 차이가 있습니다. 뮤텍스는 단일 스레드가 리소스에 대한 접근을 독점적으로 제어할 수 있도록 하는 반면, 세마포어는 리소스에 대한 접근을 여러 스레드가 동시에 할 수 있도록 제한된 수의 키(토큰)를 통해 제어합니다. 즉, 뮤텍스는 '잠금(lock)'을 획득한 단 하나의 스레드만이 리소스를 사용할 수 있고, 세마포어는 설정된 숫자만큼의 스레드가 동시에 리소스를 사용할 수 있습니다.
- Q. 세마포어를 사용할 때 주의해야 할 점은 무엇인가요?
- 세마포어 사용시 가장 주의해야 할 점은 세마포어의 키를 정확히 관리하지 못하면 데드락이 발생할 수 있다는 것입니다. 키의 회수와 할당이 잘못 관리되면, 필요한 키를 얻지 못하는 스레드들이 무한 대기 상태에 빠질 수 있습니다.
2. 컨텍스트 스위칭(Context Switching)이 무엇인지 설명해주세요.
- 컨텍스트 스위칭은 CPU가 한 프로세스에서 다른 프로세스로 작업을 전환할 때 발생하는 과정입니다. 이 과정에서 현재 실행 중인 프로세스의 상태(컨텍스트)를 저장하고 새로 실행할 프로세스의 상태를 불러오는 작업이 포함됩니다. 이는 멀티태스킹을 가능하게 하는 핵심 메커니즘이며, 운영 체제의 스케줄러가 관리합니다.
- Q. 컨텍스트 스위칭이 시스템에 미치는 영향은 무엇인가요?
- 컨텍스트 스위칭은 필수적인 과정이지만 오버헤드를 발생시킵니다. 저장과 로드 과정에서 시간이 소요되므로, 너무 빈번한 컨텍스트 스위칭은 시스템의 성능을 저하시킬 수 있습니다.
3. 임계영역(Critical Section)에 대해 설명해주세요.
- 임계영역은 둘 이상의 스레드나 프로세스가 동시에 접근하면 안 되는 코드 영역을 말합니다. 이 영역에서는 공유 데이터를 처리하기 때문에, 동시 접근을 제어하지 않으면 데이터의 일관성과 정확성이 손상될 위험이 있습니다. 따라서, 뮤텍스나 세마포어 같은 동기화 도구를 사용하여 이 영역에 대한 접근을 안전하게 제어합니다.
- Q. 임계영역을 보호하기 위한 다른 방법은 무엇이 있나요?
- 임계영역을 보호하기 위해 모니터, 락, 그리고 조건 변수 같은 동기화 메커니즘을 사용할 수 있습니다. 또한, 언어 수준에서 제공하는 동기화 구조(예: Java의 synchronized 키워드)를 사용하여 구현할 수도 있습니다.
4. 데드락(Deadlock)에 대해 설명해주세요.
- 데드락은 멀티 스레드 환경에서 각 스레드가 서로의 자원을 기다리면서 발생하는 상황을 말합니다. 이 때 모든 스레드가 서로의 자원을 기다리며 더 이상 진행할 수 없는 상태가 되는 것을 데드락이라 합니다. 이를 해결하기 위해서는 자원 할당 전략을 변경하거나, 타임아웃 같은 시간 제한을 두어 해결할 수 있습니다.
- Q. 데드락을 회피하거나 방지하기 위한 알고리즘은 무엇이 있나요?
- 데드락을 방지하는 방법으로는 자원 할당 그래프를 분석하여 사이클이 없도록 만드는 방법, 우선순위 숫자나 타임스탬프를 사용하여 자원을 순서대로 할당하는 방법 등이 있습니다. 또한, 데드락 회피를 위해 은행원 알고리즘(Banker's Algorithm)을 사용할 수도 있습니다.
5. CPU 스케줄링이 무엇인지 설명해주세요.
- CPU 스케줄링은 프로세스들 사이에서 CPU 사용 시간을 할당하는 운영 체제의 메커니즘입니다. 이 과정을 통해 시스템의 효율성과 응답 시간을 최적화하며, 다양한 스케줄링 알고리즘이 이를 지원합니다.
- Q. CPU 스케줄링의 기본 목표는 무엇인가요?
- CPU 스케줄링의 기본 목표는 최대한 CPU를 바쁘게 유지하는 것입니다. 이를 통해 자원의 활용도를 높이고, 시스템 처리량을 증가시키며, 사용자에게 만족스러운 응답 시간을 제공하는 것이 목표입니다.
6. CPU 스케줄링 방법에는 대표적으로 어떤 것들이 있는지 설명해주세요.
- 대표적인 CPU 스케줄링 방법에는 선점형과 비선점형 스케줄링이 있습니다. 선점형 스케줄링 예로는 라운드 로빈(Round Robin), 최단 잔여 시간 우선(Shortest Remaining Time First)이 있고, 비선점형에는 최단 작업 우선(Shortest Job First), 우선순위 스케줄링이 있습니다.
- Q. 선점형과 비선점형 스케줄링의 장단점은 무엇인가요?
- 선점형 스케줄링은 더 높은 우선순위의 작업이 도착하면 현재 작업을 중지하고 새 작업을 처리할 수 있어 응답 시간이 짧아지는 장점이 있습니다. 하지만, 자주 컨텍스트를 스위칭하게 되어 오버헤드가 발생할 수 있습니다. 비선점형 스케줄링은 한 번 CPU를 할당받으면 작업이 완료될 때까지 CPU를 계속 사용하기 때문에 오버헤드가 적지만, 긴 작업에 의해 짧은 작업이 오랫동안 대기할 수 있는 단점이 있습니다.
⭐참고자료
1) coco3o, "신입 개발자 기술면접 질문 정리 - 운영체제", 2022.02.28, https://dev-coco.tistory.com/162
2) 개발자 HOON, "[면접총정리] 신입 개발자 인터뷰 대비 총정리 자료 - ⑤ 운영체제", 2022.10.31, https://hoons-dev.tistory.com/95
https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS1626582373&cate_cd=
이 글은 면접 스터디에서 학습한 내용을 바탕으로 각 질문에 대한 답변을 정리한 것으로, 틀린 부분이 있을 수도 있습니다.
'기타 > 기술면접' 카테고리의 다른 글
신입 개발자 기술면접 예상 질문 정리 - 운영체제(1) (1) | 2025.01.01 |
---|---|
신입 개발자 기술면접 예상 질문 정리 - 자료구조(1) (3) | 2024.11.12 |
신입 개발자 기술면접 예상 질문 정리 - 공통(1) (0) | 2024.11.11 |
신입 개발자 기술면접 예상 질문 정리 - 네트워크(1) (0) | 2024.11.10 |
신입 개발자 기술면접 예상 질문 정리 - 자바(2) (2) | 2024.11.08 |
Comments