원자적 연산은 '원자적인'방법 즉, 중간에 어떠한 방해도 받지 않고
어셈블리어 명령어 하나로 실행할수 있다.
- 메모리에 접근하지 않거나 한번 접근하는 어셈블리어 명령은
원자적이다.
- inc나 dec같이 메모리에서 데이터를 읽고, 이를 갱시하고,
갱신한 값을 메모리에 다시 스는 읽기/수정/쓰기 어셈블리어
명령은 일기와 쓰기 사이에 다른 프로세서가 메모리
버스를 점유하지 않는 한 원자적이다. 유니프로세서 시스템에서는
같은 프로세서에서 메모리 접근이 일어나므로 메모리버스를 훔치는
일은 발생하지 않는다.
- 연산 코드 앞에 lock(0xf0)접두어가 붙은 읽기/수정/쓰기
어셈블리 명령은 멀티프로세서 시스템에서도 원자적이다.
제어 유닛이 이 접두어를 만나면 명령어 수행이 끝날때 까지
메모리 버스를 잠근다. 따라서 잠긴 명령을 실행하는 동안에는
메모리에 다른 프로세서가 접근할수 없다.
...
Re: 원자적 연산이란 무엇인가요?
atomic operation 은...
어느 한순간에는 하나만 딱 실행되는 것을 말합니다.
그럼 고운 하루...
Re^2: 원자적 연산이란 무엇인가요?
understanding the linux kernel 책에 의하면,
원자적 연산은 '원자적인'방법 즉, 중간에 어떠한 방해도 받지 않고
어셈블리어 명령어 하나로 실행할수 있다.
- 메모리에 접근하지 않거나 한번 접근하는 어셈블리어 명령은
원자적이다.
- inc나 dec같이 메모리에서 데이터를 읽고, 이를 갱시하고,
갱신한 값을 메모리에 다시 스는 읽기/수정/쓰기 어셈블리어
명령은 일기와 쓰기 사이에 다른 프로세서가 메모리
버스를 점유하지 않는 한 원자적이다. 유니프로세서 시스템에서는
같은 프로세서에서 메모리 접근이 일어나므로 메모리버스를 훔치는
일은 발생하지 않는다.
- 연산 코드 앞에 lock(0xf0)접두어가 붙은 읽기/수정/쓰기
어셈블리 명령은 멀티프로세서 시스템에서도 원자적이다.
제어 유닛이 이 접두어를 만나면 명령어 수행이 끝날때 까지
메모리 버스를 잠근다. 따라서 잠긴 명령을 실행하는 동안에는
메모리에 다른 프로세서가 접근할수 없다.
...
댓글 달기