Computer Science
[CSAPP] 9.3 VM as a Tool for Caching(캐싱 도구로서의 VM)
9.3 VM as a Tool for Caching(캐싱 도구로서의 VM) 결론짓자면, VM은 디스크에 저장된 N개의 바이트 크기의 셀 배열로 구성됨. 각 바이트는 특정 가상주소를 가지며, 배열의 인덱스로 작용함. 디스크 안의 배열 정보는 메인 메모리에 캐시됨. 메모리 계층구조 안에 있는 캐시는 블록 단위로 분할되며, 디스크와 메인 메모리 사이의 징검다리 역할을 해줌. VM system은 가상메모리를 규정된 사이즈 블록 단위로 분할하여 관리함. 이 분할된 블록을 가상페이지라고 부른다. 각 가상 페이지는 $P = 2^p$바이트의 크기를 가짐. 물리 메모리도 물리 페이지로 분할되어 사용된다. 가상페이지의 집합은 세개의 독립된 부분집합으로 이루어진다. Unallocated : VM 시스템에 의해 아직까지 할당..
[CSAPP] 9.2 Address Spaces(주소 공간)
9.2 Address Spaces(주소 공간) 주소공간(Address Spaces)는 음수가 아닌 정수 주소의 정렬된 집합이다. 만일 주소공간의 정수가 연속적이라면, 그 공간은 선형주소공간(Linear address space)라고 한다. 여기에서는 문제를 간단히 정의하기 위해 언제나 주소공간이 선형주소공간의 성격을 띈다고 가정한다. 가상메모리를 갖는 시스템에서 CPU는 Virtual Adress Space라 불리는 N=2^n주소의 주소공간에서 가상의 주소를 생성한다. 주소공간의 크기는 가장 큰 주소를 표시하는데 필요한 비트 수로 나타낸다. 예를 들어. N=2^n 주소를 갖는 가상 주소공간은 n비트 주소공간이라 부른다. 현대 시스템은 32비트 또는 64비트 가상 주소공간을 지원한다. 컴퓨터 시스템은 이 ..
[CSAPP] 9.1 Physical and Virtual Addressing(물리 및 가상주소 방식)
9.1 Physical and Virtual Addressing(물리 및 가상주소 방식) 컴퓨터 시스템의 메인 메모리는 M개의 연속적인 바이트 크기 셀의 배열로 구성된다. 각 바이트는 고유의 물리 주소(PA)를 가진다. 첫번째 바이트는 주소0 두번째는 1… CPU가 메모리에 접근하는 가장 자연스러운 방식은 물리 주소를 사용하는 것이며, 이를 물리 주소 방식이라고 부른다. 초기 PC는 물리 주소방식을 사용하였으며 일부 시스템에서는 이 방식을 계속해서 사용하고 있다. 그러나 현대의 프로세스들은 가상주소방식이라는 형태를 사용한다. CPU가 가상주소를 생성해서 메인 메모리에 접근하면, 이 주소는 메모리로 보내지기 전에 적절한 물리 주소로 변환된다. 가상주소를 물리 주소로 변환하는 작업은 주소 번역이라고 한다. ..
[CSAPP] 9.6 Address Translation(주소 변환)
9.6 Address Translation(주소 변환) 해당 섹션에서 나올 용어 정리 용어/기호 의미 N = 2^n 가상 주소 공간 내 주소의 개수 M = 2^m 물리 주소 공간 내 주소의 개수 P = 2^p 페이지 사이즈 (바이트 단위) V = {0, 1, 2, . . . , N-1} 가상 주소 공간 P = {0, 1, 2, . . . , M-1} 물리 주소 공간 MAP : V → P ∪ {∅} 가상 주소 VA에 대하여, 1) VA가 PA에 맵핑되어 있는 경우 : MAP(VA) = PA 2) VA가 물리 주소 공간에 맵핑되지 않은 경우 : MAP(VA) = ∅ 가상 주소 (Virtual Address) VPO (Virtual Page Offset) 가상 페이지 내 오프셋 VPN (Virtual Page..
[CSAPP] 9.5 VM as a Tool for Memory Protection(메모리 보호 툴로서의 VM)
9.5 VM as a Tool for Memory Protection(메모리 보호 툴로서의 VM) 현대의 모든 컴퓨터 시스템은 운영 체제가 메모리 시스템에 대한 접근을 제어할 수 있는 수단을 제공해야 한다. 유저 프로세스는 읽기 전용 코드 섹션을 수정할 수 없다. 또한 커널의 코드 및 데이터 구조를 읽거나 수정하는 것이 허용되어서는 안 된다. 다른 프로세스의 개인 메모리를 읽거나 쓰는 것이 허용되어서는 안 되며, 모든 당사자가 명시적으로 허용하지 않는 한 다른 프로세스와 공유하는 가상 페이지를 수정하는 것이 허용되어서는 안된다.(내부의 프로세스에서 명시적으로 통신 시스템 콜 호출을 통해) 앞서 살펴본 바와 같이 별도의 가상 주소 공간을 제공하면 서로 다른 프로세스의 개인 메모리를 쉽게 격리할 수 있다. ..