안녕하세요, 혼자 공부하는 컴퓨터 구조 + 운영체제를 공부하고 학습한 자료를 남깁니다.
- 01.들어가며
(이 프로세스들이 동시에 실행해도 괜찮을까?)
(스레드 또한 동기화의 대상이기도 하다.)
(프로세스들의 동기화를 고려해야 한다.)
- 02.동기화의 의미
공동의 목적을 위해서 동시 다발적으로 협력해서 수행되는 프로세스들은 아무렇게나 실행되서는 안 된다.
올바른 수행을 위해 프로세스들을 동기화해주어야 한다.
실행 순서 제어, 상호 배제 이렇게 두 가지 동기화가 있다.
실행의 문맥을 갖는 프로세스 및 스레드는 동기화의 대상이다.
- 03.실행 순서 제어를 위한 동기화
반드시 writer 프로세스가 실행되어야 reader 프로세스가 같은 작업 파일인 book.txt 파일을 읽을 수 있다.
- 04.상호 배제를 위한 동기화
프로세스가 교차해서 처리되면 오류가 발생할 수 있다.
잔액이라고 하는 데이터를 동시에 사용을 했기 때문에 오류가 발생한 것이다.
문맥 교환이 일어나더라도 기다려야 한다.
- 생산자 소비자 예제
모든 프로그램은 동기화를 제공한다.
버퍼 즉 저장 공간에서 데이터를 서로 삽입하거나 뺀다.
총합을 10으로 초기화 해보자.
동시에 접근해서는 안 되는 자원: 총합에 접근했기 때문이다.
이미 진입한 프로세스 외에는 대기를 해야 합니다.
고급언어를 저급언어로 변환하면 한 줄의 코드가 아닙니다. 여러 줄의 코드가 발생합니다.
컴퓨터 내부에서는 한 줄이 아니다.
이 도중에 문맥 교환이 발생을 하면 문제가 발생한다.
반드시 동기화 되어야 한다.
감사합니다.
참고 url - https://www.youtube.com/watch?v=0YDjblJn30k&list=PLYH7OjNUOWLUz15j4Q9M6INxK5J3-59GC&index=36
'혼자 공부하는 컴퓨터 구조 및 운영체제 (복습)' 카테고리의 다른 글
[운영체제] 교착 상태란? (2) | 2024.10.19 |
---|---|
[운영체제] 프로세스 동기화 기법 (2) | 2024.10.19 |
[운영체제] CPU 스케줄링 알고리즘 (2) | 2024.10.18 |
[운영체제] CPU 스케줄링 개요 (2) | 2024.10.18 |
[운영체제] 파이썬 코드로 스레드 확인하기 (1) | 2024.10.18 |