오래간만에 운영 체제 책을 찾아보니.. virtual memory는 프로그램의 증가 속도가 memory 크기의 증가 속도보다 더 빨라서 생겼다는군요.
1MB프로그램인데 memory는 0.5MB인 상황처럼요. 이걸 해결하기 위한 방법들 여러가지 있었는데, 그 중에 virtual memory가 있어요.
그럼 virtual memory는 뭐냐? 이 아이디어의 핵심은 각 프로세스는 자신만의 주소 공간을 가진다는 것에서 시작해요.
이 주소 공간들은 "page"라는 chunk로 나누어지구요.
잠시 용어 정리를 하면 각 프로세스가 가지는 프로세스 만의 주소 공간은 virtual address space라고 불리고,주소는 virtual address라고 불려요.
Virtual address space를 구성하는 단위는 page 이고 vritual address space의 크기 / pag의 크기 = 페이지의 수 가 나오게 됩니다.
대부분의 메모리 시스템들은 “paging” 이라는 기법을 사용하는데요.
이것은 virtual address를 physical memory로 바꾸는 것에서 시작해요. MMU라는 CPU내 장치가 이것을 해주구요.
16비트 주소, 32KB memory를 사용하는 상황을 보면, 각 프로세스는 64KB의 virtual address space를 지니구요.
프로세스의 실행에 필요한 내용은 당연하게도 disk에 반드시 저장되어 있어야해요.
그리고 필요에 따라 memory에 올리고 present/absent bit이라는 플래그를 이용하여 해당 페이지의 내용이 memory에 있는지 아니면 disk에 있는지 나타냅니다.
Virtual address space에 있는 page와 상응하는 physical memory의 단위는 page frame이에요. 두 단위의 사이즈는 대체로 일치합니다.
그러면 총 16개의 page와 8개의 page frame이 나오게 됩니다. 이 16개의 페이지 중에서 프로세스가 당장 쓰는 내용들이 memory에 올라옵니다.
쓰지 않는 것들은 disk에 있구요.
그 뒤에는 이제 page를 효과적으로 관리하기 위하여 page table이 나옵니다.
64bit 주소를 사용하는 컴퓨터에서 이 page에 대한 내용을 disk에 저장하기란 불가능하니까 다양한 레벨의 page table을 두고 관 리하는 내용.
그리고 각 page들 중에 어떤 것을 선택하여 memory에 올리는 알고리즘 등이 나옵니다.
Modern Operating System 3e / Andrew S tanebaum. 173p~
간단 요약.
프로그램이 실행하는데 필요한 데이터들을 모두 memory에 올리는 것이 아니고 디스크에 나누어서 관리한다.
프로세스가 실행중에 필요한 내용들이 memory에 있다면 그걸 가져다 쓰면 되지만, 없다면 디스크에서 뽑아서 memory에 가져다 준다.
이러한 과정을 쉽게 관리하기 위하여, 디스크의 특정 범위를 해당 프로세스를 위하여 할당하여 프로그래머가 각종 변환에 신경쓰지 않게 해준다.
추천해드렸읍니다
훌륭하군여
오랫만->오랜만 (국어사전 - 오랜만 [명사] :오래간만(어떤 일이 있은 때로부터 긴 시간이 지난 뒤)의 준말.) [리듬 맞춤법 봇♬]