Post

Operating System | 병행성의 개념

Operating System | 병행성의 개념

병행성(concurrency)의 원리

  • OS는 멀티프로세스를 처리해야함. 멀티프로세스를 처리해야하는 OS의 공통 주제는 아래와 같음
    • Multiprogramming : 단일 프로세서 시스템 + 여러 개 프로세스
    • Multiprocessing : 멀티 프로세서 + 멀티 프로세스
    • Distributed Processing
  • 공유자원(such as memory, files, and I/O access)을 나누고 점유하는데 있어서 방법론이 필요함.
    • 병행성(concurrency)라는 개념 등장

병행성은 다음과 같은 3가지 상황에서 발생한다

  1. 다수의 응용: 다수의 활동 중인 응용들 간에 처리시간의 동적 공유를 위해 멀티 프로그래밍이 발전
  2. 구조화된 응용: 모듈화된 설계 원칙과 구조적인 프로그램이 발전되면서 일부 응용이 병행 프로세스의 집합
  3. 운영체제 구조: 운영체제도 다수의 프로세스와 쓰레드의 집합으로 구현

병행 처리의 문제점

  • 전역 자원의 공유가 어려움
  • 운영체제가 자원을 최적으로 할당하기 어려움
  • 프로그래밍 오류 찾기가 어려움
  • 인터리빙이나 오버래핑으로 인해 발생하는 문제점 -> 단일처리기 시스템에서나 다중처리시스템에서 동일
    • 다른 프로세스의 행동에 종속
    • OS의 스케줄링 정책에 의존
    • OS의 인터럽트 처리 방법에 따라 달라짐

병행성과 관련된 주요 용어 정리

용어 정의 주요 특징 / 핵심 포인트
Atomic Operation (원자적 연산) 수행 도중 중단되거나 다른 프로세스가 중간 상태를 볼 수 없는 연산 - 불가분성(Indivisibility)
- 중간 상태 노출 불가
- 병행 프로세스 간 고립 보장
Critical Section (임계영역) 공유 자원에 접근하는 코드 영역 - 동시에 하나의 프로세스만 접근 가능
- 동기화 기법으로 보호 필요
Deadlock (교착상태) 프로세스들이 서로의 자원을 기다리며 무한 대기하는 상태 - 자원 대기 순환 구조
- 시스템 진행 정지
- 예방/회피/탐지 기법 존재
Livelock (라이브락) 프로세스들이 상태를 계속 바꾸지만 실제로는 아무 작업도 수행하지 않는 상태 - Deadlock과 달리 상태 변화는 존재
- 실질적 진전 없음
- 과도한 재시도 루프 발생 시 흔함
Mutual Exclusion (상호배제) 한 시점에 오직 하나의 프로세스만 임계영역 실행 가능 - 경쟁 방지
- 세마포어, 뮤텍스 등으로 구현
- 임계영역 문제 해결 조건 중 하나
Race Condition (경쟁상태) 여러 프로세스가 동시에 공유 자원에 접근해 결과가 실행 순서에 따라 달라지는 상태 - 비결정적 결과 발생 가능
- 원자성 보장 실패
- 동기화 필요
Starvation (기아) 프로세스가 실행 가능한 상태임에도 스케줄링에서 계속 배제되어 실행되지 못하는 상황 - 우선순위 스케줄링에서 자주 발생
- 공정성(Fairness) 문제
- Aging 기법으로 완화 가능
Shared Resource (공유 자원) 여러 프로세스가 함께 사용하는 자원 (메모리, 파일 등) - 동기화 필요
- 경쟁 상태의 원인
Synchronization (동기화) 여러 프로세스의 실행 순서를 제어하여 일관성을 유지하는 기법 - Mutual Exclusion 구현 수단
- 세마포어, 모니터, 조건 변수 등 사용

자원경쟁

  • 병렬 프로세스들은 같은 자원을 사용하려고 경쟁하면 충돌이 발생한다.
    • 프로세스들이 경쟁(race)하면 다음 3가지 제어 문제가 발생함
    • 상호배제, 교착상태, 기아
  • eg. memory, files, and I/O access, clock
This post is licensed under CC BY 4.0 by the author.