Atomic
더이상 쪼갤 수 없는, 중간에 방해받지 않고 연산이 완전히 끝나는 연산
Process Synchrinization
1. 공유데이터에 대한 동시엑세스로 인해 데이터의 불일치가 발생할 수 있음
2. 데이터의 일관성을 유지하려면 협력 프로세스의 질서있는 실행을 보장하는 매커니즘이 필요함
즉 동시접근시 문제가 발생하니 동기화로 해결한다.
동기화
여러 프로세스나 스레드가 공유 자원에 접근할 때, 데이터의 일관성을 유지하고 충돌을 방지하기 위한 기술
- 공유 자원 보호, 정확한 실행 순서 보장, Race condition,Critical section problem 방지
Interleaving
atomic하지 않고 한줄마다 인터럽트 가능 -> 실행되다가 순서가 막 섞임
Race condition
다중프로그래밍 시스템에서 두 명령어가 동시에 같은 기억장소를 엑세스할때 그들 사이의 경쟁에 의해
수행결과를 예측할 수 없게 되는 것
<문제점>
- 발생 시 데이터 일관성 깨짐
- 프로세스들이 동시에 접근해 조작할때 어떤 프로세스가 가장 마지막에 끝나는가에 따라서 shared data의 마지막 값이 결정됨
Critical section problem
Critical section : 각 프로세스에서 shared data에 접근되는 코드블락
<문제>
여러 프로세스가 동시에 접근해서 데이터 일관성 깨짐
<문제 해결법>
- 차례대로 접근하게 하기
즉 한 프로세스가 cs에서 실행될때 다른 프로세스들은 cs에서 실행이 허락되지 않도록 보장해야함
즉 두개 이상의 프로세스가 동시에 접근할때 문제 발생!!!!!!
동시에 접근하는 프로세스를 서로 동기화해서 해결해야함
Critical section problem 해결방법
1. Mutual Exclusion 상호배제
- 만약 p0이 cs에서 실행중이면 다른 p1은 cs에서 실행 불가
2.progress 진행
- cs에 실행되는 프로세스가 없고 cs에 진입하려는 프로세스가 있다면 바로 진입
3. bounded waiting 한정된 대기
- 프로세스가 cs에 진입요청했을때 무한대기 x 그러려면 cs에 진입한 프로세스는 독점사용하지 못하게 진입 횟수에 한계줌
-> 기아 방지
동기화 방법 : sw적 해결 알고리즘, hw적
Semaphore
- sw적 동기화 기구
- sw적 기법을 써서 내부적으로 atomic하게 돌아가며 cpu를 낭비하지 않게 구현함
<세마포어 S : 변수>
사용가능한 컴퓨터 자원 수 의미
<연산>
p(): 대기(wait) 연산. 자원을 요청하며, 자원이 없으면 대기
v(): 신호(signal) 연산. 자원을 반환하며, 대기 중인 프로세스가 있으면 하나를 깨움
<특징>
p()와 v() 연산은 원자적이며, 항상 차례로 실행
이 연산들이 실행되는 동안에는 다른 인터럽트가 발생하지 않도록 조치
세마포어 변수는 오직 p()와 v() 연산으로만 접근 가능
'OS' 카테고리의 다른 글
Deadlock (1) | 2024.10.28 |
---|---|
OS Scheduling (0) | 2024.10.27 |
Process, Thread (0) | 2024.10.26 |
Multi Programmed System : Dual- Mode, protection 기법 (0) | 2024.10.26 |
저장 구조 및 입출력 (3) | 2024.10.26 |