본문 바로가기
면접 준비

기술 면접 list - 운영체제

by 힐무새 2017. 10. 27.
프로세스와 스레드의 차이
key point: 운영체제에서 작업을 실행할 때 자원을 할당하는 단위, 멀티 스레드로 구현 시 장단점
프로세스 : 운영체제로부터 CPU 자원을 할당받는 작업의 단위. 운영체제로부터 프로세서를 할당받음과 동시에 운영에 필요한 주소 공간, 메모리 등 자원을 할당받게 됨.

스레드 : 프로세스가 할당받은 자원을 이용하는 실행의 단위. 한 프로세스 내에서 동작되는 여러 실행의 흐름이며, 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내의 스레드끼리 공유하면서 실행된다. 

멀티 프로세스로 처리할 수 있는 것을 굳이 멀티스레드로 하는 이유
- 프로세스를 생성하여 자원을 할당하는 시스템 콜이 감소함으로서 자원의 효율적 관리가 가능.
- 프로세스 간의 통신(IPC)보다 스레드 간의 통신의 비용이 적어 작업들 간의 부담 감소

멀티 스레드 사용 시 공유 자원으로 인한 문제를 해결하기 위해 동기화에 신경써야함. 
 
교착 상태(데드락)의 4가지 조건
1. 상호배제(Mutual exclusion) : 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권을 요구한다.
2. 점유대기(Hold and wait) : 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다.
3. 비선점(No preemption) : 프로세스가 어떤 자원의 사용을 끝날 때까지 그 자원을 뺏을 수 없다.
4. 순환대기(Circular wait): 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다.

이 조건 중 한 가지라도 만족하지 않으면 교착 상태는 발생하지 않는다. 순환대기 조건은 점유대기 조건과 비선점 조건을 만족해야 성립하는 조건이므로 위 4가지 조건은 서로 완전히 독립적이지 않다.

해결 방법
1. 교착 상태의 예방
2. 교착 상태의 회피
3. 교착 상태의 무시
4. 교착 상태의 발견

메모리 계층 빈칸채우기 레지스터>A>B>디스크
- (상층)레지스터, 캐시, 메모리, 하드디스크(하층)

메모리 할당 알고리즘 First fit, Next fit, Best fit의 결과
First fit : 메모리의 처음부터 검사해서 크기가 충분한 첫번째 메모리에 할당한다.
Next fit : 마지막으로 참조한 메모리 공간에서부터 탐색을 시작하여 공간을 찾는다.
Best fit : 모든 메모리 공간을 검사해서 내부 단편화를 최소화하는 공간에 할당한다. 

페이지 교체 알고리즘에 따른 페이지 폴트 횟수(Optimal, LRU, FIFO)
OPT(Optimal replacement) : 최적 교체. 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법. 예측이 필요하여 실현 가능성이 희박함.
FIFO : 메모리가 할당된 순서대로 페이지를 교체
LRU(Least Recently used) : 최근에 가장 오랫동안 사용하지 않은 페이지를 교체
LFU(Least Frequently used) : 사용 빈도가 가장 적은 페이지를 교체
NUR : 최근에 사용하지 않은 페이지를 교체


외부 단편화, 내부 단편화
내부 단편화(internal fragmentation) : 작업에 필요한 공간보다 많은 공간을 할당받음으로서 발생하는 내부의 사용 불가능한 공간
외부 단편화(external fragmentation) : 작업보다 많은 공간이 있더라도 실제로 그 작업을 받아들일 수 없는 경우(메모리 배치에 따라 생기는 문제)

가상메모리
메모리에 로드된, 실행중인 프로세스가 메모리가 아닌 가상의 공간을 참조하여 마치 커다란 물리 메모리를 갖는 것처럼 사용할 수 있도록 하는 기법.

페이지와 세그멘테이션
페이징: 페이지 단위의 논리-물리 주소 관리 기법. 논리 주소 공간이 하나의 연속적인 물리 메모리 공간에 들어가야 하는 제약을 해결하기 위한 기법. 이를 위해 논리 주소 공간과 물리 주소 공간을 분리해야하며(주소의 동적 재배치 허용), 논리주소와 물리주소 변환을 위한 전용 하드웨어(MMU)를 요구
특징: 외부 단편화를 없앨 수 있다. 페이지가 클수록 내부 단편화가 커질 수 있다. 반대로 페이지가 너무 작으면 내부 단편화는 작아지지만 페이지 테이블의 크기가 커지게 된다(요구하는 페이지의 개수가 많아지므로)

세그멘테이션: 사용자/프로그래머 관점의 메모리 관리 기법. method, procedure, function, object, variables, stack 등 프로그램의 논리적 단위로 나누는 방법이다. 페이징 방법이 같은 크기의 페이지를 갖는 것과는 다르게 논리적 단위(세그먼트)로 나누므로 미리 분할하는 것이 아니고 메모리를 사용할 시점에 할당된다.  
 

뮤텍스, 세마포어에 대해 설명
공유된 자원에 여러 개의 프로세스/스레드가 동시에 접근하면 문제가 발생할 수 있음. 따라서 공유된 자원 속 하나의 데이터는 한 번에 하나의 프로세스/스레드만 접근할 수 있도록 제한해야 함.

세마포어(Semaphore) : 공유 자원(critical section)에 접근 할 수 있는 스레드의 갯수를 제한
뮤텍스(Mutex) : 공유된 자원에 대한 접근을 한 번에 한 개의 스레드로만 제한(1개 접근 가능한 세마포어)
RISC 방식과 CISC 방식의 차이
CISC가 일반적으로 사용하는 명령어 셋인데, 전체 명령어의 90%는 사용이 적은 명령어 셋이라는 점에 착안하여 간소화된 명령어 셋인 RISC가 탄생했다. 

CISC의 장점 
- 컴파일러 작성이 쉽다. 
- 복잡한 명령도 microcode이므로 실행효율이 좋다.
- 호환성

CISC의 단점
- 하나의 명령어가 복잡하여 디코딩에 시간이 오래걸리며, 회로가 복잡하다.
- 적은 수의 일부 명령어만 주로 쓰임
- 명령어의 길이가 달라서 동시에 여러개의 명령 처리는 어렵다.

RISC의 장점
- 각 명령어가 한 클럭에 실행되도록 고정, 파이프라인 성능에 최적화
- 고정된 길이의 명령어이기 때문에 디코딩이 빠르며, 여러개의 명령어를 처리할 수 있음

RISC의 단점
- 컴파일러의 최적화 과정이 복잡해진다.
- 명령길이가 고정되어 있기 때문에 코드 효율이 낮다. ( CISC의 복잡한 명령어를 위해 여러개의 명령어를 조합하여야 한다)

Context Switching이란
하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업. 한 프로세스의 문맥은 그 프로세스의 PCB에 기록된다.

CPU 스케쥴링이 LRU 방식과 FIFO 방식의 차이를 기술
LRU(Least Recently Used) :  과거에 가장 오랫동안 사용되지 않은 메모리 공간을 대체
FIFO(First In First Out) : 메모리가 먼저 할당된 순서대로 대체된다.

사용자 수준 스레드와 커널 수준 스레드의 차이
사용자 수준 스레드: 
장점 
- 사용자 수준 스레드는 context switch가 없다. 따라서 커널 스레드보다 오버헤드가 적다. 스레드 전환 시 커널 스케쥴러를 호출할 필요가 없기 때문. 사용자 수준 스레드에서는 스레드 스케쥴러가 사용자 모드에만 존재한다.

단점
- 프로세스 내의 한 스레드가 커널로 진입하는 순간 나머지 스레드들도 전부 정지됨. 이는 커널이 스레드의 존재를 알지 못하기에 발생하는 현상임.

커널 수준 스레드: 
장점
- 사용자 수준 스레드보다 효율적이다. 커널 스레드를 쓰면 멀티프로세서를 활용할 수 있는 장점이 있다. 사용자 스레드는 CPU가 아무리 많더라도 커널 모드의 스케쥴이 되지 않으므로 각 CPU에 효율적으로 스레드를 배당할 수 없다.
 
단점
- 커널 스케쥴러를 통해 context switch가 발생한다. 이 과정에서 프로세서 모드가 사용자 모드와 커널 모드 사이를 움직이기 때문에 빈번할 수록 성능이 하락한다.

동기화란?

공유 자원에 대하여 동시에 접근하는 프로세스/스레드들로 인해 발생하는 문제를 해결하기 위해 행하는 방식.

'면접 준비' 카테고리의 다른 글

기술면접 list - C/C++  (1) 2017.12.06
기술면접 list- 자료구조  (0) 2017.11.14