본문 바로가기

23년 1학기 학교공부

(72)
[OS] Multi-level Page Table Multi-level Page Table paging 방식을 이용하면 장점도 있지만, 프로세스 크기가 커지면 페이지 테이블도 같이 크기가 커진다는 단점이 있다. 위 문제의 해결책을 살펴보자. paging 방식은 page table이라는 별도의 자료구조를 반드시 필요로하므로 메모리 자원을 소비한다. 프로세스의 크기가 작으면 프로세스 내 페이지 수가 적을 것이고, page table의 entry는 page개수와 같으므로 page table의 크기도 작을 것이다. 하지만 만약에 매우 큰 프로세스가 있다면, page table 칸 수도 커지는 문제가 발생한다. 그러면 페이지 테이블이 차지하는 메모리 공간이 매우 커질것이다. 위 그림에서 가장 아래 그림이 프로세스의 virtual address space를 나타낸..
[OS] Demand Paging Demand Paging 페이징에 의해 가상메모리를 관리하는 방법이다. 가상메모리 방법을 구현할 때 사용 가능한 요소는 Paging, Segmentation 두가지가 있다. 프로세스를 page 혹은 segment로 쪼개서 보조기억장치의 virtual address space에 넣고, 필요한 부분만 가져오는 식이다. 이때 paging에 기반한 방법은 별도로 demand paging, segmentation에 기반한 방법은 demand segmentation 이라고 칭한다. 하지만 segmentation은 paging보다 실행 속도가 느리기 때문에, virtual memory에서도 demand segmentatoin보다 demand paging 방법을 주로 이용한다. demand paging은 page 단위..
[OS] Virtual Memory Virtual Memory 가상메모리를 사용하는 이유, 장점 메모리에 프로세스를 효율적으로 배치하기 위해 프로세스를 조각으로 나누는 Paging, Segmentation 기술이 있다. 하지만 이렇게 프로세스를 조각내어 메모리에 넣는다면, 조각들을 한꺼번에 메모리에 넣지 말고, 프로세스의 가상 주소 공간에 뒀다가 필요할 때만 필요한 부분을 메모리에 넣는 방법이 더 효율적일 것이다. 가상 주소 공간을 보조기억장치에 만들면, 용량이 제한적인 메인메모리를 대신해서 넓은 저장공간을 제공할 수 있기에 디스크와 같은 보조기억장치에 프로세스의 가상주소공간을 만들게 된것이다. 이 virtual address space는 프로세스의 원본 역할을 하고, 실행하는데 필요한 부분만 메인메모리에 가져오는 방법이 Virtual M..
[OS] Paging Paging dynamic partition 방법을 복습해보자. 해당 방법의 문제점은 external fragmentation으로, 프로세스에 속하지 않는 작은 빈 메모리 조각이 생기는 점이었다. 위 마지막 그림을 보면 6, 6, 4MB의 빈공간 3개가 있는데, 다 합치면 16MB이지만 조각나있는 상태이기 때문에 예를 들면 10MB짜리 프로세스가 새로 생성되어도 들어갈 공간이 없다. 이런 문제를 해결하기 위해 compaction이라는 프로세스를 전부 이동시켜서 빈 메모리를 한곳으로 모으는 방법을 사용할 수 있는데, 이것도 시간이 걸리기 때문에 좋은 방법은 아니다. compaction을 사용하지 않고도 흩어진 fragment들을 사용할 수 있도록 한 방법이 paging이다. Paging에서는 page라고 ..
[OS] Address Binding과 Relocation Address Binding logical address를 physical address로 변환하는 작업이 필요한데, 이를 address translation, address binding이라고 한다. instruction을 실행하려면 어떤 변수 값을 가져와서 연산할 필요가 생기는데, 즉 변수가 몇번 주소에 있는지를 찾아야 한다. 혹은 점프해야할 주소가 instruction안에 있는 경우도 있다. 이처럼 instruction 안에 들어있는 주소들은 모두 logical address이다. 그래서 실제로 실행할때는 logical address에 해당되는 실제 메인 메모리의 주소를 알아내야한다. address binding을 언제 하느냐에 따라서 세 가지 종류의 binding이 있다. 일반적으로 프로그램을 짠..
[OS] 메모리 주소의 종류와 Virtual Address Space 메모리 주소의 종류에는 다섯가지가 있다. 1. Physical address(absolute address) 메모리 유닛 하드웨어가 이용하는 주소이다. 1GB짜리 메모리 반도체를 끼면 0번부터 1GB-1번지까지 바이트 단위로 번호가 매겨지는데, 이 번호가 physical address이다. 메모리 유닛은 physical address를 보고 메모리 반도체 칩에서 바이트 위치를 찾아간다. 2. Logical address 프로그램 인스트럭션 내에 등장해서, 논리적인 연산에 이용되는 주소이다. 따라서 인스트럭션을 실행하는 cpu(프로세서)가 바라보고 이용하는 주소이다. 실제 메모리에 있는 주소와는 다르다. 프로그램의 인스트럭션이 logical address를 포함하고 있지만, cpu가 해당 인스트럭션을 실행..
[OS] Memory Partitioning 1. 고정분할식 메모리 할당방법. Fixed Prtitioning 한정된 크기의 메인메모리 공간을 여러 프로세스들에게 분배해주는 방법. 운영체제 개발자들이 가장 먼저 생각해낸 방법이다. 운영체제는 메인 메모리를 미리 일정한 크기의 조각, 파티션으로 분할해놓고, 사용자 프로세스가 생성되면 메모리 조각들 중 빈 것 하나를 프로세스에게 할당한다. 왼쪽 그림처럼 메인메모리가 있는데, 윗부분에 운영체제가 들어있고, 아래로 사용자 프로세스가 사용할 수 있는 메모리 영역을 일정한 크기로 조각나있다. 이 그림에서는 8MB짜리 메모리조각으로 나뉘어있다. 이 방법의 장점은 메모리 관리가 간단하다. 일정한 크기로 잘랐기 때문에 메모리에 들어갈 수 있는 프로그램 개수 파악이 쉽고, 어떤 프로그램이 몇번째 조각에 들어있다, 몇..
[OS] 메모리 관리 운영체제가 컴퓨터 메인 메모리를 관리하는 방법에 대해 알아보자. 메모리 관리 방법에는 다섯가지가 있다. 1. 고정분할식 메모리 할당방법 2. 가변적으로 그때그때 필요한 만큼 메모리를 할당하는 다이나믹 파티셔닝 3. 버디 시스템 4. 펜싱 5. 세그멘테이션 메모리 관리의 기능은 크게 두가지가 있다. 1. 메모리 할당 프로그램을 실행하려면, 프로세스를 메인 메모리에 넣고 실행해야한다. 즉 먼저 프로세스에게 메모리 공간을 분배해주고, 분배한 메모리에 프로세스를 집어넣어줘야하는 것이다. 위 그림에서 메인 메모리의 회색 부분이 운영체제이고, 그 밑에 사용자 프로세스들이 들어가는데, 프로세스 a를 위해 5000번 byte부터 프로세스 a의 크기만큼 메모리를 배분해줘서 여기에 프로세서 a의 이미지를 넣는것이다. 그런..