Process Synchronization

gmkim·2023년 11월 14일
0

OS

목록 보기
5/11
post-thumbnail

Process Synchronization

Race Condition

  • 공유 메모리를 사용하는 프로세스들
  • 커널 내부 데이터를 접근하는 루틴들 간 (시스템콜)

OS에서 언제 Race Condition이 발생하는가?

  1. kernel 수행 중 인터럽트 발생 시
  2. Process가 system call을 하여 kernel mode로 수행 중인데 context switch가 일어나는 경우
  3. Multiprocessor에서 shared memory 내의 kernel data

Process Synchronization 문제

  • 공유데이터 shared data의 동시 접근 concurrent access는 데이터의 불일치 문제 inconsistency를 발생시킬 수 있다.
  • 일관성 consistency 유지를 위해서는 협력 프로세스 cooperating process 간의 실행 순서 orderly execution를 정해주는 매커니즘 필요

Critical-Section Problem

  • n개의 프로세스가 공유 데이터를 동시에 사용하기를 원하는 경우
  • 각 프로세스의 code segment에는 공유데이터를 접근하는 코드인 critical section이 존재
  • Problem
    • 하나의 프로세스가 critical section에 있을 때 다른 모든 프로세스는 critical section에 들어갈 수 없어야 한다

프로그램적 해결법의 충족조건

  • Mutual Exclusion(상호 배제)
    • 프로세스 Pi가 critical section 부분을 수행 중이면 다른 모든 프로세스들은 그들의 critical section에 들어가면 안된다.
  • Progress
    • 아무도 critical section에 있지 않은 상태에서 critical section에 들어가고자 하는 프로세스가 있으면 critical section에 들어가게 해주어야 한다.
  • Bounded Waiting(유한대기)
    • 프로세스가 critical section에 들어가려고 요청한 후부터 그 요청이 허용될 때까지 다른 프로세스들이 critical section에 들어가는 횟수에 한계가 있어야 한다

해결 방법 #1

해결 방법 #2

해결 방법 #3 : Peterson's Algorithm

Synchronization Hardware

  • 하드웨어적으로 Test & Modify를 atomic(intruction 단위로 끊어)하게 수행할 수 있도록 지원하는 경우 앞의 문제는 간단히 해결됨

Semaphores

  • 앞의 방식들을 추상화시킴
    • 추상자료형(object, operation) → 더 알아보기
  • Semaphore S
    • integer variable
    • 아래의 두가지 automic 연산에 의해서만 접근 가능

profile
🌊 Flooding loads of work

0개의 댓글