티스토리 뷰

개념/운영체제

비동기 병행 실행3

상어악어 2022. 4. 1. 10:31
반응형

Test-and-Set

일정횟수동안만 대기 = 한정대기(bounded waiting)

 n-1번 양보하고 들어간다

 

 

 

CAS(Compare and Exchange / Compare and Swap)

Itanium구조는 multicore이다

interrupt는 instruction이 끝나고 다른 instruction시작되기 전에 발생함

 

 

lock cmpxchg

이 순간에는 메모리 접근 한 번만 하게 한다

코어가 여러개있을때도 atomic하게 실행하게한다

 

 

 

CISC(복잡한 INSTRUCTION SET) -> CAS힘듬

RISC(단순한 INSTRUCTION SET)

 

 

0,0,1

0==0이니까

lock이 1들어감

CAS false되니까

임계구역들어감

 

 

 

 

CAS 명령어를 사용한 경쟁조건 회피

다르면 false 같으면 true

while(CAS(&shared, temp, shaed+1)

temp=shared;

 

shared   temp

 

 

 

 

 

 

 

멀티쓰레드프로그램하면

여러녀석이 메모리를 공유하기때문에

예기치않은 문제생기고

배타적인 접근은

임계구역에 해당하는 부분에

코드를 작성해주어야한다

 

 

 

 

 

세마변수

두 개의 원자적 함수로 조작되는 정수 변수

P연산 / wait연산 0이면 대기, 1이면 0뺴주고 임계구역 드렁감

V연산 / signal연산 0이면 1더해줌 

 

 

valueproduced(0)

valueproduced(1) -> v연산

 

생산자

임계구역x 동기화

 

 

 

계수 세마포어

 

 

 

write할땐

read,write못함

 

read할땐

read는가능,write는못함

 

v p v p

 

 

 

java

acquire p연산

release v연산

 

 

 

 

모니터

synchronized

동시에 한 개의 메소드만 사용될수있다

 

 

 

반응형

'개념 > 운영체제' 카테고리의 다른 글

교착상태와 무기한 연기-2  (0) 2022.04.08
교착상태와 무기한 연기  (0) 2022.04.05
비동기 병행 실행2  (0) 2022.03.29
쓰레드  (0) 2022.03.22
프로세스2  (0) 2022.03.18
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함