운영체제 기술면접 준비
- 운영체제 : 하드웨어를 관리하고, 응용 프로그램과 하드웨어 사이에서 인터페이스 역할, 시스템 동작을 제어하는 시스템 소프트웨어
- 프로세스 관리 : 프로세스, 스레드, 스케줄링, 동기하, IPC 통신
- 메모리 관리 : 가상메모리, 파일 시스템
- 네트워킹 : TCP/IP, 기타 프로토콜
- 사용자 관리 : 접근권한 관리, 계정 관리
- IO 관리
- 파일 관리
- 프로세스 : 프로그램을 메모리 상에서 실행중인 작업
스레드 : 프로세스 안에서 실행되는 여러 흐름 단위
프로세스 주소공간 : code(코드 구성하는 메모리 영역), data(전역변수, 정적변수), heap(동적할당), stack(지역변수, 매개변수, 리턴값, 임시메모리 영역)
스레드는 stack 만 따로 할당 받고 나머지 영역은 공유
프로세스는 자신만의 고유 공간과 자원을 할당받지만 스레드는 다른 스레드와 공간, 자원을 공유하면서 사용
- 멀티프로세스 : 하나의 컴퓨터에 여러 CPU를 장착하고 하나 이상의 프로세스를 동시에 병렬 처리
메모리 침범 문제를 OS 차원에서 해결, 작업량이 많을 수록 오버헤드 발생, context switching으로 성능 저하
- 멀티스레드 : 하나의 응용 프로그램에서 여러 스레드를 구성해서 각 스레드가 하나의 작업을 처리하는 것
스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하게 함
독립적인 프로세스에 비해 공유 메모리 만큼의 자원 손실이 감소, 전역변수와 정적변수 자료 공유 가능
하나의 스레드가 데이터 공간을 망가뜨리면 모든 스레드가 작동 불능이 됨
- 프로그램이 CPU에 의해 실행되어 프로세스가 생성되고 메모리에 프로세스 주소 공간이 할당됨
코드 부분, 데이터 부분, 스택 부분으로 나눔
- 인터럽트 : 프로그램을 실행하는 중에 즉시 중단하고, 발생된 상황을 우선 처리한 후 실행 중이던 작업으로 복귀
더 중요한 일(입출력, 우선순위 연산)
- 하드웨어 인터럽트 : 입출력 장치, 타이밍 장치, 전원 등 외부적인 요인으로 발생
전원 이상, 기계 착오, 외부 신호, 입출력
- 소프트웨어 인터럽트(트랩) : 0으로 나누는 연산, 오버플로우, 예외처리
- 시스템콜 : 프로세스 생성, 제어를 위한 시스템콜 fork exec wait
- 프로세스 관리 : CPU가 프로세스 여러개를 실행할 때, CPU 스케줄링으로 관리하는 것
- PCB : 프로세스 메타데이터(pid, state, priority, register, 등)를 저장하는 곳
context switching 이 발생하고 다시 원래의 프로세스로 돌아올 때, 이미 수행 중이던 내용을 저장해두기 위해 필요
linked list 형식으로 관리 됨. 삽입 삭제가 용이, 프로세스 완료 시 제거
- IPC 프로세스간 통신, 커널이 제공하는 IPC 설비로 통신함
PIPE : 두개의 프로세스를 연결함, 간단하게 사용, 데이터 흐름 형식, 전이중 통신할 때는 2개 만들어야 함
message queue : 사용할 데이터에 번호를 붙이면서 여러 프로세스가 동시에 데이터 다룸
shared memory : 프로세스간 메모리 영역을 공유해서 사용할 수 있도록 허용, 가장 빠름
- 스케줄링 : CPU를 잘 사용하기 위해 프로세스 잘 배정하기
FCFS : first come first served
SJF : shortest job first
priority scheduling : starvation 생길 수 있음. aging 기법
round robin : time quantum
multilevel queue : 작업을 여러 큐에 나눠서 이용함, time quantum 설정, 우선 순위가 높은 큐는 time 작게, 낮으면 크게
multilevel feedback queue : timequantum 다 채우면 밑으로 내려가고, 못 채우면 원래 큐에 남음
- response time : 작업이 처음 실행되기까지 걸린 시간
turnaround time : 실행시간과 대기 시간을 모두 합한 시간
- 데드락 : 프로세스가 자원을 얻지 못해서 다음 처리를 하지 못하는 상태, 한정된 자원을 여러 프로세스가 요구할 때 발생
발생 조건 : 상호 배제, 점유 대기, 비선점, 순환 대기
- 데드락 예방
상호 배제 부정 : 여러 프로세스가 공유 자원 사용 - infeasible
점유대기 부정 : 프로세스 실행 전 모든 자원 할당 - side effect
비선점 부정 : 점유 중인 프로세스가 다른 자원을 요구할 때 자원 반납 - infeasible
순환대기 부정 : 자원에 고유번호 할당, 순서대로 자원 요구 - side effect
- 데드락 회피
뱅커스 알고리즘 : 프로세스가 자원을 요구할 때, 시스템은 자원을 할당한 후에도 안정 상태로 남아있는지 검사해서 회피
- 데드락 탐지 : 뱅커스 알고리즘
- 데드락 회복 : 프로세스 종료, 자원 선점
- 세마포어 vs 뮤텍스 : mutex는 진입하려는 프로세스가 소유한 key를 기반으로 하고, 세마포어는 signal 메커니즘으로 함
- 뮤텍스 알고리즘
데커 알고리즘 : flag와 turn변수로 임계 구역에 들어갈 스레드를 결정,
turn은 임계구역에 들어가는 사람, flag은 bool 타입임
피터슨 알고리즘 : 데커 알고리즘과 비슷한데 turn을 다른 사람한테 양보하고 다른 사람의 flag값이 true 면 while loop
- 연속 메모리 관리 : 프로그램 전체가 하나의 큰 공간에 연속적으로 할당
고정 분할 기법 : 고정된 파티션으로 주기억장치를 분할 - 내부 단편화 발생
동적 분할 기법 : 파티션들이 동적 생성되어 자신의 크기와 같은 파티션에 적재 - 외부 단편화 발생
- 불연속 메모리 관리 : 프로그램 일부가 서로 다른 주소 공간에 할당
페이징 : 각 프로세스가 프레임들과 같은 길이를 가진 균등 페이지로 나뉨. 외부 단편화 x, 소량 내부 단편화 존재
세그멘테이션 : 여러 세그먼트로 나눔. 내부단편화x, 동적 분할로 오버헤드 감소, 외부 단편화 존재, 메모리 사용 효율 개선
가상 메모리 페이징 : 프로세스 페이지 전부를 로드하지 않고 필요하면 나중에 자동으로 불러옴. 오버헤드 발생, 외부단편화 x
가상 메모리 세그멘테이션 : 필요하지 않은 세그먼트 로드하지 않고 필요하면 불러옴. 오버헤드 발생, 내부단편화 x
- 페이지 교체 : 페이지 부재 -> 새로운 페이지 할당 -> 어떤 것을 교체할지 결정
FIFO : 메모리에 먼저 올라온 페이지 먼저 내보냄
OPT : 앞으로 가장 사용하지 않을 페이지 내보냄, 수행하기 어려운 알고리즘
LRU : 최근에 사용하지 않은 페이지 내보냄, 구현 가능한 것중 제일 좋은 방법
- 캐시 지역성 원리 : 프로세서 가까이에 위치하면서 빈번하게 사용되는 데이터를 놔두는 장소
그 적중률을 높이기 위해서 지역성 원리 사용
시간 지역성 : 최근 참조된 주소를 곧 참조하게 될거라는 것, 공간 지역성 : 실제 프로그램이 참조된 주소와 인접한 주소가 참조됨
캐시에 목적 데이터를 저장해놓고 바로 접근해서 출력할 수 있게 함
'CS' 카테고리의 다른 글
컴퓨터네트워크 기술면접 준비 (0) | 2020.11.20 |
---|---|
데이터베이스 기술면접 준비 (0) | 2020.11.20 |