Windows의 동기화

  • 단일 처리기 시스템에서는 인터럽트 마스크를 사용
  • 다중 처리기 시스템 에서는 스핀락을 사용
    • 스핀락을 사용하는 스레드는 절대 선점되지 않음
  • dispatcher objects 제공
    • 뮤텍스
    • 세마포
    • event 및 타이머

리눅스의 동기화

  • 버전 2.6 이전에는 비선점형 커널을 사용
  • 이후 버전에서는 선점형 커널을 사용
  • 지원도구
    • 스핀락: 단일 처리기 에서는 스핀락을 획득 하고 방출 하는 것이 커널 선점을 불가능하게하고 가능케 하는 것으로 바뀐다.
    • 세마포
    • 원자적 integer형
    • reader-writer 락

Solaris의 동기화

  • 지원도구
    • turnstiles(우선순위 상속 프로토콜)
    • 적응형 뮤텍스
      • 표준 세마포 스핀락
      • CPU 바쁜 대기
    • 조건변수
    • readers-writers 락

Pthreads의 동기화

  • 지원도구
    • 뮤텍스
    • 조건변수
  • 지원 불가능한 확장 도구
    • reader-write locks
    • spinlocks

대처 방안들

  • 트랜잭션 메모리: 메모리 읽기 쓰기 연산의 원자적인 연속적 순서
    • 한 트랙잭션의 모든 연산이 완수되어야만 확정
    • 만약 그렇지 못 한다면 상태 rollback
    • 소프트웨어 하드웨어로 구현
      • 소프트웨어 트랜잭션 메모리(STM)
      • 하드웨어 트랜잭션 메모리(HTM)
  • OpenMP: 공유메모리 환경에서 병렬 프로그램을 지원하는 언어
  • 함수형 프로그래밍 언어: 변수값이 변하지 않기 때문에 임계영역 문제를 고민하지 않아도 되는 언어

'CS > OS' 카테고리의 다른 글

메인 메모리  (0) 2023.05.02
CPU 스케쥴링2  (0) 2023.05.01
임계 구역 문제  (0) 2023.04.24
운영체제  (0) 2023.04.23
CPU 스케줄링1  (0) 2023.04.18

+ Recent posts