반응형 Computer Science43 HDD: Hard Disk Drives 여지껏 CPU나 memory를 가상화하거나 스레드, synchronization 등을 통해 concurrency를 얻어내는 방법등에 대해 알아보았다. 이번 글에서는 어떻게 정보를 연속성 있게, 즉 시스템이 꺼져도 정보가 날아가지 않게 storage에 저장할 수 있는 방법에 대해 알아볼 것이다. I/O Device A Typical I/O Device fig 1에서 키보드 장치를 확인할 수 있다. 그리고 키보드에는 매우 작은 micro controller(fig 1에서는 ARM Cortex-M3)가 있는데 이것이 CPU나 메모리와 통신하면서 장치를 사용하게 된다. 이 micro controller 내부에는 CPU, 메모리 등 여러가지 구성요소가 있고 이것들을 컨트롤하기 위한 firmware가 존재한다. 이.. 2022. 6. 21. Memory Management 4: Page Replacement Swapping Swapping은 프로세스가 실행되어야 하는데 physical memory가 충분하지 않을 때, 현재 쓰이지 않는 것들을 스토리지(HDD, SSD, ...)에 옮겨놓은 뒤에 거기에 필요한 데이터를 로드하는 것이다. 당연히 이후에 스토리지에 저장되었던 것을 다시 불러오는 과정이 필요하다. 다르게 말하면 physical memory가 스토리지의 캐시역할을 한다고 생각하면 된다. 기존의 프로그램이 디스크에 위치하고 이것이 실행되면 메모리로 로드가 된다. 이때 사용되는 방법이 이전에 다뤘던 demanding paging이었다. 프로세스가 실행되는 순간에는 전체 주소 공간 중 극히 일부만이(page 단위로) 사용되기 때문에 한번에 모든 주소 공간을 다 가져올 필요가 없다. 그렇기 때문에 나머지는 .. 2022. 6. 15. Memory Management 3: Page Tables and TLBs 계속해서 가상 메모리에 대해 다룬다. 이 글에서는 가상 메모리의 구성 요소 중에서도 page table과 TLBs에 대해 구체적으로 다뤄 보고자 한다. 이전까지는 page table을 간단하게 표현했는데 사실 page table을 효과적으로 구성하는 것은 쉬운 일이 아니다. 때문에 여기서는 page table을 어떻게 관리해야 하는지와 HW적인 도움을 주는 TLBs에 대해 살펴볼 것이다. 추가적으로 이 파트는 캐시에 대한 이해가 필요하다. 컴퓨터 구조 때 다뤘던 내용인데 본인은 잘 기억나지 않아서 따로 찾아봤었다. https://parksb.github.io/article/29.html을 참고했는데 이해하는데 큰 도움이 됐었다. VM Issue 이전 글 끝에서 다뤄볼 문제들을 언급하고 끝냈는데 다음과 같.. 2022. 5. 27. Memory Management 2 - Paging 저번 글에서 메모리 관리를 위해 사용하는 방법에 대해서 알아봤다. dynamic relocation의 방법 중 fixed/variable partitions와 segmentation에 대해 알아봤었는데 paging이라는 방법도 있다고 했다. 이 방법은 셋 중 가장 보편적으로 사용되는 방법이고 내용도 상대적으로 많기 때문에 이 글에서 따로 다뤄볼 생각이다. Structure of Virtual Memory paging에 대해 알아보기 전에 우선 가상메모리가 어떤 식으로 구성되는지 간단히 알아보자. 가상 메모리는 각각의 프로세스에게 굉장히 많은 메모리 공간이 있는 것처럼 보이게 한다고 했다. 이러한 가상 메모리 공간의 크기는 어떻게 될까 컴퓨터 OS, 프로그램 등을 설치할 때 32bit/64bit로 버전이 .. 2022. 5. 19. 이전 1 2 3 4 5 6 ··· 11 다음 반응형