본문 바로가기
CS

신입 개발자 CS 면접 대비 질문-운영체제 #2

by Rudy 2023. 2. 12.

* CS면접을 대비해서 공부한 내용들을 정리했습니다. 틀린 부분이 있을 수 있으니 그럴 경우 댓글 달아주시면 감사하겠습니다!

* 분야는 운영체제, 데이터베이스, 네트워크, 자바, 자료구조 등등 가리지 않고 했기 때문에 여러 과목과 내용이 섞여 있습니다.

* 모든 내용은 간단하게 익히기 위해서 얕게 적혀 있습니다. 깊은 내용은 따로 공부하길 권장드립니다.


멀티 프로세스 vs 멀티 스레드

멀티 프로세스는 하나의 프로세스가 죽어도 다른 프로세스에 영향을 끼치지 않고 계속 실행된다는 장점이 있지만 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지한다는 단점이 있다.

멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 문맥전환이 빠르다는 장점이 있지만, 하나의 스레드에 문제가 생기면 전체 스레드가 영향을 받으며 동기화 문제도 있다는 단점이 있다.

 

멀티 스레드의 동시성과 병렬성

동시성은 멀티 작업을 위해 싱글 코어에서 여러 개의 스레드가 번갈아 실행하는 것을 말한다.

병렬성은 멀티 작업을 위해 멀티 코어에서 한 개 이상의 스레드를 포함하는 각 코어들을 동시에 실행하는 것을 말한다.

 

멀티 스레드 환경에서의 주의사항

다수의 스레드가 공유 데이터에 동시에 접근하는 경우, 상호배제 또는 동기화 기법을 이용해 동시성 문제 또는 교착 상태가 발생하지 않도록 주의해야 한다.

 

데드락

둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 상황을 말한다. 예를 들어, 자원 A를 가진 프로세스 P1과 자원 B를 가진 프로세스 P2가 있을 때, P1은 B를 필요로 하고 P2는 A를 필요로 한다면 서로 자원을 얻기 위해 무한정 기다리게 된다.

 

데드락의 4가지 조건

  1. 비선점: 다른 프로세스의 자원을 뺏을 수 없다.
  2. 순환 대기: 두 개 이상의 프로세스가 자원 접근을 기다릴 때, 관계가 순환적 구조이다.
  3. 점유 대기: 공유 자원에 대한 접근 권한을 가진 채로 다른 자원에 대한 접근 권한을 요구한다.
  4. 상호 배제: 한 번에 한 프로세스만 공유 자원에 접근 가능하며, 접근 권한이 제한적일 경우이다.

 

콘보이 현상

콘보이 현상이란 작업 시간이 긴 프로세스가 먼저 큐에 도착해서 다른 프로세스의 실행 시간이 전부 늦춰져 효율성을 떨어트리는 현상을 말한다.

FCFS 스케줄링은 비선점형으로, 순차적으로 큐에 먼저 들어온 작업부터 실행하기 때문에 콘보이 현상이 발생할 수 있다.

 

선점형 스케줄링vs비선점형 스케줄링

선점형은 하나의 프로세스가 다른 프로세스 대신에 CPU를 차지할 수 있음을 말하고, 비선점형은 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음을 말한다.

 

동기vs비동기

동기는 순차적, 직렬적으로 태스크를 수행하고, 비동기는 병렬적으로 태스크를 수행한다.

예를 들어, 서버에서 데이터를 가져와서 화면에 표시하는 작업을 수행할 때, 동기는 서버에 데이터를 요청하고 데이터가 응답될 때까지 이후 태스크들은 블로킹된다.

비동기는 서버에 데이터를 요청한 이후 서버로부터 데이터가 응답될 때까지 대기하지 않고 즉시 다음 태스크를 계속해 수행한다.

 

임계영역(Critical Section)

임계 영역이란 프로세스간에 공유자원을 접근하는데 있어 문제가 발생하지 않도록 한번에 하나의 프로세스만 이용하게끔 보장해줘야 하는 영역을 말한다.

 

