본문 바로가기
운영체제

[운영체제] Process Synchronization

by moonstal 2022. 5. 1.

프로세스 동기화

race condition 발생

  • 커널 수행 중 인터럽트 발생시
  • 프로세스가 시스템 콜하여 커널모드 수행중에 context switch
  • multiprocessor에서 shared memory 내의 kernel data

process synchronization 문제

  • 공유데이터 동시접근시 데이터 불일치
  • 일관성 유지-실행순서 정하는 메커니즘 필요
  • Race condition: 여러 프로세스 동시에 공유데이터 접근
  • 데이터 최종 연산 결과 마지막 프로세스에 따라 달라짐
  • race condition 방지:concurrent process 동기화 되어야함

critical section 문제

  • n개의 프로세스가 공유 데이터를 동시 사용하기 원하는 경우
  • 각 프로세스 code segment에 공유데이터 접근 코드 critical section 존재

문제 해결 조건

  • 상호배제: critical section 수행 중에 다른 프로세스 들어가면 안됨
  • progress: critical section에 아무도 없으면 가능
  • 유한대기: 다른 프로세스들이 critical section에 들어가는 횟수 한계

피터슨 알고리즘

  • flag[i]=true 나 들어갈거임
  • turn == j(상대방으로 바꿔놔)
  • i는 flag[j] && turn == j 일때만 기다려
  • 나올 때 flag[i]=false로
  • busy waiting 문제

synchronization hardware

  • 하드웨어적으로 test&modify를 atomic하게 수행 할 수 있도록 지원하면 간단히 문제 해결

semaphores

  • 추상 자료형(정수형)
    • P(s) 공유데이터 획득
    • V(s) 공유데이터 반납
  • counting semaphore
    • 도메인이 0이상인 임의의 정수값
    • 주로 resours counting에 사용
  • binary semaphore
    • 0 또는 1만
    • 주로 mutual exclusion (lock/unlock)에 사용
  • 문제점
    • 코딩하기 힘듦
    • 정확성 입증 어렵
    • 자발적 협력 필요
    • 한번 실수 모든 시스템 치명적 영향

bounded buffer problem

  • 버퍼크기 유한

reader writer problem

  • 한 프로세스가 디비에 write 중일 때 다른 프로세스 접근금지
  • read는 동시 가능

monitor

  • 동시 수행중인 프로세스 사이에서 abstract data type 안전한 공유 보장 위함
  • 모니터 내에 한번에 하나의 프로세스만 활동 가능
  • condition variable: wait과 signal연산의해 접근

http://www.kocw.net/home/search/kemView.do?kemId=1046323&ar=pop

'운영체제' 카테고리의 다른 글

[운영체제] Memory Management  (0) 2022.05.06
[운영체제] Deadlocks  (0) 2022.05.03
[운영체제] CPU Scheduling  (0) 2022.04.28
[운영체제] Process Management  (0) 2022.04.25
[운영체제] Process  (0) 2022.04.23