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) = 교착 상태를 일으킨 프로세스를 종료하거나 할당된 자원을 해제시킴
'면접 대비' 카테고리의 다른 글
CS 관련 면접 질문 정리 (Spring) (0) | 2023.02.05 |
---|---|
CS 관련 면접 질문 정리 (DB) (0) | 2023.01.30 |
CS 관련 면접 질문 정리 (Java) (0) | 2023.01.16 |
CS 관련 면접 질문 정리 (네트워크) (0) | 2023.01.04 |
댓글