임계영역을 해결하기 위한 3가지 조건

  1. 상호 배제: 하나의 프로세스가 임계 영역에 들어가 있다면 다른 프로세스는 들어갈 수 없어야 한다.
  2. 진행: 임계 영역에 들어간 프로세스가 없는 상태에서 들어가려 하는 프로세스가 여러 개라면 어느 것이 들어갈지 결정 해주어야 한다.
  3. 한정 대기: 다른 프로세스의 기아 상태를 방지 하기 위해, 한 번 임계 구역에 들어간 프로세스는 다음번 임계 영역에 들어갈 때 제한을 두어야 한다.
  4.  

뮤텍스 vs 세마포어

뮤텍스는 Lock을 사용해 하나의 프로세스나 스레드를 단독으로 실행하게 한다.

반면, 세마포어는 공유자원에 세마포어 변수만큼의 프로세스가 접근할 수 있다.

현재 수행중인 프로세스가 아닌 다른 프로세스가 세마포어를 해제할 수 있다.

하지만, 뮤텍스는 락을 획득한 프로세스가 반드시 그 락을 해제해야 한다.

0과 1의 값만 갖는 세마포어는 이진 세마포어로, 뮤텍스와 같다.

도메인 제한이 없는 세마포어는 카운팅 세마포어이다.

 

페이지 교체 알고리즘

페이징 기법으로 메모리를 관리하는 운영체제에서 필요한 페이지가 주기억장치에 적재되지 않았을 때 어떤 페이지 프레임을 선택해 교체할 것인지 결정하는 방법

 

FIFO

가장 간단한 알고리즘으로, 메모리에 올라온지 가장 오래된 페이지를 교체한다. 간단하고, 초기화 코드에 대해 적절한 방법이며, 페이지가 올라온 순서를 큐에 저장한다.

 

최적 페이지 교체

앞으로 가장 오랫동안 사용되지 않을 페이지를 교체하는 알고리즘이다. 최적 페이지 교체는 선행 조건이 있는데, 프로세스가 앞으로 사용할 페이지를 미리 알아야 한다는 것이다. 이 조건은 실제 활용에선 알 방법이 없기 때문에 최적 알고리즘은 구현이 불가능하다. 때문에 연구를 목적으로 주로 사용한다.

 

LRU

가장 오래 사용되지 않은 페이지를 교체하는 알고리즘이다. OPT 알고리즘의 방식과 비슷한 효과를 낼 수 있는 방법이며, OPT 알고리즘보다 페이지 교체 횟수가 높지만, FIFO 알고리즘 보다 효율적이다.

 

LFU

참조 횟수가 가장 작은 페이지를 교체하는 알고리즘이다. 만약 대상인 페이지가 여러 개일경우, LRU 알고리즘을 따라 가장 오래 사용되지 않은 페이지를 교체한다.

 

MFU

LFU알고리즘과 반대로, 참조 횟수가 가장 많은 페이지를 교체하는 알고리즘이다.

→ LFU와 MFU는 실제로 잘 사용하지 않는다. 구현에 상당한 비용이 들고, LRU만큼 유사하게 구현하지 못하기 때문이다.

 

리눅스 vs 유닉스

유닉스는 서버에 특화된 운영체제이고, 리눅스는 유닉스에서 파생된 운영체제이다. 유닉스는 서버에 특화된 운영체제이기 때문에 포털이나 대기업의 전용 서버나 인터넷 서버에 주로 이용되며 보안성이 매우 뛰어나다. 리눅스는 오픈소스 운영체제로 누구나 자유롭게 재배포를 할 수 있으며, 이식성이 뛰어나 데이터 센터 및 클라우드 배포에 선호되는 운영체제이다.

 

메인 메모리

메인 메모리는 CPU가 직접 접근할 수 있는 기억장치이다. 프로세스가 실행되려면 프로그램이 메모리에 올라와야 한다. 메인 메모리는 주소가 할당된 일련의 바이트들로 구성되어 있다.

CPU는 레지스터가 지시하는대로 메모리에 접근해서 다음에 수행할 명령어를 가져온다. 명령어를 수행할 때 메모리에 필요한 데이터가 없으면 해당 데이터를 우선 가져와야 한다. 이 역할을 하는 것이 MMU(메모리 관리 장치)이다.

댓글