영원히 흘러가는 강
신입 웹개발자 기술면접(운영체제) 본문
20/12/09
면접 관련 질문들 하나하나 답변 달아가며 다시 배워보는 기회가 될 것이다.
20/12/10 추가
운영체제
프로세스
- 프로세스와 스레드의 차이는 무엇인가요?
ㄴ> 간단히 정리한다면 이와 같다.
프로세스: 운영체제로부터 자원을 할당받은 작업의 단위.
스레드: 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위.
- 교착상태란 무엇이며, 교착상태가 발생하기 위해서는 어떤 조건이 있어야 하나요?
ㄴ> 교착상태란 상호 배제에 의해 나타나는 문제점으로
교착상태 발생 조건 -> 4가지 조건이 모두 충족 시에 발생
1. 상호 배제 -> 한 자원에 대한 여러 프로세스 동시 접근 불가
2. 점유와 대기 -> 자원을 가지고 있는 상태에서 다른 프로세스가 사용하고 있는 자원의 반납을 기다리는 것.
3. 비선점 -> 다른 프로세스의 자원을 강제로 가져올 수 없음.
4. 환형 대기 -> 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있는 것
- 교착상태의 해결법은 무엇인가요?
ㄴ> 위의 조건이 다 충족해야 하므로 예방법은 네 가지 조건을 아예 발생치 않도록 예방
위를 비롯해 회피 기법(은행원 알고리즘), 회복(프로세스 중단, 자원 선점)
- 뮤텍스와 세마포어에 대해서 설명해 보시오.
ㄴ> 세마포어(Semaphore) :공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것 (lock 키 여러 가지)
뮤텍스(Mutex) : 공유된 자원의 데이터를 여러 스레드가 접근하는 것을 막는 것 (lock 키 하나)
- 컨텍스트 스위칭이란 무엇인가요?
ㄴ> 멀티 프로세서 환경에서 cpu가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해
다음 우선순위 프로세스가 실행되어야 할 때 기존 프로세스의 상태 또는 레지스터의 값 저장하고,
다음 프로세스를 실행하도록 새로운 프로세스의 상태 또는 레지스터의 값을 교체하는 작업
- 경쟁 상태란 무엇인가요?
ㄴ> 둘 이상의 조작이나 입력이 동시에 일어나 의도하지 않은 결과인 경우
프로세스 간의 하나의 자원을 갖기 위해 싸우는 것 => 하나의 자원을 동시에 요청
- 프로세스 혹은 스레드의 동기화란 무엇인가요?
ㄴ> 동기화란 병렬적으로 수행되는 작업들에 대해 자원의 접근에 대한 순서 정하는 과정
일관성 보장
- 사용자 수준의 스레드와 커널 수준의 스레드의 차이는 무엇인가요?
ㄴ> 사용자 수준의 스레드:
1. 스레드와 관련된 모든 행위를 사용자 영역에서 한다.
2. 스레드 라이브러리를 이용하여 작동하는 형태
3. 단일 프로세서에서 작동한다.
※다수의 사용자 레벨 스레드가 커널 레벨 스레드 한 개에 매핑 => N:1 매핑
커널 수준의 스레드:
1. 커널이 스레드와 관련된 모든 작업을 관리함.(커널에 종속적)
2. 멀티 스레드 프로세스 환경에서 동작한다.
※ 커널이 각 스레드를 개별적으로 관리한다. => 1:1 매핑
1. 사용자 스레드는 커널 위에서 지원되며 커널과는 관계없이 완전한 사용자 수준의 패키지를 가지고, 커널 스레드는 os가 직접 지원하며 커널에 의해 내부적으로 필요한 경우에 생성&소멸될 수 있으며 특정 함수를 수행할 책임이 있다.
2. 사용자 수준의 스레드는 고유의 사용자 스택, 레지스터 문맥, 기타 상태 정보를 보유하지만 커널 스 레드는 자신의 커널 스택을 보유하고 커널의 텍스트, 전역 데이터를 공유한다.
+ 혼합형 스레드 : 사용자 수준 스레드+커널 수준 스레드=> N:M 매핑
- CPU 스케줄링이란 무엇인가요?
ㄴ> 다수의 프로세스가 준비 상태일때 cpu가 어느 프로세스를 먼저 효율적으로 처리 할것인가를
결정하기 위한 사항
- CPU 스케줄링 방법에는 대표적으로 어떤 것들이 있나요?
ㄴ> 크게 두가지 선점, 비선점으로 나눌수 있다.
선점 스케줄링 :
SRT(Shortest Remaining Time) : 짧은 시간 순서대로 프로젝트 수행
라운드 로빈(Round-Robin) : 시간 할당량 만큼만 실행후 완료되지 않으면 다음 프로세스에게
cpu 양보하고 준비상태 큐의 가장 뒤로 배치
다단계큐 : Ready큐를 여러 개 사용하는 기법.
비선점 스케줄링:
HRN(Hightst response ratio next) : 수행시간의 길이와 대기 시간을 모두 고려해 우선순위를 정한다.
SJF(Shortest job first) 큐 안에 있는 프로세스 중 수행시간이 짧은것을 먼저 수행
우선순위 : 프로세스에게 우선순위를 정적,동적으로 부여하여 우선순위 높은 순대로 처리
동적일 경우 구현 복잡하고 오버헤드 많다는 단점
기한부 : 작업을 명시된 시간이나 기한 내에 완료하도록 계획
FIFO : Ready큐에 도착한 순서대로 cpu 할당
- 동기와 비동기, 블로킹과 넌블로킹의 차이는 무엇인가요?
ㄴ> 동기란 ? 요청과 결과가 동시에 일어난다는 뜻이며 함수 결과를 호출한 쪽에서 처리
비동기란 요청과 결과가 동시에 일어나지 않으며, 함수의 결과를 호출한쪽에서 처리하지 않는다.
블로킹: 기본적인 I/O 모델로, 리눅스에서 모든 소켓 통신은 기본 블로킹으로 동작
I/O 작업 진행되는 동안 자신의 작업을 중단한 채 대기(자원 낭비)
논블로킹: I/O 작업 진행동안 프로세스 작업 중단하지 않음
데이터가 입력에 상관없이 결과 반환
반복적 시스템 호출 발생하기 때문에 이 경우 역시 자원 낭비
메모리
- 프로세스에 할당되는 메모리의 각 영역에 대해서 설명해 주세요.
ㄴ> 크게 5대 영역으로 나누어진다.
컴파일시에 메모리가 정해지는 CODE, DATA, BSS(Blocked Stated Symbol)
실행중에 메모리 할당되는 Heap , stack
Code 영역: 실행 파일을 구성하는 명령어들이 적재되는 메모리 영역 (함수,제어문,상수)
Data 영역& BSS : 전역변수와 static 변수 지정되는 영역 초기화 안된 전역변수 BSS 나머지 DATA
Heap 영역: 동적으로 메모리 할당
stack 영역 : 지역변수 할당되는 영역 ,함수 호출시 변수 할당 ,함수 종료시 반납
- 메모리 구조의 순서가 어떻게 되는가? CPU에서 가까운 순으로 말해보시오.
ㄴ> 레지스터 -> cpu캐시 -> 메인 메모리 -> 보조 기억장치 -> 외부 기억장치 순
cpu에 가까울수록 데이터 접근 빠르고 멀수록 저장 용량 높음
- 페이징과 세그멘테이션에 대해서 설명해 보시오.
ㄴ> 페이징: 고정된 영역인 페이지로 분할 (내부 단편화)
세그멘테이션 : 가변적인 영역인 세그먼트로 분할 (외부 단편화)
- 외부 단편화란? 내부 단편화란?
ㄴ> 내부 단편화 : 메모리 할당시 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서
사용하는 메모리 공간이 낭비 되는 현상
외부 단편화 : 메모리가 할당 및 해제 작업의 반복으로 작은 메모리가 중간중간 존재
중간중간 빈 메모리를 다 합치면 매우 크지만 실제로는 할당x
- First Fit, Best Fit, Worst Fit에 대해서 설명해 보시오.
ㄴ> 빈 저장공간이 있다고 할때
first fit은 빈 저장공간중 맨처음에 할당
best fit은 메모리 크기에 가장 잘 맞게 할당
worst fit 은 빈 저장공간에 비해 할당하고도 크게 남은 저장 공간
- 페이지 교체 알고리즘 종류에는 어떤 것들이 있나요?
ㄴ> FIFO ,최적페이지 교체 ,LRU(Least Recently Used) ,LFU(Last Frequently Used), NUR
FIFO는 말 그대로 먼저 들어온 페이지를 제거하는 기법
최적 페이지 교체 : 앞으로 가장 오랫동안 사용되지 않을 페이지 교체 (구현 불가능 알고리즘)
LRU :최근에 가장 오랫동안 사용하지 않은 페이지 교체하는 기법
LFU : 사용 빈도가 가장 적은 페이지 교체
NUR : LRU 와 비슷한 방식 (참조비트/변형비트 사용)
'기술면접' 카테고리의 다른 글
신입 웹개발자 기술면접(프로그래밍) (0) | 2020.12.14 |
---|---|
신입 웹개발자 기술면접(자료구조) (1) | 2020.12.12 |
신입 웹개발자 기술면접(알고리즘) (0) | 2020.12.11 |
신입 웹개발자 기술면접(데이터베이스) (0) | 2020.12.11 |
신입 웹개발자 기술면접 (네트워크) (0) | 2020.12.10 |