동기화(Synchronization)
동기화는 특정 자원에 접근할 때 한 번에 하나의 프로세스만 접근하거나, 프로세스를 올바른 순서대로 실행되도록 제어하는 것을 의미한다. 이는 시스템의 안정성을 보장하고, 자원 충돌을 방지하기 위해 필수적인 개념이다.
공유 자원(Shared Resources)
공유 자원은 여러 프로세스가 공동으로 사용하는 자원으로, 전역 변수, 파일, 입출력 장치, 보조 기억 장치 등이 될 수 있다. 이러한 자원은 동시에 여러 프로세스가 접근하면 문제가 발생할 수 있으므로, 접근에 대한 관리가 필요하다.
임계 구역(Critical Section)
임계 구역은 공유 자원에 접근하는 코드 중에서 동시에 실행하면 문제가 발생할 수 있는 코드 영역을 의미한다. 임계 구역에 한 프로세스가 들어가 있다면, 다른 프로세스는 임계 구역 밖에서 대기해야 한다. 이는 자원 접근의 안전성을 보장하기 위한 중요한 개념이다.
상호 배제(Mutual Exclusion)
상호 배제는 한 프로세스가 임계 구역에서 작업 중일 때 다른 프로세스가 임계 구역에 진입하지 못하도록 제어하는 것을 말한다. 이를 통해 여러 프로세스가 동일한 자원에 동시에 접근하는 것을 방지하고, 데이터 일관성을 유지할 수 있다.
뮤텍스 락(Mutex Lock)
뮤텍스(Mutex) 락은 임계 구역을 잠금으로써 프로세스 간의 상호 배제를 구현하는 대표적인 방법이다. 뮤텍스는 단순하지만 효과적인 동기화 도구로, 하나의 프로세스가 자원을 사용하고 있는 동안 다른 프로세스가 해당 자원에 접근하지 못하도록 한다.
세마포(Semaphore)
세마포(Semaphore)는 뮤텍스보다 더 확장된 동기화 도구로, 여러 개의 공유 자원을 관리할 수 있다. 세마포는 카운터를 사용하여 특정 자원에 대해 여러 프로세스가 접근할 수 있도록 하거나, 자원이 부족할 때 대기 상태로 만드는 등의 동작을 제어할 수 있다.
모니터(Monitor)
모니터(Monitor)는 세마포에 비해 사용하기 편리한 동기화 도구로, 내부적으로 조건 변수를 사용하여 동기화를 관리한다. 모니터는 객체 지향 프로그래밍 환경에서 주로 사용되며, 동기화와 관련된 복잡한 로직을 간단하게 처리할 수 있다.
교착 상태(Deadlock)
교착 상태(Deadlock)는 프로세스들이 서로가 필요로 하는 자원을 기다리며 무한히 대기하는 현상을 의미한다. 교착 상태는 시스템의 정지 상태를 유발할 수 있으므로, 이를 예방하고 관리하는 방법이 필요하다. 식사하는 철학자 문제는 이러한 교착 상태의 발생을 보여주는 전형적인 예시이다.
자원 할당 그래프(Resource Allocation Graph)
교착 상태를 표현하기 위해 자원 할당 그래프(Resource Allocation Graph)를 사용할 수 있다. 이 그래프는 프로세스와 자원 사이의 관계를 시각적으로 나타내어, 교착 상태 발생 가능성을 분석하는 데 도움을 준다.
교착 상태 발생 조건(Conditions for Deadlock)
교착 상태 발생 조건은 네 가지로 구분된다: 상호 배제(Mutual Exclusion), 점유와 대기(Hold and Wait), 비선점(No Preemption), 원형 대기(Circular Wait)이다. 이 중 하나라도 충족될 경우, 교착 상태가 발생할 가능성이 있다.
교착 상태 예방(Deadlock Prevention)
교착 상태 예방은 교착 상태 발생 조건 중 하나를 충족하지 못하게 하는 방법이다. 이를 통해 교착 상태를 미리 방지할 수 있다.
교착 상태 회피(Deadlock Avoidance)
교착 상태 회피는 시스템이 안전 상태를 유지할 수 있는 경우에만 자원을 할당하는 방법으로, 교착 상태의 위험을 줄인다.
교착 상태 검출 후 회복(Deadlock Detection and Recovery)
교착 상태 검출 후 회복은 교착 상태 발생 여부를 주기적으로 검사하고, 교착 상태가 확인되면 적절한 조치를 통해 시스템을 복구하는 방법이다.
기본 숙제
1. p. 363의 확인 문제 1번
뮤텍스 락과 세마포에 대한 설명으로 옳지 않은 것을 고르세요.
- 뮤텍스 락은 임계 구역을 잠근 뒤 임계 구역에 진입함으로써 상호 배제를 위한 동기화를 이룹니다.
- 세마포는 공유 자원이 여러 개 있는 상황에서도 이용할 수 있습니다.
- 세마포를 이용해 프로세스 실행 순서 제어를 위한 동기화도 이룰 수 있습니다.
- 세마포를 이용하면 반드시 바쁜 대기를 해야 합니다.
답 : 4번
'TIL::Today I Learn' 카테고리의 다른 글
[혼공컴운] '혼자 공부하는 컴퓨터구조 + 운영체제' 스터디 6주차 (0) | 2024.08.18 |
---|---|
[혼공컴운] '혼자 공부하는 컴퓨터구조 + 운영체제' 스터디 4주차 (0) | 2024.07.28 |
[혼공컴운] '혼자 공부하는 컴퓨터구조 + 운영체제' 스터디 3주차 (0) | 2024.07.21 |
[혼공컴운] '혼자 공부하는 컴퓨터구조 + 운영체제' 스터디 2주차 (0) | 2024.07.13 |
[혼공컴운] '혼자 공부하는 컴퓨터구조 + 운영체제' 스터디 1주차 (0) | 2024.07.07 |