우봉수
2023. 4. 24. 01:06
2023. 4. 24. 01:06
Windows의 동기화
- 단일 처리기 시스템에서는 인터럽트 마스크를 사용
- 다중 처리기 시스템 에서는 스핀락을 사용
- 스핀락을 사용하는 스레드는 절대 선점되지 않음
- dispatcher objects 제공
리눅스의 동기화
- 버전 2.6 이전에는 비선점형 커널을 사용
- 이후 버전에서는 선점형 커널을 사용
- 지원도구
- 스핀락: 단일 처리기 에서는 스핀락을 획득 하고 방출 하는 것이 커널 선점을 불가능하게하고 가능케 하는 것으로 바뀐다.
- 세마포
- 원자적 integer형
- reader-writer 락
Solaris의 동기화
- 지원도구
- turnstiles(우선순위 상속 프로토콜)
- 적응형 뮤텍스
- 조건변수
- readers-writers 락
Pthreads의 동기화
- 지원도구
- 지원 불가능한 확장 도구
- reader-write locks
- spinlocks
대처 방안들
- 트랜잭션 메모리: 메모리 읽기 쓰기 연산의 원자적인 연속적 순서
- 한 트랙잭션의 모든 연산이 완수되어야만 확정
- 만약 그렇지 못 한다면 상태 rollback
- 소프트웨어 하드웨어로 구현
- 소프트웨어 트랜잭션 메모리(STM)
- 하드웨어 트랜잭션 메모리(HTM)
- OpenMP: 공유메모리 환경에서 병렬 프로그램을 지원하는 언어
- 함수형 프로그래밍 언어: 변수값이 변하지 않기 때문에 임계영역 문제를 고민하지 않아도 되는 언어