Home [OS] 병행 프로세스(1)
Post
Cancel

[OS] 병행 프로세스(1)

병행 프로세스


동시에 실행되는 여러 개의 프로세스 또는 쓰레드

CPU 개수에 따른 병행 프로세스의 실행 형태
  1. 한 개의 CPU
    • 각 프로세스가 짧은 시간 간격으로 번갈아 실행되는 인터리빙 형식으로 진행
  2. 여러 개의 CPU
    • 각 프로세스가 각 CPU에서 온전히 실행되는 병행 처리 형식으로 진행
메모리 구조에 따른 병행 프로세스 실행 형태
  1. 강결합 멀티프로세서 시스템
    • 여러 CPU 간에 하나의 기억장치를 공유하며 하나의 운영체제가 모든 CPU와 시스템 하드웨어를 제어 - 공유 메모리 구조
  2. 약결합 멀티프로세서 시스템
    • 2개 이상의 독립된 컴퓨터 시스템을 통신선을 통하여 연결 - 분산 메모리 구조
    • 각 시스템은 자신의 운영체제와 기억장치를 가지고 있으며 독립적으로 운영되고 필요할 때만 통신을 한다.

병행성 문제

  • 병행 프로세스들이 상호작용 하는 경우 발생
    • 공유 자원 점유 문제
    • 동기화 문제
    • 통신 문제

단일 프로세스 내의 병행성

  • 우선순위 그래프
    • 각 정점이 개개의 문장에 대응하는 사이클이 없는 방향 그래프
  • Fork/Join 구조
    • fork : 프로그램 내에서 2개의 병행 수행을 만들어 낸다.
    • join : 병행하는 n개의 연산을 하나로 재결합 시키는 방법을 제공한다.
  • 병행문
    • 1개의 프로세스가 여러 가닥의 병렬 프로세스로 분할되었다가 다시 하나로 결합

프로세스 간의 병행성

  • 비동기 병행 프로세스
    • 어떤 프로세스가 실행 중인 다른 프로세스에 영향을 주는 유기적 프로세스

동기화와 임계영역

경쟁 상태 (Race Condition)
  • 여러 프로세스가 동시에 공유 데이터로 접근 할 때 순서에 따라 결과가 달라지는 현상. 여러 주체가 하나의 데이터에 접근하려 할 때 서로 경쟁하는 상태를 의미한다.

임계영역

  • 2개 이상의 프로세스가 동시에 액세스하면 안 되는 공유자원을 액세스하는 코드 영역
    임계영역 문제 해결을 위한 요구조건
    1. 상호배제
    • 한 프로세스가 임계영역에서 실행 중일 때 다른 어떤 프로세스도 임계영역에서 실행될 수 없음
      1. 진행
    • 임계영역에서 실행 중인 프로세스가 없고 여러 프로세스가 임계영역에 진입하고자 할 때 그 중에서 적절히 한 프로세스를 결정해야 하며 이 결정은 무한정 미룰 수 없음
      1. 제한된 대기
    • 한 프로세스가 임계영역 진입 요청을 한 후 수락될 때까지 다른 프로세스가 임계영역 진입을 허가 받는 횟수는 제한이 있어야 함

상호 배제 해결 방법

  1. SW solutions
    • Dekker’s algorithm (Peterson’s algorithm)
    • Dijkstra’s algorithm, Knuth’s algorithm, Eisenberg and McGuire’s algorithm, Lamport’salgorithm
  2. HW solution
    • TestAndSet(TAS) instruction
  3. OS supported SW solution
    • Spinlock
    • Semaphore
    • Eventcount/sequencer
  4. Language-Level solution
    • Monitor
This post is licensed under CC BY 4.0 by the author.