동기화
동기화 시스템은 명령어들이 재편성될 수 있고 이러한 정책들이 신뢰할 수 없는 데이터 상태로 이어질 수 있다고 보았다.
컴퓨터 아키텍처가 제공하는 메모리에 응용 프로그램에 접근할 때 보장되는 것을 결정하는 방법을 메모리 모델이라고 한다. 일반적으로 메모리 모델은 두 가지 범주 중 하나에서 발견된다.
동기화 메모리 장벽
메모리 모델은 프로세서 종류에 따라 다르므로 커널 개발자들은 공유 메모리 멀티프로세서의 메모리 변경 가시성에 대해 어떠한 추측도 할 수 없다.
이 문제를 해결하기 위해 컴퓨터 아키텍처는 다른 프로세서에서 작동하는 주제에서 메모리 수정이 가시화되도록 함으로써 다른 모든 프로세서에 모든 메모리 수정을 전파하는 지침을 제공한다.
이러한 지침을 메모리 장벽 또는 메모리 장벽이라고 한다.
메모리 장벽 명령이 실행될 때 시스템은 모든 부하 및 저장 작업이 후속 부하 또는 저장 작업을 수행하기 전에 완료되도록 보장한다.
따라서 지침이 재편성되어 있더라도 메모리 장벽은 향후 로드 또는 저장 작업이 수행되기 전에 저장 작업이 메모리에 완료되고 다른 프로세서로 보여지도록 보장한다.
하드웨어 명령어
많은 현대 기계들은 한 단어의 내용을 검사하고 수정할 수 있는 단위, 또는 두 단어의 내용을 원자적으로 교환할 수 있는 단위, 즉 상호운용성이 없는 단위로서 특별한 하드웨어 지침을 제공한다.
우리는 이러한 특별 지침을 사용하여 임계 구역 문제를 비교적 간단한 방법으로 해결할 수 있다.
특정 기계에 대한 특정 지침을 논하는 대신, 이러한 유형의 지침 뒤에 있는 주요 개념은 추상화되고 test_and_set() 명령과 비교_and_swap() 명령을 기술함으로써 설명된다.
한 가지 중요한 특징은 이 명령이 원자적으로 실행된다는 것이다. 두 개의 test_and_set() 명령이 동시에 실행되면 어떤 순서로든 순차적으로 실행된다.
기계가 test_and_set() 명령을 지원하는 경우, 상호 배제는 허위로 초기화 락이라는 불연속 변수를 선언함으로써 구현될 수 있다.
이 명령은 test_and_swap() (CAS) 명령과 마찬가지로 두 단어로 원자 작동을 수행하지만 두 단어로 된 내용 공유를 기반으로 한 다른 기법을 사용한다. 연산값은 공식(예상된 값)이 사실일 때만 new_value로 지정된다.
경우에 따라 CAS 명령은 항상 값의 원래 값을 반환합니다. 이 명령의 중요한 특징은 명령이 원자적으로 실행된다는 것이다. 따라서 두 개의 CAS 명령어를 동시에 실행할 경우(다른 코어에서) 어떤 순서로든 순차적으로 실행된다.
원자적 변수
일반적으로 비교 명령_and_swap()은 상호 배제를 제공하기 위해 직접 사용되지 않는다. 오히려, 그것은 임계 구역의 문제를 해결하기 위한 다른 도구를 구축하는 데 기본 구성 요소로 사용된다.
그러한 도구 중 하나는 원자 변수이며, 이는 구성 요소나 볼과 같은 기본 데이터 형식에 대한 원자 작동을 제공한다.
구성 요소 값을 증가시키거나 감소시키는 것은 경쟁 조건을 초래할 수 있는 것으로 알려져 있다.
원자 변수는 계량기가 증가하고 있는 것과 같이 계량기 업데이트 중에 단일 변수에 의한 데이터 경쟁이 있을 수 있는 상황에서 상호 배제를 보장하는 데 사용될 수 있다.
대부분의 원자 변수를 지원하는 시스템은 원자 변수에 접근하고 조작하는 기능뿐만 아니라 특별한 유형의 원자 데이터를 제공한다. 이러한 함수들은 비교 연산자_and_wap()을 사용하여 자주 구현된다. 예를 들어, 다음은 원자 통합 순서를 증가시킨다.
2023.06.04 - [운영체제] - 스케줄링 (Scheduling) 알고리즘 정리 요약
스케줄링 (Scheduling) 알고리즘 정리 요약
스케줄링 운영체제 CPU 계획자는 Ready 상태에서 어떤 프로세스 중 CPU를 할당해야 하는지를 결정한다. 이것을 스케줄링 이라고 합니다. 또한 CPU 제어장치를 계획자가 선택한 프로세스에 전달한다.
contentplus.tistory.com
'운영체제' 카테고리의 다른 글
교착 상태 (Deadlocks) 핵심 요약 정리 (0) | 2023.06.10 |
---|---|
세마포어 (Semaphores) 핵심 요약 정리 (0) | 2023.06.10 |
프로세스 동기화 (Process) 핵심 요약 정리(1) (0) | 2023.06.09 |
스레드 라이브러리 (Threads Library) 핵심 정리(3) (0) | 2023.06.09 |
스레드 모델 (thread) 핵심 요약 정리(2) (0) | 2023.06.09 |