운영체제 17

Beyond Physical Memory: Policies(2)+(3)

stack property stack property란, 캐시사이즈가 n개일때 들어있는 내용이 캐시사이즈가 n+1개일때도(캐시사이즈를 늘렸을때도) 다 들어있는 성질이다. optimal, LRU정책의 경우 stack property를 만족하기 때문에 캐시 사이즈가 늘어나면 hit ratio가 좋아진다. 반면, FIFO의 경우 stack property를 만족하지 않기 때문에 캐시사이즈를 늘렸을 때 오히려 성능이 나빠지기도 한다. (Belady's anomaly) 각 정책별 workload optimal과 LRU는 locality에 따라 캐시를 교체하고, FIFO는 locality 고려 없이 무조건 오래된 캐시를 교체하고, random은 아무런 기준없이 랜덤하게 캐시를 교체한다. 이런 여러 정책별로 캐시사이..

운영체제 2023.04.17

Beyond Physical Memory: Policies(1)

앞서 physical memory의 한계를 극복하기 위해 main memory를 hard disk의 캐시처럼 사용하는 demand paging을 살펴보았다. 이제 demand paging에서 메인 메모리가 부족할 때 전에 캐싱된 내용의 변경(swapping)이 어떤 정책으로 일어나는지를 살펴보자. average memory access time (AMAT) TM = Memory Access Latency TD = Disk Access Latency Pmiss = 1 - Phit 위의 수식에서 알 수 있듯이 hit ratio는 전체 성능에 큰 영향을 주고, 이 hit ratio에 큰 영향을 주는 것이 교체 정책이다. 교체 정책 (page replacement policies) 1. Optimal polic..

운영체제 2023.04.11

Beyond Physical Memory: Mechanisms

메모리 계층 구조 1. cpu의 register = 가장 빠른 저장공간 2. 캐시 메모리 3. 메인 메모리 (DRAM) 4. 굉장히 큰 용량의 저장 장치 (하드디스크, 테이프 등..) demand paging 앞서 paging의 속도가 느린 이슈는 TLB로 해결하고, page table이 너무 큰 이슈는 hybrid/ multi level paging으로 해결했다. 그럼 physical memory 자체의 용량이 부족한 한계점은 어떻게 해결할 수 있을까? 바로 메인메모리를 하드디스크의 캐시처럼 사용하는 demand paging을 통해 우리는 거의 무한대에 가까운 virtual momory공간을 확보할 수 있다. 메인메모리의 내용이 캐시메모리에 캐싱되는 것처럼, 하드디스크의 내용이 메인메모리로 캐싱될 수 ..

운영체제 2023.04.11

paging : smaller table

paging base and bound, segmentation과 구분되는 paging의 장점은 고정된 페이지 크기를 사용하여 메모리 관리가 편리하다는 점이다. 하지만 주소변환정보를 담고 있는 page table과 관련해서 두가지의 문제가 있다. 1. 속도의 문제 page table이 물리적 메모리에 위치하고 있기 때문에, 하나의 명령어를 수행하기 위해 여러번 메모리에 접근해야 해서 속도가 느림. >> 이것은 TLB로 해결할 수 있다. 2. 크기의 문제 page table에서 VPN를 인덱스로 PFN를 담고있는 entry를 가져오기 위해서는 페이지 테이블이 연속된 공간을 확보해야 한다. 그런데 page table이 너무 커진다. 그렇다고 page의 크기를 크게 하면, page table entry개수는 ..

운영체제 2023.04.11

paging: Faster Translations (TLBs)

paging이 느린 이유와 TLB memory에 접근하기 위해 주소 변환을 하는데, 이 주소 변환 정보(page table)는 매우 커서 memory에 저장된다. 다시말해 memory에 접근하려고 주소변환을 하는데 그 정보가 또 메모리에 있는 것이다. 이 때문에 memory에 매번 추가로 한번 더 access해야한다. 그래서 이것을 빠르게 하고자 TLB(translation lookaside buffer)를 사용한다. TLB는 mmu안에 들어있고, 구조적으로는 캐시메모리이기 때문에 address translation cache라고도 부른다. 주소변환이란 앞서 설명했듯이 VPN를 PFN로 변환하는 과정이고, 여기서 캐시메모리를 사용하여 주소변환정보를 기억했다가 다시 사용하도록 하는 것이 TLB이다. TLB..

운영체제 2023.04.04

paging: Introduction

paging paging은 base and bound, segmentation과는 달리 address space를 고정된 크기로 나눈다. virtual memory(address space)의 이 고정된 크기의 한 단위를 page라고 하고, 이것을 실제로 가지고 있는 물리적 메모리에서는 slot, page frame, frame이라고 부른다. 왼쪽 그림과 같이 64 바이트의 address space를 addressing하려면 2^6 = 6비트가 필요하다. 페이지가 4개로 나뉘기 때문에 상위 2비트는 virtual page number를 가리키고(VPN) 나머지 4비트는 한 페이지 내에서 addressing하는데에 사용된다. 또 virtual address가 오른쪽 그림같은 실제 물리적 메모리의 어디에 저..

운영체제 2023.04.04

Free-Space Management

free-space management 고정된 크기를 사용하는 paging을 이용하면 빈공간 관리가 쉬워진다. 하지만 가변크기일때는 빈공간 관리가 보다 어렵다. segment도 최대 크기는 일정하지만 그 최대 크기를 모두 segment로 사용하지는 않기 때문에 이것 역시 가변적이다. segment가 아닌 base and bound방식을 쓰더라도 한 덩어리의 크기는 가변이다. 또 이 segment를 사용하는 과정에서 남은 공간이 너무 조금씩 흩어져 있어서 사용할 수가 없는 external fragmentation현상이 생길 수 있다. 메모리의 할당과 반납 void *malloc(size_t size) //메모리 할당 요청 voif free(void *ptr) //메모리 반납 또한 메모리 할당을 요청하는 m..

운영체제 2023.03.28

Segmentation

segmentation 메모리 관리 기법중의 하나로, base and bound를 일반화한것이다. base and bound가 address space를 통째로 물리적 메모리에 배치하는 방식이라면, segmentation은 address space를 논리적으로 다른 공간으로 나누는 방식이다. segmentation은 virtual address space에서 사용하지 않는 빈공간을 굳이 물리적 메모리로 옮길 필요가 없다는 아이디어에서 시작한다. 즉, 가상주소공간에서 사용하지 않는 공간은 물리적 메모리에도 배치하지 않는다는 것이다. 따라서 듬성듬성 주소공간을 사용하는 sparse address space의 경우에는 segmentation이 유리하다. 16KB의 address space를 addressing..

운영체제 2023.03.28

Address Translation, base and bound

Address translation virtual address는 mmu라는 하드웨어에 의해 physical address로 변환된다.(hardware-based address translation) 설명을 위한 가정 1. 모든 메모리는 연속된 공간이다. 2. virtual address가 갖는 address space의 크기도 physical address보다 작다. 3. 모든 프로세스가 갖는 주소공간의 크기가 같다. virtual address space와 physical address 그림 속 프로세스의 address space에서는 코드가 oKB부터 들어있지만 물리적 메모리에서는 그와 다르게 32KB부터 시작한다. 다시 말해 프로그램이 메모리로 로딩되기 전, 기계어 코드를 생성할때 주소의 기준은 ..

운영체제 2023.03.27

The abstraction: Address space

메모리의 가상화, virtual address space virtual memory를 구성하는 핵심 요소. 오늘날의 컴퓨터는 프로그램 여러개를 cpu에 동시 탑재하여 time sharing하는 multiprogramming을 한다. 그리고 이 방법을 통해서 utilization(가용성), efficiency(효율성)을 높일 수 있다. 같은 프로그램으로 생성된 두개의 프로세스가 있다고 할 때, virtual address는 두 프로세스에서 모두 동일하다. (program이 동일하기 때문.) 하지만 물리적으로는 두 프로세스가 다른 곳에 있어야 한다. 따라서 각 address space마다 각 덩어리들이 물리적인 위치로는 어디로 갔는지에 대한 매핑정보(주소변환정보)가 필요하다. 다시말해 매핑정보는 프로세스마다..

운영체제 2023.03.27