경쟁상태(Race Condition)
Q. 경쟁상태(Race Condition)이란 무엇인가요?
- 프로세스가 어떤 순서로 데이터에 접근하느냐에 따라 결과값이 달라질 수 있는 상황을 말합니다.
- 둘 이상의 입력이나 조작이 동시에 일어나 의도하지 않은 결과를 가져오는 경우를 말합니다.
- 동시 접근 시 자료의 일관성을 해치는 결과가 나타날 수 있습니다.
- 경쟁 상태도 교착상태의 종류 중에 하나입니다.
교착상태(DeadLock)
Q. 데드락(교착상태)이 무엇인가요? 발생 조건에 대해 말해주세요
- 데드락은 프로세스가 자원을 얻지 못해서 다음 처리를 하지 못하는 상태를 말하며, 시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생합니다.
- 발생 조건으로는 상호 배제, 점유 대기, 비선점, 순환 대기 모두가 성립해야 합니다.
- 상호 배제 : 자원은 한 번에 한 프로세스만 사용할 수 있음
- 점유 대기 : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재해야 함
- 비선점 : 다른 프로세스에 할당된 자원을 사용이 끝날 때까지 강제로 빼앗을 수 없음
- 순환 대기 : 프로세스 집합에서 순환 형태로 자원을 대기하고 있어야 함
Q. 회피 기법인 은행원 알고리즘이 무엇인가요?
- 운영체제를 안전상태를 유지할 수 있는 요구만을 수락하고 불안전 상태를 초래할 사용자의 요구는 나중에 만족될 수 있을 때까지 계속 거절합니다.
+ 안전상태와 불안전상태
안전상태 | 불안전상태 |
교착상태가 일어날 가능성 없음 프로세스가 요구한 양만큼 자원 할당 가능 안전 순서열 존재함 |
교착상태가 일어날 가능성 있음 프로세스가 요구한 양만큼 자원 할당 불가능 안전 순서열 존재안함 |
시스템은 안전상태에서 불안정 상태로 변할 수 있다.
Q. 교착상태 해결방안은 무엇이 있나요?
- 교착상태 예방, 회피, 탐지, 회복이 있습니다.
- 예방 : 교착 상태 발생 조건 중 하나를 제거하면서 해결한다(자원 낭비 심함)
- 회피 : 교착 상태 발생 시 피해나가는 방법
- 탐지 : 자원 할당 그래프를 통해 교착 상태를 탐지해 그에 대한 오버헤드 발생함
- 회복 : 교착 상태를 일으킨 프로세스를 종료하거나, 할당된 자원을 해제시켜 회복시키는 방법
세마포어(Semaphore)와 뮤텍스(Mutex)
Q. 세마포어(Semaphore)와 뮤텍스(Mutex)의 공통점과 차이점은 무엇인가요?
- 둘 다 병행 처리를 위한 프로세스 동기화 기법입니다. (여러 프로세스나 쓰레드가 공유 자원에 접근하는 것을 제어하기 위한 방법)
- 세마포어는 공유 자원에 세마포어의 변수만큼의 프로세스(or 쓰레드)에 접근할 수 있습니다. 반면에 뮤텍스는 오직 1개만의 프로세스(or 쓰레드)만 접근할 수 있습니다.
- 현재 수행중인 프로세스가 아닌 다른 프로세스가 세마포어를 해제할 수 있습니다. 하지만 뮤텍스는 락(lock)을 획득한 프로세스가 반드시 그 락을 해제해야 합니다.
※ 세마포어 P(임계 구역 들어가기 전에 수행),V(임계 구역에서 나올 때 수행) 연산
※ 뮤텍스 : 접근 조율을 위해 락(lock)과 해제(unlock) 사용, 상태가 1과 0로 이진 세마포어로 부르기도 함
Q. 임계구역(Critical Section)이란 무엇인가요?
-
각 프로세스에서 공유 데이터를 접근하는 프로그램 코드 부분으로 한 프로세스가 임계 구역을 수행할 때는 다른 프로세스가 접근하지 못하도록 해야 합니다.
'cs지식 > Operating System' 카테고리의 다른 글
[OS] 페이징(Paging)과 세그먼테이션(Segmentation) (0) | 2021.02.09 |
---|---|
[OS] CPU스케줄링 (0) | 2021.01.25 |
[OS] IPC(Inter Process Communication) (0) | 2021.01.20 |
[OS] PCB와 Context Switching (0) | 2021.01.20 |
[OS] 시스템 콜(System Call) (0) | 2021.01.20 |