jacketList

기술면접 - 운영체제 본문

면접

기술면접 - 운영체제

ukkkk7 2023. 9. 7. 16:56
728x90
반응형

23.09.22ver

 

 

프로세스와 쓰레드의 차이

프로세스 : 실행중인 프로그램을 지칭, 완벽히 독립적이기 때문에 메모리 영역(Code, Data, Heap, Stack)을 다른 프로세스와 공유하지 않고 최소 1개의 쓰레드(메인 쓰레드)를 가진다.

 

쓰레드 : 프로세스 내에서 Stack만 따로 할당 받고, 그 외의 메모리 영역을 공유하기 때문에 다른 쓰레드의 실행 결과를 즉시 확인 가능, 프로세스 내에 존재하며 프로세스가 할당받은 자원을 이용

 

멀티 프로세스와 멀티 쓰레드

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

 

멀티 쓰레드 : 멀티 프로세스보다 적은 메모리 공간을 차지하고 문맥 전환이 빠르다는 장점이 있지만 하나의 쓰레드에 문제가 생기면 전체 쓰레드가 영향을 받기 때문에 동기화에 신경 써야함

 

멀티 쓰레드로 처리하는 이유는 프로세스를 생성하여 자원을 할당하는 시스템 콜이 감소함으로써 자원의 효율적 관리가 가능하고 프로세스간 통신보다 쓰레드 간의 통신 비용이 적기 때문 그러나 공유 자원으로 인한 '동기화'  문제는 신경 써줘야 함

 

 

시스템 콜(System Call) 이 무엇인가요?

시스템 콜(System Call)은 사용자나 응용 프로그램이 커널에서 제공하는 기능을 사용하기 위한 인터페이스

 

운영체제는 커널이 제공하는 서비스를 '시스템 콜'을 사용해야만 사용할 수 있도록 제한함으로써 컴퓨터 자원을 보호하면서 사용자나 응용프로그램에게 서비스를 제공할 수 있습니다.

 

 

커널이란 무엇인가

커널은 메모리에 상주하는 운영체제의 일부분 - 운영체제의 핵심적인 부분

운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리에 load해서 사용

 

 

 

멀티 쓰레드의 동시성 병렬성

동시성 : 멀티 작업을 위해 싱글 코어에서 여러 개의 쓰레드가 번갈아 실행되는 것을 말함

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

 

 

 

 

데드락(Dead Lock)이란

둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 상황

ex) 자원 A를 가진 프로세스 P1과 자원 B를 가진 P2가 서로의 자원 A, B를 필요로 해 서로의 자원을 얻기 위해 무한정 기다리는 상태

 

데드락의 4가지 조건

  • 비선점(Non-preemptive) : 다른 프로세스의 자원을 뺏을 수 없음
  • 순환 대기(Circular wait) : 두 개 이상의 프로세스가 자원 접근을 기다릴 때, 관계가 순환적 구조
  • 점유 대기(Hold & Wait) : 공유 자원에 대한 접근 권한을 가진 채로 다른 자원에 대한 접근 권한을 요구
  • 상호 배제(Mutual Exclusion) : 한 번에 한 프로세스만 공유 자원에 접근 가능하며, 접근 권한이 제한적일 경우

 

데드락을 해결할 수 있는 방법?

 

예방: 데드락의 4가지 조건중 하나 이상이 충족되지 않게 예방

회피: OS가 데드락 발생 가능성 여부를 검사하고 발생 가능성이 없을 경우에만 권한을 부여

탐지 및 복구: OS가 자원을 달라는데로 주면서 주기적으로 데드락 발생 여부를 검사하고 발생했다면 바로 전 상태로 회복하는 기법

무시: 특별한 조치 없음, 데드락이 반드시 발생하는 것은 아니기 때문에 프로그램이 작동을 멈추거나 오류가 발생할 시 사용자가 직접 프로세스를 종료

 

 

동기와 비동기의 차이?

 

동기는 요청이 들어온 순서대로 순차처리 하는 방식이기 때문에 다른 요청이 들어와도 처리중인 요청이 끝날때까지 기다려야 함

비동기는 요청이 들어오는대로 처리하는 병렬처리 방식으로 하나의 요청을 처리할때 다른 요청을 처리 가능

 

 

Mutex(뮤텍스)와 Semaphore(세마포어)에 대해 설명해주세요.

뮤텍스는 하나의 프로세스나 쓰레드만  접근 가능

세마포어는 세포모어의 변수(공유자원의 개수를 나타내는 변수)만큼 프로세스 또는 쓰레드가 접근 가능

 

뮤텍스는 Lock을 획득한 프로세스(쓰레드)가 Lock을 해제해야 함

세마포어는 현재 수행중인 프로세스(쓰레드)가 아닌 프로세스(쓰레드)가 세마포어 해제가능

 

