📌process synchronization(동기화)
- 프로세스들이 서로 동작을 맞추는 것
- 프로세스들이 서로 정보를 공유하는 것
❓왜 동기화 해야하는가
- asynchronous(비동기적) : 프로세스들이 서로 모름
- concurrent(병행적) : 여러개의 프로세스들이 동시에 시스템에 존재
병행 수행중인 비동기적 프로세스들이 공유 자원에 동시에 접근하면 문제가 생김
💻용어정리
- shared data(critical data) : 여러 프로세스들이 공유하는 데이터
- ciritical section(임계영역) : 공유 데이터를 접근하는 코드 영역
- mutual exclusion(상호배제) : 둘 이상의 프로세스가 동시에 critical section에 진입하는 것을 막는 것
- machine instruction(기계어 명령)
- 원자성(가장 작은 명령 단위)
- 분리 불가능
- 한 기계어의 명령 실행 도중에는 인터럽트를 받지 않는다
📌mutual exclusion
📖mutual exclusion methods
- enterCS() primitive
- critical section 진입전 검사
- 다른 프로세스가 해당 critical section에 있는지 확인 = 노크하기
- exitCS() primitive
- critical section 벗어날때 후처리
- critical section을 벗어남을 공지
📖requirements for ME primitives
- ME(상호배제) : CS(critical section)에 프로세스가 있으면 다른 프로세스의 진입을 금지한다
- progress : cs안에 있는 프로세스 외의 다른 프로세스가 cs 진입 금지를 주도할 수 없다. 즉, CS안에 프로세스가 없으면 들어갈 수 있어야한다
- bounded waiting : 프로세스의 cs진입은 유한시간 내에 허용된다. 즉, 언젠가는 CS에 진입해야한다, 무한 대기현상이 없도록 해야한다
3가지 조건을 만족하는 ME primitives 알고리즘들(다음 포스팅 계속...)
📮출처 : https://www.youtube.com/watch?v=hzXVQIlSSos&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN