메모리의 기본 단위와 저장
메모리에 데이터를 저장할 때 사용되는 최소 단위 = 비트
하지만 비트 단위로 연속적인 데이터를 저장하다 보면 불편함이 발생
40 + 30을 한다고 했을 때 이 두 십진수를 101000 11110이란 비트로 변환하여 계산해야 하는데,
이 두 수를 특정 주소에서 찾는다고 했을 때 만약 비트 단위로 데이터가 메모리에 저장되어 있다면 위 비트수 만큼의 주소를 조회해야 한다. 이는 많은 양의 데이터를 처리하는 컴퓨터에게 부적합
그래서 메모리에 저장되는 최소 단위를 바이트로 정함 (1byte = 8bit)
메모리 주소 하나당 8bit 만큼의 데이터가 담긴다면 40(00101000)과 30(00011110)이 각각 한 주소에 저장되어
40 + 30을 두 번의 주소 조회로 계산할 수 있을 것이다.
int는 메모리에 4byte만큼, 즉 4개의 연속적인 주소를 가져와 사용하는 것이다.
int a;
a = 10
실제 메모리에 저장되는 bit -> 00000000 00000000 00000000 00001010
a = 10000
실제 메모리에 저장되는 bit -> 00000000 00000000 00100111 00010000
a = 2147483647
실제 메모리에 저장되는 bit -> 01111111 11111111 11111111 11111111
int 타입의 숫자끼리 계산을 하게 된다면 4byte씩 메모리에서 가져와 연산을 수행한다.
8GB RAM이란
1GB는 1073741824 byte 이므로
8 x 1073741824 개의 주소를 가진 메모리 장치를 말한다.
주소 데이터의 저장
컴퓨터는 주소를 사용해서 데이터를 주고 받고 연산을 하기 때문에 주소의 크기는 운영체제의 기본 처리 단위와 일치한다.
(컴퓨터 연산의 하단에서는 레지스터끼리 주소를 주고 받으며 실제 연산을 수행하게 되는데 그 레지스터들이 각각 저장할 수 있는 주소 값의 크기)
초기 컴퓨터는 주고 받을 수 있는 주소값의 크기를 32bit = 4byte 로 정하였는데(word size) 이는 사용할 수 있는 주소의 최대 표현이 4byte란 뜻이므로 표현할 수 있는 주소의 크기는 4byte = 32bit = 0 ~ 4294967295였다.
이는 4294967295개의 byte를 메모리에 저장할 수 있다는 뜻이 된다. (주소 하나당 1byte를 저장할 수 있으므로) 그래서 주소값의 크기가 32bit인 컴퓨터 시스템의 최대 메모리 크기는 4GB였다. (4294967295 byte는 대략 4GB)
시간이 지나면서 컴퓨터가 한번 주고 받을 수 있는 주소의 크기를 64bit = 8byte 로 늘리게 되었고 표현 가능한 주소의 크기는 8byte = 64bit = 0 ~ 18,446,744,073,709,551,615 만큼의 주소를 표현할 수 있으므로 저만큼의 byte를 메모리에 저장할 수 있고 64bit 컴퓨터 시스템에서 사용할 수 있는 최대 메모리 크기는 16엑사 바이트(=16,777,216 테라바이트)이다.
(실제로 주로 사용되고 있는 os에서 허용 가능한 메모리의 크기는 위와 같진 않다)
(틀릴수도)
'CS > OS' 카테고리의 다른 글
디바이스 드라이버 (0) | 2022.10.17 |
---|---|
분산 적재 방식 (0) | 2022.06.01 |
메모리 관리 (0) | 2022.05.31 |
Deadlock Avoidance (0) | 2022.05.27 |
Dining Philosophers Problem - 식사하는 철학자 문제 (0) | 2022.05.27 |