본문 바로가기
운영체제

[cs 스터디 - 운영체제 4주차]

by 근즈리얼 2024. 2. 5.
728x90

<질문 1> 병행성(동시성)에 대해 설명해주세요.

답변

  • 병행성은 여러 작업을 번갈아가며 빠르게 수행시킴으로써
  • 사용자가 다수의 작업이 도잇 작동하는 것처럼 느끼는 것을 말함
  • 여러 프로세스들을 번갈아가며 수행시키면, 공유 자원에 대한 문제가 생길 수 있기 때문에 프로세스간 동기화 작업을 해줘야 함

 

<질문 2> 병렬성에 대해 설명해주세요.

답변

  • 실제 물리적으로 동시에 실행되는 것을 뜻함
  • 여러개의 CPU들이 동시에 멀티 쓰레드를 실행시키는 것을 예시로 들 수 있음

 

<질문 3> 프로세스 동기화에 대해 설명해 주세요.

답변

  • 프로세스 동기화란, 협력하는 프로세스 사이에서 공유 자원의 일관성을 보장하는 것
  • 프로세스가 공유 자원을 서로 사용하려는 상황에서 Race Condition을 방지하기 위해 특별한 규칙(Lock - 뮤텍스, 세마포어)을 만드는 것

 

<질문 4> Critical Section에 대해 설명해주세요.

답변

  • 여러 프로세스가 동시에 사용할 수 없는 공유자원에 접근하는 프로그램의 코드의 일부분
  • 공유 데이터에 대한 동시 접근은 어떤 프로세스가 마지막에 공유 데이터를 다뤘는지에 따라 연산의 최종 결과가 달라지기 때문에 Critical Sectrion에 대한 동기화 작업을 해줘야 함

 

<질문 5> Race Condition이 무엇인가요?

답변

  • 여러 프로세스들이 동시에 공유 데이터에 접근하는 상황
  • 공유 데이터에 대한 동시 접근은 어떤 프로세스가 마지막에 공유 데이터를 다뤘는지에 따라 연산의 최종 결과가 달라지기 때문에 공유 데이터 접근에 대한 프로세스 동기화 작업을 해줘야 함

<질문 6> Race Condition을 어떻게 해결할 수 있나요?

답변

  • 한 순간에 하나의 프로세스나 쓰레드가 접근할 수 있도록 락을 활용하는 것

 

<질문 7> Mutual Exclusion에 대해 설명해주세요.

답변

  • 상호배제란 특정 시점에 단 하나의 프로세스만이 Critical Section 즉 공유자원에 접근하게 하는 방법
  • 공유 데이터에 대한 동시 접근은 어떤 프로세스가 마지막에 공유 데이터를 다뤘는지에 따라 연산의 최종 결과가 달라지기 때문에 상호배제를 통한 동기화 작업을 해줘야 함

 

<질문 8> Mutual Exclusion을 할 수 있는 방법은?

답변

  • 소프트웨어적으로
    • 프로세스에 수행에 대한 순서번호 변수와 공유변수 사용 의사를 표현하는 변수들을 통해 상호배제를 구현
    • 대표적으로 피터슨 알고리즘
  • 하드웨어적으로
    • 읽기와 쓰기 작업이 원자적으로 실행되는 TestAndSet이라는 함수를 사용하여 상호배제를 보장

 

<질문 9> 뮤텍스(Mutex)에 대해 설명해주세요.

답변

  • 뮤텍스는 공유 자원에 대해 Lock과 UnLock을 수행함으로써 상호배제를 보장하는 방법
  • 뮤텍스에서는 프로세스가 공유자원을 사용하기 위해서 Lock을 획득해야 함
  • 공유자원을 다 사용했다면 unLock을 해주어 다른 프로세스가 사용할 수 있도록 해줘야 함
  • 뮤텍스는 하나의 공유 자원에 대해 동기화를 수행 한다는 점에서 이진 세마포어와 비슷함
  • 하지만, 뮤텍스에서는 공유자원에 lock을 걸었던 프로세스만이 lock을 풀 수 있고 이진 세마포어는 공유자원에 lock을 걸었던 프로세스가 아니어도 lock을 풀 수 있다는 차이가 있음

