티스토리 뷰
Computer Science/Operating System
병행성(Concurrency) : 상호배제(Mutual Exclusion)와 동기화(Synchronization)
꿈을 위해 잠을 잊은 그대에게 2020. 7. 7. 18:38Goal
- 병행성(Concurrency)의 원리와 주요 용어를 이해할 수 있음
- 경쟁상태(Race Condition)의 문제점에 대해 이해할 수 있음
- 상호배제(Mutual Exclusion)의 필요성을 이해할 수 있음
- 세마포어를 정의하고 동작 방식을 이해할 수 있음
- 모니터를 정의하고 동작 방식을 이해할 수 있음
- 메시지 전달을 이용한 상호배제 기법을 이해할 수 있음
병행성 원리
-
병행 처리의 문제점
- 전역 자원의 공유가 어려움
- 운영체제가 자원을 최적으로 할당하기 어려움
- 프로그래밍 오류를 찾아내는 것이 어려움
-
병행성과 관련 있는 주요 용어
-
운영체제 고려 사항
- 다양한 프로세스의 행위를 추적할 수 있어야함
- 각 프로세스에게 자원을 할당하거나 반납 받을 수 있어야함
- 한 프로세스가 소유한 자원이나 데이터를 다른 프로세스의 간섭으로부터 보호할 수 있어야함
- 수행 결과가 프로세스들의 수행 순서와 독립적일 수 있도록 보장해야함
-
자원 경쟁
- 병렬 프로세스들이 같은 자원을 사용하려고 경쟁하면 충돌이 발생함(I/O 장치, 메모리, 처리기 시간, 클락 등)
- 프로세스들이 경쟁하면 3가지 제어 문제가 발생함
- 상호배제
- 교착상태
- 기아
상호배제
-
요구조건
- 어느 한 순간에는 오직 하나의 프로세스만이 임계역역에 진입할 수 있음
- 임계영역이 아닌 곳에서 수행이 멈춘 프로세스는 다른 프로세스의 수행을 간섭해서는 안됨
- 임계영역에 접근하고자 하는 프로세스의 수행이 무한히 미뤄져서는 안됨. 즉 교착상태 및 기아가 일어나지 않아야함
- 임계영역이 비어 있을때, 임계영역에 진입하려고 하는 프로세스가 지연되어서는 안됨
- 프로세서의 개수나 상대적인 프로세스 수행 속도에 대한 가정은 없어야함
- 프로세스는 유한 시간 동안만 임계영역에 존재할 수 있음
-
해결방법
- 어느 한 순간에는 오직 하나의 프로세스만이 임계영역에 진입
- 소프트웨어적 접근방법
- 수행 부하가 높고, 논리적 오류의 위험성이 큼
- 하드웨어 지원
- 인터럽트 금지(오버헤드가 큼)
- 특별한 기계 명령어: Test and Set, Compare and Swap, Exchange
- 단점 : 바쁜 대기, 기아상태 및 교착상태 발생 가능
- 세마포어
- 모니터
- 메시지 전달
대표적인 병행성 기법
병행성 기법 - 세마포어
-
정의 : 상호 배제를 운영체제와 프로그래밍 언어 수준에서 지원하는 메커니즘
-
3가지 인터페이스
- 초기화 연산(Initialize Operation) : 세마포어 값을 음이 아닌 값으로 초기화
- 대기 연산(Wait Operation) : 세마포어 값을 감소시키며, 값이 음수이면 호출한 프로세스는 블록됨 -> 음수가 아니면 프로세스는 계속 수행될 수 있음
- 시그널 연산(Signal Operation) : 세마포어 값을 증가시킴. 값이 양수가 아니면 블록된 프로세스를 깨움
-
세마포어 구현
- 임계영역이 아닌 정상적인 실행에서는 프로세스들이 병렬 처리되지만, 임계영역에서는 직렬화됨
-
결론
- semWait와 semSignal은 원자적으로 구현되어야 함
- 하드웨어 또는 펌웨어로 구현 가능하며, Dekker’s 또는 Peterson’s 알고리즘 같은 소프트웨어적인 기법으로도 구현 가능
생산자/소비자 문제
- 병행 수행되는 생산자와 소비자
- 생산된 item을 버퍼에 저장
- 한 순간에 하나의 생산자 또는 소비자만 버퍼에 접근 가능
- 생산자는 가득 찬 버퍼에 item을 저장하면 안됨. 또한 소비자는 빈 버퍼에서 item을 꺼내면 안됨
모니터(Monitor)
- 정의
- 상호배제를 위한 소프트웨어 모듈(프로그래밍 언어 수준에서 제공)
- 세마포어처럼 상호 배제 기능 제공하며 사용이 훨씬 쉬움
- 특징
- 지역 변수는 모니터 내부에서만 접근 가능
- 프로세스는 모니터 프로시저 중 하나를 호출함으로써 모니터 내부로 진입
- 한 시점에 단 하나의 프로세스만 모니터 내부에서 수행 가능
판독자/기록자 문제
- 정의
- 병행 수행되는 판독자와 기록자
- 공유 자원(파일, 데이터베이스)
- 요구조건
- 여러 판독자들이 공유 데이터를 동시에 읽을 수 있음
- 한 시점에 오직 하나의 기록자만 공유 데이터를 변경할 수 있음
- 기록자가 데이터를 변경하고 있는 동안 판독자가 그 데이터를 읽을 수 없음
- 해결방법
- 세마포어를 이용한 기록자 우선 방법과 판독자 우선 방법
- 메시지 전달을 이용한 해결 방법
'Computer Science > Operating System' 카테고리의 다른 글
쓰레드(Thread)의 개념과 장단점 (0) | 2020.07.06 |
---|---|
프로세스 기술 및 제어 (0) | 2020.07.05 |
운영체제(Operating System) 개요 (0) | 2020.07.04 |
프로세스의 주소 공간 (0) | 2020.05.29 |
프로세스(Process) & 스레드(Thread) (0) | 2020.05.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크