■ 프로세스 간 동기화 및 통신
1. 임계영역 (Critical Section) = 위험 영역
- 비동기 절차에 있어서 자기 자신이 또는 다른 비동기 절차 부분과 동시에 실행할 수 없는 부분으로, 하나의 프로세스가 자원을 액세스하고 있을 때, 그 프로세스에 의해 참조되는 프로그램의 부분을 임계영역이라고 한다
- 즉 하나의 프로세스가 공유 데이터에 접근하면, 다른 프로세스는 그 공유 데이터에 접근해서는 안 된다
2. 상호배제 (Mutual Exclusion)
- 여러 개의 병렬 프로세스가 공통의 변수 또는 자원에 접근할 때 그 조작을 정당하게 실행하기 위하여 접근 중인 임의의 시점에서 하나의 프로세스만이 그 접근을 허용하도록 제어하는 것이다
- 한 프로세스가 공유 기억장치 혹은 공유 파일을 사용하고 있을 때, 다른 프로세스가 사용하지 못하도록 배제시키는 제어 기법이다
3. 경쟁조건 (Race Condition)
- 다중 프로그래밍 시스템이나 다중 처리기 시스템에서 두 명령어가 동시에 같은 기억장소를 액세스할 때 그들 사이의 경쟁에 의해 수행 결과를 예측할 수 없게 되는 것이다
- 이와 같은 현상은 바람직하지 않으므로 운영체제는 이것을 해소할 수 있어야 한다
★ 동기화 (상호배제) 기법
① 세마포어 (Semaphore)
- 철도의 까치발 신호기 또는 해군의 수기 신호라는 뜻으로, 운영체계 또는 프로그램 작성 내에서 공유 자원에 대한 접속을 제어하기 위해 사용되는 신호이다
- 병행 내지 병렬로 동작되는 둘 이상의 프로세서 사이에서 마이크로프로세서 시간이나 입ㆍ출력 접속구와 같은 공유 자원을 동시에 사용할 수 없기 때문에, 한 프로세서가 사용하고 있는 동안에 세마포어를 세워서 다른 프로세서를 대기시키고 사용이 끝나면 해제시키는 방법으로 사용한다(화장실에 문 닫고 들어가면 다른 사람이 못 들어간다)
- Dijkstra가 상호배제의 개념을 세마포어(Semaphore)라는 것으로 요약하였다
- 세마포어 연산을 처리하는 도중에는 인터럽트가 발생하면 안된다
- 공유자원에 접근할 수 있는 최대 허용치만큼 사용자의 동시 접근을 허용한다
- 세마포어의 상호배제는 임계영역의 개념을 이용하여 두 프로세스가 하나의 공유 자원을 상호배타적으로 사용하여 동시에 수행할 수 없도록 하는 것이다. 즉 다수의 프로세스가 동시에 그 값을 수정하지 못하게 한다
② 모니터 (Moniter)
- 프로세스 또는 스레드를 동기화 하는 방법 중 하나로써, 한 번에 하나의 프로세스만 모니터에서 활동하도록 보장해준다
- 순차적으로 사용할 수 있는 공유자원 또는 공유자원 그룹을 할당하는 데 사용되며 데이터, 프로시저를 포함하는 병행성 고급 구조체이다
- 모니터 내부의 변수는 모니터 내부에서만 접근할 수 있다. 이것을 정보의 은폐(Information Hiding) 기법이라고 한다
■ 교착상태 (Deadlock)
- 둘 이상의 프로세스가 서로 남이 가진 자원을 요구하면서 양쪽 모두 작업 수행을 할 수 없이 대기상태로 놓이는 상태이다
- 멀티프로그래밍이 가능한 시스템에서 일어날 수 있는 현상으로 A라는 태스크가 B라는 태스크의 종료 후에 실행되기 위해 대기상태에 있을 때, B라는 태스크도 A의 종료 후에 실행을 종료시키는 상태에 있으면 모두 대기상태가 된 채 언제까지나 실행이 시작되지 않아 컴퓨터가 마치 정지해 있는 것처럼 되어 버린다
- 이 상태를 교착상태라고 하며, 이 경우 어느 태스크를 강제적으로 종료시키지 않으면 처리가 행해지지 않는다
★ 교착상태의 4가지 필요조건
① 상호배제 (Mutual Exclusion) : 하나의 자원을 복수의 프로세스(또는 태스크)에서 공용하고 있는 경우 어느 프로세스가 그 자원에 액세스하고 있는 사이 다른 프로세스를 대기상태로 하여 액세스시키지 않도록 하는 제어 방식
② 점우와 대기 (Hold & Wait) : 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다
③ 비선점 (No-preemption)
- 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없다
- 단지 프로세스 자신만이 점유한 자원을 해제할 수 있다
④ 환영대기 (Circular Wait) = 순환대기
- 프로세스와 자원이 원형을 이루며, 각 프로세스가 자신에게 할당된 자원을 가지면서 상대방 프로세스의 자원을 상호 요청하는 경우이다
- 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다
★ 교착상태의 해결 방안
① 예방 (Prevention) : 교착상태 발생조건 중 하나를 부정함으로써 해결한다
② 회피 (Avoidance) : 상태를 파악하여 발생 가능성이 있는 것을 피한다
③ 발견 (Detection) : 사이클의 유무를 판별하여 간선을 제거한다
④ 회복 (Recovery) : 강제적으로 종료시켜서 해결한다
⑤ 자원의 선점에 의한 회복
⑥ 복귀(Rollback)에 의한 회복
⑦ 프로세스 제거에 의한 회복
'정보보호론 > 시스템 보안' 카테고리의 다른 글
스래싱 (Thrashing) (0) | 2020.10.14 |
---|---|
메모리(기억장치) 관리 (0) | 2020.10.14 |
CPU 스케줄링 (CPU Scheduling) (0) | 2020.10.13 |
프로세스 관리 (0) | 2020.10.13 |
운영체제의 기술 발전 흐름과 입ㆍ출력 방식 (0) | 2020.09.16 |