일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- UserDefaults
- 데드락
- Algorithm
- SwiftUI
- 앨런
- Swift
- 100 days of SwiftUI
- core data
- 프로세스 스케줄링
- forEach
- COLOR
- Codable
- Apple Developer Academy
- scrollview
- 오브젝트
- 가상 메모리
- 상호배제
- decode
- 비동기
- struct
- deadlock
- 운영체제
- IOS
- 동시성
- 인프런
- @state
- 동기화
- Linked List
- 알고리즘
- async
Archives
- Today
- Total
기어가더라도 제대로
[운영체제-김덕수 교수님] 프로세스 동기화, 상호 배제 - Spinlock(4/7) 본문
HW 솔루션도 Busy Waiting 문제가 있다는 것을 알게됨
Spinlock
- 정수 변수
- S = a + 1
- 위와 같은 연산은 불가
- S = a + 1
- 초기화, P(), V() 연산으로만 접근 가능
- 위 연산들은 indivisible(or atomic) 연산
- OS support 보장
- 전체가 한 Instruction cycle 에 수행 됨
- 위 연산들은 indivisible(or atomic) 연산
- S = 물건의 개수
- P() 물건을 꺼내가는 것
- 자물쇠를 거는것
- V() 물건을 집어 넣는 것
- 자물쇠를 푸는 것
- active 라는 변수를 가정해 보겠습니다.
- 1
- 물건이 있다.
- 있어야 다른 프로세스가 실행 가능
- 0
- 물건이 없다.
- 1
- P = 잠는 것 - 잠그고 일을하다 끝나면 나올 때 푼다.
- V = 푸는 것
프로세서가 하나인 경우
- Pi 가 active 를 0 으로 만들고 열심히 일을 하고있다.
- Pi가 끝나면, Pj가 들어간다.
- 만약 Pj가 루프에 걸린다면?
- Pi는 다시 들어갈 수가 없다.
멀티 프로세서 시스템에서만 사용가능
- Busy waiting 존재
이를 해결하기 위해 Semaphore 가 등장했다.
'CS > 운영체제' 카테고리의 다른 글
[운영체제- 김덕수 교수님] 프로세스 상호배제, 동기화(6/7) - Eventcount/Sequencer (0) | 2022.08.06 |
---|---|
[운영체제 - 김덕수 교수님] 프로세스 동기화, 상호 배제 - Semaphore(5/7) (0) | 2022.08.03 |
[운영체제 - 김덕수 교수님] 프로세스 동기화, 상호 배제 - TAS(3/7) (0) | 2022.08.03 |
[운영체제-김덕수 교수님]프로세스 동기화 & 상호배제(2/7) (0) | 2022.08.01 |
[운영체제 - 김덕수 교수님]프로세스 동기화 & 상호배제(1/7) (0) | 2022.08.01 |
Comments