<질문 10> 세마포어에 대해 설명해주세요.

답변

  • 세마포어는 프로세스 동기화 기능을 제공해주는 추상 자료형
  • 세마포어 자료형의 세마포어 변수는 자원의 개수를 나타내고 P연산과 V연산은 각각 공유 자원의 획득과 반납을 수행
  • P연산은 세마포어 변수를 하나 감소 시킴
  • 만약, 이때 세마포어 변수가 음수가 되면 해당 프로세스를 세마포어의 블록큐로 이동시켜 대기하게 함
  • V연산은 세마포어 변수를 하나 증가 시킴
  • 만약, 이때 블록 큐에 대기하고 있던 프로세스가 있다면, 해당 프로세스를 깨우고 공유 자원을 획득하고, 수행할 수 있도록 함
  • Critical Section에 진입하기 전에 P연산을 통해 공유 자원을 획득하고 Critical Section에서 나오면서 V연산을 통해 공유 자원을 반납
  • 세마포어의 P연산과 V연산을 잘못 쓰게 되면 상호배제가 깨지거나 데드락이 발생할 수 있는 단점이 있음
  • 이때는, 고수준의 동기화 기능을 제공하는 모니터로 해결할 수 있음

<질문 11> 뮤텍스(Mutex)와 이진 세마포어의 차이에 대해 설명해주세요.

답변

  • 뮤텍스와 이진 세마포어의 핵심 차이는 뮤텍스의 경우 락을 설정한 프로세스만이 락을 해제할 수 있지만, 이진 세마포어의 경우 락을 설정한 프로세스와 해재하는 프로세스가 서로 다를 수 있음

 

<질문 12>  모니터에 대해 설명해주세요.

답변

  • 모니터는 프로그래밍 언어 수준에서 동기화 기능을 제공
  • 모니터 내부에는 공유 자원과 공유 자원에 접근하기 위한 프로시저들이 있음
  • 또한, 모니터 내부에는 단 하나의 프로세스만 존재할 수 있기 때문에 동기화 문제가 자연스럽게 해결
  • 모니터를 사용하면 프로그래머는 간편하게 동기화를 수행할 수 있음

 

<질문 13> 데드락이 무엇인가요?

답변

  • 2개 이상의 프로세스가 다른 프로세스의 작읍이 끝나기만을 기다리며 작업을 더 이상 진행하지 못하는 상황을 의미

<질문 14> 데드락 발생 조건 4가지를 설명해 주세요.

답변

  • 상호배제 : 한 번에 한 프로세스만 해당 자원을 사용할 수 있어야 함
  • 점유 대기 : 할당된 자원을 가진 상태에서 다른 자원을 뺏을 수 없음
  • 비선점 : 다른 프로세스가 자원의 사용을 끝낼 때까지 자원을 뺏을 수 없음
  • 순환 대기 : 점유와 대기를 하는 프로세스 간의 관계가 순환 형태를 이루어야 함. 점유와 대기를 하는 프로세스들이 서로 방해하는 방향이 원을 이루면 프로세스들이 서로 양보하지 않기 때문에 교착 상태에 빠짐

<질문 15> 데드락을 막는 방법에 대해 설명해주세요.

답변

  • 예방 : 데드락 발생 조건 4가지 중 하나라고 만족되지 않도록 만들기
  • 회피 : 할당되는 자원의 수를 조절하여 교착 상태 피하기
  • 검출 후 회복 : 타임아웃이나 자원 할당 그래프를 활용해 교착 상태를 검출하고, 교착 상태를 일으켜 프로세스를 종료해서 교착 상태를 회복
  • 무시 : 데드락 상태를 방치하여 개발자가 문제가 있으면 수동으로 프로세스를 종료

 

728x90

'운영체제' 카테고리의 다른 글

[cs 스터디 - 운영체제 3주차]  (0) 2024.01.21
[cs 스터디 - 운영체제 2주차]  (0) 2024.01.15
[CS스터디 - 운영체제 1주차]  (0) 2024.01.08

댓글