본문 바로가기
면접 대비

CS 관련 면접 질문 정리 (OS)

by Mecodata 2023. 1. 16.

1. OS의 정의 = 응용 프로그램과 하드웨어 사이에서 하드웨어를 조작하여 응용 프로그램에 필요한 자원을 할당하고 응용 프로그램이 올바르게 실행되도록 관리하는 소프트웨어 

 

2. 커널(kenel) = OS의 핵심부

 

3. 동기, 비동기 차이 = 데이터의 요청과 결과가 한 자리에서 동시에 일어나는것, 동시에 일어나지 않는 것

 

4. 문맥 교환(Context Switching) 

- 기존에 실행 중인 프로세스의 문맥을 PCB에 백업한 뒤 중단하고 새로운 프로세스의 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 과정 => 여러 프로세스가 끊임없이 빠르게 번갈아 가며 실행되는 원리

- 문맥(Context) = 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보

- PCB(Process Control block) = 특정 프로세스를 식별하기 위해 필요한 정보를 포함하는 커널의 자료 구조 (옷의 태그)

- 문맥 교환이 자주 발생하면 오버헤드가 발생할 수 있음

 

5. 프로그램, 프로세스와 스레드 차이 

프로그램 = 컴퓨터에서 특정 작업을 수행하기 위한 명령어들의 모음

프로세스 = 메모리 상에서 실행되고 있는 프로그램

스레드 = 프로세스 내에서 실행되는 작업의 흐름

=> 하나의 프로그램을 실행하면 하나 이상의 프로세스가 실행되고 각 프로세스마다 하나 이상의 스레드가 실행됨

 

6. 멀티 프로세스와 멀티 스레드

멀티 프로세스 = 동일한 작업을 수행하는 단일 스레드 프로세스를 여러 개 실행하는 것

멀티 스레드 = 하나의 프로세스를 여러 스레드로 실행하는 것

 

7. 동기화

프로세스/스레드들이 실행되는 시점을 조절하여 서로가 알고 있는 정보 일치시키는 것

동기화의 3가지 조건

상호 배제(Mutual Exclusion) = 한 프로세스/스레드가 임계 구역에서 작업 중이면 다른 프로세스/스레드는 임계 구역에 들어갈 수 없도록 제어하는 것

진행(Progress) = 임계 구역에 어떠한 프로세스/스레드도 진입하고 있지 않으면 진입하고자 하는 프로세스/스레드는 진입이 가능해야 함

유한 대기(Bounded Waiting) = 한 프로세스/스레드가 임계 구역에 진입하고 싶다면 그 프로세스/스레드는 언젠가는 임계 구역에 진입할 수 있어야 함

 

8. 뮤텍스와 세마포어

임계 구역을 잠금으로써 멀티 프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 동기화 도구

뮤텍스

- 동기화 대상(공유 자원)이 오직 한 개일 때만 사용 가능

- 락을 건 프로세스/스레드 만이 해당 락을 해제할 수 있음

세마포어

- 동기화 대상(공유 자원)이 1개 이상일 때 사용 가능

- 세마포어를 설정한 프로세스/스레드가 아닌 다른 프로세스/스레드도 세마포어를 해제할 수 있음

 

9. 교착상태(DeadLock)

둘 이상의 프로세스/스레드가 다른 프로세스/스레드가 점유하고 있는 자원을 무한적으로 기다리는 현상

데드락의 발생 조건 4가지 (모든 조건을 만족해야 발생)

상호 배제(Mutual Exclusion) = 한 프로세스/스레드가 사용하고 있는 자원을 다른 프로세스/스레드가 사용할 수 없어야 함

점유 대기(Hold and Wait) = 최소 하나의 자원을 점유하고 있는 상태에서 다른 프로세스/스레드의 자원을 할당받도록 기다리는 프로세스/스레드가 존재해야 함 

비선점(Nonpreemptive) = 어떤 프로세스/스레드도 다른 프로세스/스레드의 자원을 강제로 빼앗을 수 없음

순환 대기(Circular Wait) = 프로세스/스레드들은 순환 형태로 자원을 대기해야 함

데드락 해결 방법

예방(Prevention) = 발생 조건 4개 중 하나를 제거 (자원 낭비가 심함)

=> 한 번에 여러 프로세스가 공유 자원을 사용할 수 있게(상호 배제), 프로세스/스레드 실행전 모든 자원 할당(점유 대기)선점 허용(비선점), 자원에 고유번호 할당 후 순서대로 자원 요구(순환 대기)

회피(Avoidance) = 교착 상태가 발생하지 않도록 안전 상태 유지

탐지(Detection) = 교착 상태 발생 여부를 주기적으로 검사 (오버헤드 발생)

회복(Recovery) = 교착 상태를 일으킨 프로세스를 종료하거나 할당된 자원을 해제시킴

 

댓글