프로세스 동기화
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 |