티스토리 뷰

Study/OS

[Memory] Memory Addressing

생각많은 소심남 2013. 6. 20. 12:51

컴퓨터가 수행할 수 있는 모든 데이터들은 저장장치에 있다. 그 저장장치 중에도 실제로 수행을 위해서는 RAM상에 load 되어야 한다. 이 RAM에 저장되어 있는 data를 cpu가 읽어오는데 보통 한번에 읽을 수 있는 가장 작은 단위를 cell이라고 한다. 모든 cell에는 integer형태의 address를 하나씩 갖고 있으며, 보통 한 개의 cell size는 1byte, 즉 8bit으로 정해져 있다. 즉, CPU는 cell의 주소를 넘겨주게 되면 그안에 있는 데이터를 읽어올 수 있게 된다. 그래서 보통 알고 있는  Byte Addressing 이라는 말은 cell의 주소를 byte 단위로 찾아가겠다는 말이다.

그런데 이런식으로 한번에 Address를 처리하는 양을 작게 해버리면 매번 Access할 때마다 CPU 의 Context Switching이 발생하므로 좋지 않다. 따라서 하드웨어적으로 이 cell 단위보다 더 읽어올 수 있게끔 구현했는데 이게 Word Addressing이다. 보통 일반적으로 사용하는 컴퓨터의 word size는 32bit(4byte) / 64bit(8byte)가 있으며, 이에 따라서 컴퓨터가 사용할 수 있는 address space의 범위도 정해지게 된다. 보통 일반적으로는 0~ 2^(word size) - 1 로 정해져 있다. 



그러면 다음으로 다뤄봐야 할 것은 Byte가 어떻게 Ordering이 되는지에 대한 것이다. 처음 컴퓨터에 대해서 공부해보면 왜 항상 Memory Address가 위에서부터 아래로 내려가면서 증가하는지 궁금해 할 수 있다. 이에 대한 내용이 바로 byte Ordering이다. 이 Byte Ordering에는 크게 두가지 Big Endian 과 Little Endian 으로 나눌 수 있는데 이 두 개의 차이는 바로 lowest Address의 위치가 어디냐에 따라서 달라진다. 보통 Big endian byte ordering의 경우에는 lowest Address가 가장 맨위에 있다. 이를 다른 말로 Most Significant byte라고 하는데 이 MSB 가 lowest address를 가지는 형식을 big endian ordering 이라고 한다. 반면 Least Significant Byte가 lowest Address를 가지는 경우를 Little endian이라고 하는데 이렇게 말로만 표현하는 것보다는 실제 그림을 보는게 좋을 거 같다.



이런식으로 배치된다고 보면 좋을 거 같다. 예를 들어 0x44332211이라는 데이터를 Memory에 삽입하려고 한다. 그러면 Big Endian 방식으로 저장하면 위에서부터 11,22,33,44가 저장되겠지만 Little Endian 방식에서는 역순으로 저장된다고 보면 된다. 



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

[OS] POSIX Thread  (0) 2013.06.25
[Process] Inter Process Communication (IPC)  (5) 2013.06.21
[Process] Process Creation  (0) 2013.06.20
[Process] Process Scheduling  (1) 2013.06.20
[Process] Process / Process Control Block  (2) 2013.06.19
[Study] POSIX  (0) 2013.02.21
[Study] Virtual Memory  (0) 2013.02.20
댓글