C언어에서의 포인터 : 1)배열의 이름 2)””문자열자체가 포인터 3)2차원배열 4)함수이름
가상 메모리
가상메모리의 크기와 주소
<aside> 💡 이론 : 가상메모리 = 무한대의 크기 실제 : 가상메모리의 최대 크기 = 물리 메모리의 최대 크기 = CPU의 비트 크기 ex) 32bit CPU → 2^32-1(0xFFFFFFFF) → 4GB → 메모리의 최대 크기 & 가상 메모리의 최대 크기
</aside>
동적주소 변환(DAT : Dynamic Address Translation)
운영체제를 제외한 나머지 메모리 영역을 일정한 크기로 나누어 일반 프로세스에 할당
세그먼테이션-페이징 혼용 기법
메모리 매핑 테이블
가상 메모리 시스템에서 메모리 관리자는 가상 주소와 물리 주소를 일대일 매핑 테이블로 관리
가상주소 → 매핑테이블 → 물리 메모리
페이징 기법에서 사용하는 매핑테이블을 페이지 매핑테이블 또는 페이지 테이블이라고 한다
지역성
페이징 기법
페이지 : 프로세스, SW관점
프레임 : 물리메모리적인 관점(가상주소의 페이지와 구분하기 위한 이름)
→ 크기 : 페이지 = 프레임
페이지 테이블 : 페이지 ↔ 프레임 매핑 정보
페이지5는 물리 메모리에 없기 때문에 페이지 테이블에 invalid라고 표시되어 있다. invalid는 페이지가 스왑영역에 있다는 뜻
읽기
가상주소 30번지가 어느 페이지에 있는지 찾는다. 30번지는 페이지의 3의 0번째 위치해 있다.
페이지 테이블의 페이지 3으로 가서 해당페이지가 프레임 1에 있다는 것을 알아낸다.
최종적으로 물리 메모리 프레임 1의 0번째 위치에 접근한다. 이 주소가 가상주소 30번지의 물리 주소이다.
쓰기
가상주소 18번지가 어느페이지에 있는지 찾는다. 18번지는 페이지 1의 8번째 위치에 있다.
페이지 테이블의 페이지 1로가서 해당페이지가 프레임 3에 있다는것을 알아낸다.
프로세스가 저장하려는 값을 프레임 3의 8번 위치에 저장한다.