[대학원 면접준비] CS - 운영체제
운영체제 : 하드웨어와 사용자의 가교 역할. 사용자 인터페이스와 자원 관리를 위한 프로그램의 집합.
인터럽트
- CPU의 현재 처리 순서를 중단하고 다른 동작 수행을 요구함
- 외부/내부/소프트웨어 인터럽트 존재
[처리과정]
1. 인터럽트 요청 발생
2. 프로그램 수행 중단
3. 레지스터, PC 등을 스택에 저장
4. 인터럽트 처리
5. 프로그램 재개
프로세스
- 수행 중인 프로그램, 자원의 소유자.
*프로세스들이 CPU를 할당받는 순서를 CPU 스케줄링이라 함.
스레드
- CPU를 받는 단위
프로세스 상태
- ready, run, wait, block
Critical Section (임계구역)
- 둘 이상의 스레드가 동시에 접근하면 안 되는 공유 자원
Deadlock(교착상태)
- 두 개 이상의 프로세스가 서로 상대방이 사용 중인 자원을 쓰기 위해 무한 대기하는 상태
[Deadlock의 4가지 조건]
1. Mutual Exclusion (상호배제)
- 한 번에 한 프로세스만 자원을 사용할 수 있음
2. Hold and Wait (점유와 대기)
- 하나 이상의 자원을 점유하고 있으면서, 다른 프로세스에 할당된 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재해야 함
3. Non-Preemption (비선점)
- 이미 할당된 자원은 사용이 끝날 때까지 강제로 뺏을 수 없음
4. Circular Wait (순환대기)
- 대기 프로세스의 집합이 순환 형태로 자원을 대기하는 상황
메모리 단편화(Fragmentation)
1. 내부 단편화 (Internal Fragmentation)
사용자 영역이 프로세스의 크기보다 커서 사용 공간이 남는 현상. Process C를 적재했을 때 20MB의 공간이 남음.
2. 외부 단편화 (External Fragmentation)
프로세스의 크기가 클 때, 메모리 공간이 연속적이지 않아 탑재하지 못하는 상황. 100MB가 남았지만 메모리 공간이 불연속적이어서 Process C를 할당하지 못함. 따라서 100MB의 메모리가 낭비됨.
- 해결방법 : 빈 공간을 압축해 연속된 공간으로 만듦
메모리 단편화 해결방법에는 압축, 통합, 페이징, 세그멘테이션, 메모리 풀 등이 있다.
커널의 존재 이유
- 운영체제의 핵심 기능을 수행하며 안전성과 성능을 보장하기 위해
시스템 콜
- 커널 영역의 기능을 유저가 사용 가능하게 하는 기능
*응용 프로그램은 유저 모드 영역만 사용할 수 있기 때문에, 커널 영역의 명령어를 사용하려면 시스템 콜을 이용해야 함