일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 백준 2504번
- 위상 정렬(Topological Sort)
- 이분 탐색(Binary Search)
- BFS(Breadth First Search)
- 트리(Tree)
- 알고리즘 개념
- 분할 정복(Divide and Conquer)
- 백준 2493번
- DFS(Depth First Search)
- 백준 1948번
- BFS
- 플로이드 워셜 알고리즘(Floyd-Warshall Algorithm)
- DFS & BFS
- 큐(Queue)
- 백준 1707번
- 그래프(Graph)
- 백준 17608번
- 백준 10000번
- 백준 21606번
- 백준 9012번
- 백준 18352번
- 동적 프로그래밍(Dynamic Programming)
- DFS
- 그리디 알고리즘(Greedy Algorithm)
- 위상 정렬(Topology Sort)
- 다익스트라 알고리즘(Dijkstra Algorithm)
- 스택(Stack)
- 이분 그래프(Bipartite Graph)
- 백준 2261번
- 백준 2812번
- Today
- Total
Always Be Wise
가상화 - 메모리 가상화 : 주소 공간의 개념 본문
초기 시스템
메모리 관점에서 초기 컴퓨터는 많은 개념을 사용자에게 제공하지 않았다.
운영체제는 메모리에 상주하는 루틴, 라이브러리의 집합이었다.
물리 메모리에는 하나의 실행 중인 프로그램(프로세스)이 존재하였고 나머지 메모리 전부를 사용하였다.
멀티프로그래밍과 시분할
컴퓨터는 고가 장비였기 때문에 사람들은더 효과적으로 컴퓨터를 사용하고자 하였다.
한 컴퓨터에서 여러 프로세스(멀티프로그래밍)를 짧은 시간 동안 번갈아가며 실행하면서(시분할) 효율을 높이고자 하였다.
그런데 큰 문제가 있었다. 한 프로세스에서 다른 프로세스로 전환하는 것이 너무 느리게 동작한다는 것이었다.
특히, 메모리가 커질수록 느려졌다. 하드웨어의 특성상, 한 프로세스의 레지스터 상태를 저장하고 복원하는 것은 빠르지만,
메모리 내용 전체를 디스크에 저장하는 것은 엄청나게 느리기 때문이다.
따라서, 프로세스 전환 시 프로세스를 메모리에 유지하는 방법, 여러 프로세스가 동시에 안전하게 존재할 수 있는 방법이 필요해졌다.
주소 공간
이에 실행 중인 프로그램이 가정하는 메모리의 모습, 주소 공간이라는 개념이 등장한다.
주소 공간은 실행 프로그램의 모든 메모리 상태를 갖고 있다.
이는 운영체제가 실행 중인 프로그램에게 제공하는 추상화이다.
실제로 프로그램이 물리주소 0에서 16KB 사이에 존재하는 것은 아니다. 실제로는 임의의 물리 주소에 탑재된다.
운영체제가 이 일을 할 때, 우리는 운영체제가 메모리를 가상화한다고 말한다.
실행 중인 프로그램은 자신이 특정 주소의 메모리에 탑재되고, 매우 큰 주소 공간을 가지고 있다고 생각하기 때문이다.
메모리 가상화의 목표
운영 체제가 가상화를 멋지게 하기 위해서는 몇 가지 목표가 필요하다.
첫 번째로, 투명성이다. 운영체제는 실행 중인 프로그램이 가상 메모리의 존재를 인지하지 못하도록 구현해야 한다.
즉, 프로그램은 자신이 전용 물리 메모리를 소유한 것처럼 행동해야 한다.
또 다른 목표는 효율성이다. 운영체제는 가상화가 시간과 공간 측면에서 효율적이도록 해야 한다.
시간적으로는 프로그램이 너무 느리게 실행되서는 안되고, 공간적으로는 가상화를 지원하기 위해 너무 많은 메모리를 사용해서는 안된다.
시간 효율적인 가상화를 구현할 때, 운영체제는 TLB 등의 하드웨어 지원을 받는다.
마지막 목표는 보호이다. 운영체제는 프로세스를 다른 프로세스로부터 보호해야 하고 운영체제 자신도 프로세스로부터 보호해야 한다.
프로세스가 탑재, 저장 혹은 명령어 반입 등을 실행할 때, 자신의 주소 공간 밖의 어느 것도 접근할 수 있어서는 안 된다.
즉, 어떤 방법으로든 다른 프로세스나 운영체제의 메모리 내용에 접근하거나 영향을 줄 수 있어서는 안 된다.
'컴퓨터 시스템 > OSTEP' 카테고리의 다른 글
가상화 - 메모리 가상화 : 더 작은 페이지 테이블 (0) | 2022.01.26 |
---|---|
가상화 - 메모리 가상화 : 더 빠른 변환을 위한 TLB (0) | 2022.01.26 |
가상화 - 메모리 가상화 :페이징 (0) | 2022.01.25 |
가상화 - 메모리 가상화 :세그멘테이션 (0) | 2022.01.25 |
가상화 - 메모리 가상화 : 주소 변환의 원리 (0) | 2022.01.24 |