0과 1의 값만 갖는 세마포어 -> 이진 세마포어(Binary semaphore) = 뮤텍스

이외의 세마포어 -> 카운팅 세마포어(Counting semaphore)

 

 

메모리 단편화란 무엇인가?

메모리의 공간이 작은 조각으로 나뉘어져 사용 가능한 메모리가 충분히 존재하지만 프로세스 할당이 불가능한 상태

  • 내부 단편화 : 메모리 조각의 크기가 프로세스의 크기보다 클 때 발생
    • ex) 50MB의 메모리 조각에 40MB의 프로세스를 할당 했을때 10MB가 남는 경우
  • 외부 단편화 : 남은 메모리 조각의 합이 프로세스의 크기보다 크지만, 연속된 메모리가 아니기 때문에 할당 불가능한 상태
    • ex) 20MB의 메모리 조각 -> 15MB의 프로세스가 할당 -> 20MB의 프로세스가 할당  30MB의 프로세스를 할당 한다고 할때 남아있는 메모리는 40MB이지만 연속 되어있지 않아 할당 불가

외부 단편화의 해결방법 - 압축

압축기법은 주기억장치 내 분산되어 있는 단편화된 공간들을 통합하여 하나의 커다란 빈 공간을 만드는 작업

외부 단편화는 해결할 수 있지만 CPU 시간 낭비 문제가 발생하기 때문에 비효율적

 

 

페이징(Paging)과 세그멘테이션(Segmentation)

 

페이징이 무엇인가요?

프로그램을 실행시킬 때 특정 크기의 페이지 별로 잘라서 필요한 부분들만 메모리 공간에 분할해서 넣고 메모리에서는 페이지의 크기에 딱 맞는 공간인 프레임으로 분할 시켜 놓는다.

 

하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 방법

-> 외부 단편화와 압축 작업의 문제점을 해소하기 위해 생긴 방법

 

페이지(Page): 일정한 크기를 가진 블록

페이징(Paging): virtual memory를 page로 나누는 기법. 프로세스의 물리 주소 공간이 연속되지 않아도 됨.

페이지 테이블(Page table): 가상 페이지와 물리 페이지 사이의 맵핑 정보를 담은 테이블

요구 페이징(Demand Paging): 요구된 page만을 메인 메모리에 적재한다. 사용되지 않는 page를 메모리에 적재하는 것을 예방하고 교체시간, 메모리 공간을 절약한다.

 

페이지 테이블(Page table)을 사용하여 논리 메모리를 실제 물리 메모리로 변환하는 과정을 거쳐 실제 메모리에 접근한다. 일반적으로 물리 메모리는 동일한 크기의 frame으로  논리 메모리는 동일한 크기의 page로 나눈다.

 

장점: 메모리를 page단위로 가져와 프로세스의 효율적인 운영이 가능함

단점: page별로 page fault 현상이 발생할 수 있음

(page fault: 프로세스가 페이지를 요청했을 때 그 페이지가 메모리에 없는 경우)

 

*page fault가 발생했을 경우

프레임(물리 메모리)을 새로 할당 받아야 하며, 프로세스가 해당 페이지를 사용할 수 있도록 스왑 영역에서 메인 메모리로 옮겨야 한다. 그리고 페이지 테이블을 재구성 하고, 프로세스의 작업을 재시작해야 함

 

페이지 교체 알고리즘이 무엇인가?

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

 

 

페이지 교체 알고리즘에 대해서 설명해주세요

  • FIFO(First in First out)
    • 메모리에 올라온 지 가장 오래된 페이지를 교체한다
  • Optimal(최적)페이지 교체
    • 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체하는 알고리즘
    • 프로세스가 앞으로 사용할 페이지를 미리 알아야 한다는 선행조건 필요
  • LRU(Least-recently- used)
    • 가장 오래 사용되지 않은 페이지를 교체하는 알고리즘
    • OPT알고리즘과 비슷한 방식의 효과, OPT 알고리즘보다 페이지 교체 횟수가 높지만 FIFO알고리즘 보다 효율적
  • LFU(Least-frequently-used)
    • 참조 횟수가 가장 적은 페이지를 교체하는 알고리즘
    • 대상 페이지가 여러 개 일경우, 가장 오래 사용되지 않은 페이지로 교체
    • 실제 사용에 잘 쓰이지 않음
  • MFU(Most-frequently-used)
    • LFU알고리즘과 반대로, 참조 횟수가 가장 많은 페이지를 교체하는 알고리즘
    • 실제 사용에 잘 쓰이지 않음

 

 

 

 

 

728x90
반응형

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

기술면접 - 네트워크  (0) 2023.08.28
기술면접 준비 - Java  (0) 2023.08.23
기술면접 - Spring  (0) 2023.08.22
기술면접 - 데이터베이스  (0) 2023.08.22