메모리 개념
메모리는 1과 0을 저장할 수 있는 저장공간입니다. 메모리는 전압 차이를 이용해서 데이터를 저장합니다. 전기가 들어오면 1, 전기가 들어오지 않으면 0이 저장됩니다.
0과 1을 저장하는 기본 단위는 비트입니다. 8개 비트가 모이면 바이트가 됩니다.

1바이트는 모드 비트가 0일때와 모두 1일 경우까지 256개의 경우의 수를 표현할 수 있습니다.
양수만 저장할 경우 0 ~ 255까지 저장할 수 있고 양수와 음수 모두를 저장할 경우에는 -128 ~ 127까지 저장할 수 있습니다.
22를 8자리 이진수로 표현하면 00010110입니다.

- MBS: Most Significant Bit (최상위 비트)
- LSB: Least Significant Bit (최하위 비트)
음수 저장을 위한 "2의 보수" 방식
양수의 비트 값을 ~ 연산한 다음 1을 더해서 음수를 표현하는 방식입니다. ~ 연산은 비트가 1인 경우 0으로, 0인 경우 1로 바꾸는 비트 연산입니다.


64비트 CPU가 사용 가능한 메모리 크기와 이유는?
1바이트를 저장할 수 있는 공간마다 고유한 메모리 주소가 할당되고 CPU는 이 주소를 통해 메모리에 저장된 값에 접근합니다.
CPU는 메모리 주소를 저장하고 특정 위치에 접근하기 위해 "주소 레지스터"를 사용합니다. 32비트 CPU에서 주소 레지스터 크기는 32비트이고, 4,294,967,296개 메모리 주소에 접근할 수 있습니다. 이것을 GB 단위로 환산하면 4GB입니다.
32비트 CPU를 사용하는 컴퓨터에서 사용가능한 최대 메모리 용량이 4GB인 이유입니다.
64비트 CPU는 총 18,446,744,073,709,551,616개의 메모리 주소에 접근할 수 있으므로 이론적으로 16EB 메모리를 사용가능합니다.
Endianness, Byte Order
엔디언(Endianness) 또는 바이트 오더(Byte Order)는 바이트를 배열하는 방식을 표현한 용어입니다.
- Big-endian: 최상위 비트가 먼저 배열
- Little-endian: 최하위 비트가 먼저 배열
메모리 사이즈 명칭과 수치

메모리 영역별 분류 및 사용처
프로그램을 실행하면 OS는 실행에 필요한 메모리를 할당합니다.
- 스택
지역 변수, 파라미터, 리턴 값 등이 이 영역에서 쓰입니다.
LIFO 방식 스택을 관리합니다.
예) 함수를 실행하면 함수에서 사용하는 모든 지역 변수와 리턴 값이 스택 영역에 추가됩니다. 이때 연관된 모든 메모리 스택 프레임(Stack Frame) 내부에 함께 저장됩니다. 스택 프레임은 함수의 실행이 종료되면 스택 영역에서 제거되고 다른 함수에서 메모리 영역을 사용할 수 있게 됩니다. - 힙
동적으로 할당된 데이터가 저장됩니다.
직접 해제하지 않을 경우 프로그램이 종료될 때까지 유지됩니다. - 데이터 영역
정적 변수와 전역 변수가 저장됩니다.
프로그램 종료 때까지 유지됩니다. - 코드 영역
기계어로 번역된 프로그램 코드가 저장됩니다.
'프로그램 개발해서 돈벌기 > iOS' 카테고리의 다른 글
SwiftUI에서 Class와 Struct 특징 및 차이점 (0) | 2023.11.22 |
---|---|
메모리에 표시되는 값 형식과 참조 형식 (0) | 2023.11.19 |
SwiftUI에서 그리드 아이템을 한꺼번에 보여 주지 않고 12 개씩 나누어서 보여 주기 (0) | 2023.11.13 |
애플 App Store Connect에서 배포 중인 앱 중 iOS 버전별 이용자 수 확인하기 (0) | 2023.08.23 |
swift로 중복되지 않게 랜덤으로 10자리 스트링 생성 방법 (0) | 2023.06.23 |
댓글