솜이의 데브로그

[cs] 운영체제 본문

CS/etc

[cs] 운영체제

somsoming 2022. 5. 5. 19:16

1. 페이지와 세그멘테이션에 대해서 설명해 보세요.

페이징은 가상 메모리를 고정된 크기로 나누어 메모리를 관리하는 기법을 말합니다.

  • 커다란 크기의 작업을 일정한 크기로 나누어 잘게 쪼개어 처리한다.
  • 메모리를 페이지 단위로 가져와서, 프로세스의 효율적인 운영이 가능하다.
  • 페이지 크기별, 단위별로 페이지 폴트 현상이 발생할 수 있다.

세그멘테이션이란, 메모리를 서로 크기가 다른 논리적인 블록 단위인 세그멘트로 분할하고 메모리를 할당하여 물리 주소를 논리 주소로 변환하는 것을 말합니다.

 

2. 외부 단편화와 내부 단편화에 대해서 설명해 보세요.

외부 단편화

  • 분할된 영역이 할당될 프로그램의 크기보다 작아서 모두 빈 공간으로 남아있는 전체 영역.
  • 세그멘테이션에서 발생

내부 단편화

  • 분할된 영역이 할당된 프로그램의 크기보다 커서 사용되지 않고 남아 있는 빈 공간
  • 페이징에서 발생

 

3. 가상 메모리(Virtual Memory)란 무엇이며, 가상 메모리를 사용했을 때 장단점은?

가상메모리는 프로세스가 메모리 외부에서 실행될 수 있도록 하는 유용한 메모리 관리 기술입니다. 이 기술은 실행 프로그램이 실제 메모리에 맞지 않을때 사용됩니다.

 

 

4. 프로세스와 스레드의 차이는 무엇인가요?

 

process

  • 프로세스란, 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다.
    • 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)
    • 운영체제로부터 시스템 자원을 할당받는 작업의 단위
    • 즉, 동적인 개념으로는 실행된 프로그램을 의미한다.
    • 프로세스는 각 독립된 메모리 영역을 할당받으며, 기본적으로 프로세스당 최소 1개의 스레드를 가지고 있다.

thread

  • 스레드란, 프로세스 내에서 실행되는 여러 흐름의 단위를 말합니다.
    • 프로세스의 특정한 수행 경로
    • 프로세스가 할당받은 자원을 이용하는 실행의 단위
    • 스레드는 프로세스 내에서 각각 Stack만 따로 할당받고, Code, Data, Heap 영역은 공유한다.
    • 스레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내에 스레드끼리 공유하면서 실행된다.

5. 교착상태가 발생하기 위한 조건 4가지는 무엇인가요?

교착상태(Deadlock)이란?

  • 첫번째 스레드는 두번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리고 있고, 두 번째 스레드 역시 첫 번째 스레드가 들고 있는 객체의 락이 기다리는 상황을 말한다.

교착상태의 4가지 조건

  • 상호배제(mutual exclusion)
    • 한번에 한 프로세스만 공유 자원을 사용할 수 있다.
    • 공유 자원에 대한 접근 권한이 제한된다.
  • 들고 기다리기(hold and wait ) = 점유대기
    • 공유 자원에 대한 접근 권한을 갖고 있는 프로세스가 그 접근 권한을 양보하지 않은 상태에서 다른 자원에 대한 접근 권한을 요구할 수 있다.
  • 선취(preemption) 불가능 = 비선점
    • 한 프로세스가 다른 프로세스의 자원 접근 권한을 강제로 취소할 수 없다.
  • 대기 상태의 사이클(circular wait) = 순환대기
    • 두 개 이상의 프로세스가 자원 접근을 기다리는데, 그 관계에 사이클이 존재한다.

 

6. 회피 기법인 은행원 알고리즘이 뭔지 설명해보세요.

교착 상태를 피하기 위한 알고리즘으로, 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데서 유래한 기법이다.

  • 프로세스가 자원을 요구할 때 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지를 사전에 검사하여 교착 상태를 회피한다.
  • 안정 상태에 있으면 자원을 할당하고, 그렇지 않으면 다른 프로세스들이 자원을 해지할 때까지 대기한다.

 

 

7. 세마포어와 뮤텍스란? 차이점은 무엇인가?

  • 뮤텍스(Mutex)
    • 공유된 자원의 데이터를 여러 스레드가 접근하는 것을 막는 것
    • 상호배제라고도 하며, Critical Section을 가진 스레드의 Running time이 서로 겹치지 않도록 각각 단독으로 실행하게 하는 기술이다.
    • 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 synchronized 또는 lock을 사용한다.
  • 세마포어(Semaphore)
    • 공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것
    • 운영체제 또는 커널의 한 지정된 저장장치 내의 값이다.
    • 일반적으로 비교적 긴 시간을 확보하는 리소스에 대해 이용한다.
    • 각 프로세스는 세마포어값을 확인하고 변경할 수 있다.

 

 

8. 동기, 비동기, 블로킹, 넌블로킹 차이를 설명하세요.

  • 동기 (Synchronouse)
    • 두개의 프로세스가 데이터를 주고 받을 때, 주고받는 순서 또는 시간이 일정함을 뜻한다.
    • 어떤 작업을 요청햇을 때 그 작업이 종료될 때까지 기다린 후 다음 작업을 수행한다.
  • 비동기
    • 어떤 작업을 수행했을 때 그 작업이 종료될 때까지 기다리지 않고 (작업을 위임하고), 다음 작업을 수행한다. 요청했던 작업이 끝나면 결과를 받고 그에 따른 추가 작업이 있다면 수행한다.
    • I/O 작업이 잦고 빠른 응답속도를 요구하는 프로그램에 적합하다.
  • 블로킹
    • A 함수가 B 함수를 호출하면, 제어권을 A가 호출한 B함수에 넘겨준다.

  • 논블로킹
    • A 함수가 B 함수를 호출해도 제어권은 그대로 자신이 가지고 있는다.

9. thrashing이란 무엇인지 설명하세요.

thrashing이란, 페이지 부재가 과도하게 발생하는 상황을 말합니다.

주기억장치의 모든 페이지가 활발히 사용되고 있어서 어떤 페이지가 교체된 후 곧바로 반복적인 페이지 부재가 발생하는 것을 말한다.

 

10. 선점스케줄링과 비선점스케줄링, 해당하는 알고리즘 한개씩 말하고 설명해 주세요.

선점 스케줄링

  • 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법
  • 선점으로 인한 많은 오버헤드가 발생한다.
  • 시분할 시스템에 사용하는 스케줄링이다.
    • SRT(Shortest Remaining Time) : 현재 실행중인 프로세스의 남은 시간과 대기 큐에 프로세스의 실행시간이 가장 짧은 프로세스에게 CPU를 할당하는 기법. (SJF알고리즘의 선점 형태로 변환한 기법)

비선점 스케줄링

  • 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법이다.
  • 프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU를 사용한다.
  • 일괄처리 방식의 스케줄링
    • SJF(Shortest Job First) : 실행시간이 가장 짧은 프로세스에 먼저 CPU를 할당하는 기법이다. 가장 적은 평균 대기 시간을 제공하는 최적 알고리즘이다.

'CS > etc' 카테고리의 다른 글

[CS] 데이터베이스  (0) 2022.04.28
[CS] 네트워크  (0) 2022.04.14
[CS] 알고리즘  (0) 2022.04.07
[CS] 개발 상식  (0) 2022.03.31