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 |
댓글