1. 병행 프로세스(Concurrent Process)
두 개 이상의 프로세스들이 동시에 존재하며, 동시에 (둘 다) 실행 상태에 있는 것을 의미
- 한정된 컴퓨터 하드웨어나 자원을 공유하고, 동시에 작업을 수행하기 위해 사용하는 개념
2. 임계 구역(Critical Section)
다중 프로그래밍 운영체제에서 여러 개의 프로세스가 공유하는 데이터 및 자원에 대하여 어느 한 시점에서는 하나의 프로세스만 자원 또는 데이터를 사용하도록 지정된 공유 자원(영역)을 의미
- 공중 화장실의 각각의 칸
- 상호 배제
- 하나만 가능
- 진행
- 사람이 없으면
- 한계 대기
- 무한정 대기 X
공유 자원(영역)
CPU, 메모리, 디스크, 입출력 장치, 버퍼 등
- 임계 구역에는 하나의 프로세스만 접근할 수 있으며, 해당 프로세스가 자원을 반납한 후에만 다른 프로세스가 자원이나 데이터를 사용할 수 있다.
- 임계 구역은 특정 프로세스가 독점할 수 없다.
- 프로세스가 임계 구역에 대한 진입을 요청하면 일정 시간 내에 진입을 허락해야 한다.
- 현재 임계 구역에서 실행되는 프로세스가 없다면 임계 구역 사용을 기다리며 잔류 영역에 있는 프로세스의 사용을 허락해야 하며, 그 이외에 있는 프로세스는 임계 구역에 진입할 수 없다.
3. 동기화 기법(Synchronization)
두 개 이상의 프로세스를 한 시점에서는 동시에 처리할 수 없으므로 각 프로세스에 대한 처리 순서를 결정하는 것
- 상호 배제의 한 형태
1) 세마포어(Semaphore)
- '신호기', '깃발'을 뜻하며, 각 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 기법
- 세마포어는 다익스트라가 제안하였으머, P와 V라는 두 개의 연산에 의해서 동기화를 유지시키고 상호 배제 원리를 보장한다.
- S는 P와 V 연산만으로 접근 가능한 세마포어 변수로, 공유 자원의 개수를 나타내며 0과 1 혹은 0과 양의 값을 가질 수 있다.
- 세마포어에 대한 연산은 처리 중에 인터럽트되어서는 안된다.
2) 모니터(Monitor)
- 모니터는 동기화를 구현하기 위한 특수 프로그램 기법으로 특정 공유 자원을 프로세스에게 할당하는 데 필요한 데이터와 이 데이터를 처리하는 프로시저로 구성된다.
- 자료 추상화와 정보 은폐 개념을 기초로 하며, 공유 자원을 할당하기 위한 병행성 자료 구조로 이루어져 있다.
- 모니터의 경계에서 상호 배제가 시행된다.
- 모니터에는 한순간에 하나의 프로세스만 진입하여 자원을 사용할 수 있다.
Q. 세마포어와 모니터?(feat. Chat GPT)
모니터와 세마포어는 컴퓨터 프로그램에서 여러 작업이 동시에 진행될 때 문제 없이 서로 협력하도록 돕는 도구입니다. 이를 쉽게 설명해볼게요.
1. 세마포어(Semaphore)
세마포어는 신호등 같은 역할을 합니다.
- 어떻게 작동하나요?
여러 작업(자동차)이 동시에 진행되면 충돌이 날 수 있잖아요? 세마포어는 작업들에게 "멈춰!" 또는 "지나가도 돼!"라고 신호를 주어 순서를 조정합니다.
예를 들어:- 빨간불(멈춤): 자원을 사용할 수 없으니 대기.
- 초록불(진행): 자원을 사용할 수 있으니 진행.
- 어디에 사용되나요?
은행 ATM처럼 한 번에 한 명씩만 사용할 수 있는 자원을 관리할 때 사용됩니다. 여러 사람이 동시에 ATM을 사용하려고 하면, 세마포어가 "기다리세요!"라고 신호를 주는 거죠.
2. 모니터(Monitor)
모니터는 비서 같은 역할을 합니다.
- 어떻게 작동하나요?
여러 작업이 동시에 진행될 때, 한 작업이 끝나기 전까지 다른 작업이 끼어들지 않도록 비서가 문을 잠그고 차례를 관리합니다.
예를 들어:- 한 작업이 시작되면 문을 잠가서 다른 작업이 들어오지 못하게 함.
- 작업이 끝나면 문을 열어 다음 작업이 들어오도록 함.
- 어디에 사용되나요?
하나의 공용 데이터를 여러 작업이 동시에 수정하면 데이터가 엉망이 될 수 있죠. 모니터는 이 데이터를 안전하게 관리할 때 사용됩니다.
쉽게 비교하면:
- 세마포어는 신호등처럼 간단한 규칙을 정해주는 도구.
- 모니터는 비서처럼 조금 더 세부적으로 관리하며 문을 열고 닫는 도구.
비유:
- 세마포어: "운전자들에게 신호등이 말해요. ‘지금은 너희 차례야!’"
- 모니터: "회사에서 비서가 회의실 문을 열고 닫으며 한 팀씩 들어오게 관리해요."
둘 다 컴퓨터가 여러 작업을 동시에 처리할 때, 혼란을 막기 위한 도구랍니다!
Q. 세마포어와 모티너는 서로 어떻게 상호작용하는지?(feat. Chat GPT)
좋은 질문이에요! 모니터와 세마포어는 둘 다 동시에 여러 작업이 실행될 때 문제를 방지하기 위한 도구인데, 이 둘이 어떻게 상호작용할 수 있는지 설명해볼게요.
1. 모니터 내부에서 세마포어를 사용할 수 있음
모니터는 작업 간의 접근을 조율하는 큰 틀(비서) 역할을 합니다. 하지만 모니터 내부에서도 더 세밀한 제어가 필요할 때가 있어요. 이때 세마포어를 사용해 작업 순서를 조정할 수 있습니다.
예를 들어:
- 모니터는 작업이 끝날 때까지 다른 작업을 막지만, 모니터 내부에서도 작업 간의 대기 순서를 정하는 세마포어가 사용될 수 있습니다.
- 한 작업이 특정 조건을 만족해야만 진행 가능한 경우, 세마포어를 통해 "기다려" 또는 "지금 진행해"라는 신호를 보냅니다.
2. 세마포어와 모니터의 역할 분담
둘은 서로 보완 관계로 작동합니다:
- 모니터: 주로 한 번에 하나의 작업만 처리하도록 보장.
- 세마포어: 동시에 여러 작업이 가능할 때, 특정 조건에 따라 작업을 조율.
예시 상황
- 공용 리소스를 사용하는 프로그램이 있음.
- 모니터가 "한 번에 하나의 작업만 이 데이터를 사용할 수 있어!"라고 문을 잠금.
- 그러나 리소스를 사용할 수 없는 상황에서, 세마포어가 "조건이 충족될 때까지 기다리세요."라고 대기 상태를 관리.
3. 실제 상호작용 예제
예제: 주차장 관리 시스템
- 문제: 주차장에는 최대 3대의 차만 들어올 수 있고, 동시에 한 대씩만 주차칸을 사용할 수 있음.
해결:
- 모니터: 한 대씩 주차칸을 사용할 수 있도록 관리 (문 잠그기).
- 세마포어: "주차장에 몇 대가 들어올 수 있는지"를 신호등처럼 관리.
- 세마포어 값이 3이라면, 차가 한 대 들어올 때마다 값을 감소(-1)시키고, 나가면 증가(+1)시킴.
핵심 요약
- 모니터는 한 작업이 끝날 때까지 다른 작업이 끼어들지 않도록 문을 잠금.
- 세마포어는 여러 작업이 동시에 진행될 때 신호등처럼 순서를 조정.
- 이 둘이 협력하면, 프로그램이 한 번에 너무 많은 작업을 처리하려다 충돌하거나 혼란이 생기는 문제를 방지할 수 있어요. 😊
4. 교착 상태(Dead Lock)
둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 대기하고 있는 상태
상호 배제에 의해 일어나는 문제점
5. 교착 상태 발생의 필요 충분 조건
아래 4가지 조건이 모두 충족이 되어야 교착상태가 일어난다.
1) 상호 배제(Mutual Exclusion)
한번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 한다.
2) 점유와 대기(Hold and Wait)
최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다.
3) 비선점(Non-preemption)
다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다.
4) 환형 대기(Curcular Wait)
공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어, 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 한다.
6. 교착상태의 해결 방법
1) 예방 기법(Prevention)
- 교착상태가 발생하지 않도록 사전에 시스템을 제어하는 방법
- 교착상태 발생의 네 가지 조건 중에 하나를 제거(부정)함으로 수행된다.
- 자원의 낭비가 가장 심한 방법
2) 회피 기법(Avoidance)
- 교착상태가 발생할 가능성을 배제하지 않고 교착상태가 일어나면 적절히 피해가는 방법
- 은행원 알고리즘(Banker's Algorithm) 사용
- 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는 데에서 유래한 기법
3) 발견 기법(Detection)
- 시스템에 교착상태가 발생했는지 점검하여 교착상태에 있는 프로세스와 자원을 발견하는 방법
- 교착상태 발견 알고리즘과 자원할당 그래프 등을 이용
4) 회복 기법(Recovery)
- 교착상태를 일으킨 프로세스를 종료하거나 교착상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 방법
'자격증 > 정보처리산업기사' 카테고리의 다른 글
003. 스케줄링 (1) | 2024.12.08 |
---|---|
002. 프로세스 관리 (0) | 2024.12.08 |
001. 운영체제의 개념 (0) | 2024.12.08 |