'volatile'에 해당되는 글 1건

  1. 2006.10.18 register와 volatile 1

변수를 선언하면 메모리에 공간이 확보된다.

값을 변수에저장하면 변수에 데이타가 쓰여진다. 하지만 메모리에 읽고쓰는건 느리다. 그에비해 CPU의 속도는 빠르다. 메모리와 CPU의 속도차이로 CPU의 성능을 제대로 활용하지 못한다. 그런데 CPU내부에 메모리처럼 사용할수 있는 공간이 약간존재하는 이 곳을 register라고 한다. 많이 사용되는 변수를 이곳에 저장하면 속도가 빠르다.

컴파일러가 컴파일을 할때 자동으로 최적화시켜주는데 그중하나가 자동으로 register에 등록하는것입니다. 수동으로 레지스터에 등록할려면
ex) int x; ===> register int x; 로해주지만 보통 2개정도로 적은수만 가능합니다.

volatile은 이와반대로 저런 최적화를 방지하기 위한 키워드 입니다.
즉 자동 최적화를 하지말라는것을 컴파일러에 알려주는겁니다.

왜냐면 저런 자동최적화가 문제를 발생시키는경우가 있기때문입니다. 그렇다고 최적화를 막으면 프로그램수행속도가 떨어집니다. 따라서 프로그래머가 원하는것만 최적화시키지 말것을 명령하는 것이 volatile 입니다.

예제) 사용법은 일반적인 변수타입선언과 같습니다.
volatile int x; 혹은 int volatile x 같은 의미입니다.
필요한경우는 memory-mapped I/O 혹은 스레드 같은 곳에서 사용됩니다.

Posted by 창신다이

BLOG main image
오랫동안 꿈을 그리는 사람은 마침내 그 꿈을 닮아 간다. -앙드레 말로- by 창신다이

공지사항

카테고리

분류 전체보기 (248)
공장이야기 (115)
Education (30)
회사이야기 (19)
일상 (73)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :