[운영체제] 8. Address space

만두·2024년 1월 30일

운영체제

목록 보기
8/13

Memory Virtualization 메모리 가상화

메모리 가상화는 무엇일까?

  • OS는 physical memory를 가상화한다.
  • OS는 각 프로세스마다 메모리 공간에 대한 환상을 제공한다.
  • 이것은 마치 각 프로세스가 자신만의 메모리를 사용하는 것처럼 보이게 한다.

→ Physical memory는 정해져 있지만 process에게 공간이 엄청 많은 것처럼, 혼자 써도 되는 것처럼 illusion을 제공한다.

목표는?

OS입장에서는 프로세스에게 address space를 잘 나눠줘야 함.

세가지 측면에서 생각할 수 있음.

  1. Transparency 투명성 : process가 memory load가 다 됐다고 믿는 것.
    • 프로세스는 메모리가 공유되고 있다고 인지하면 안된다.
    • 프로그래밍을 위한 편리한 추상화를 제공한다.
    • 예를 들면, 크고 연속적인 메모리 공간을 주어서 추상화가 편리하도록
  2. Efficiency 효율성
    • 다양한 크기의 요청으로 인한 단편화(fragmentation)를 최소화합니다. (Space 측면)
    • 하드웨어의 지원을 얻는다. (Time 측면)
  3. Protection : 보호
    • 실제 여러 process가 하나의 Memory에 접근하는 것이므로 서로에게 영향을 끼치면 안됨.
    • 다른 프로세스로부터 os와 프로세스를 보호한다.
    • Isolation(고립) : 프로세스는 다른 프로세스에 영향을 끼치지 않고 실패할 수 있다.
    • 협력 프로세스는 메모리의 일부를 공유할 수 있다.



초기의 OS

메모리에 하나의 프로세스만 적재했다.

utilization과 efficiency 부분이 별로였다.



Multiprogramming and Time Sharing

Multiprogramming이라는 것은 메모리에 여러개의 program load가 가능하다는 것

  • Load multiple processes in memory
    • 짧은 기간 동안 실행한다.
    • 메모리에서 그들 사이에 process를 교체한다.
    • utilization과 efficiency를 증가시킨다.
  • 중요한 보호 문제를 야기한다.
    • 다른 프로세스의 잘못된 메모리 액세스로부터


Address Space

OS는 physical memory에 대한 추상화를 생성한다.

  • 주소 공간은 실행중인 프로세스를 모두 포함한다.
  • 그것은 program code, heapstack 등등을 포함한다.
  • Code : 명령어가 어디에 위치해있는지
  • Heap : 동적 메모리 할당
    • c에서는 malloc으로, 객체지향에서는 new 로 할당 가능
  • Stack : 반환되는 주소와 값을 저장하고, 루틴에 대한 지역 변수를 포함한다.

→ 프로세스마다 가지고 있는 address space는 mapping을 통해 physical memory에 저장이 된다. 이것이 바로 Memory virtualization



Virtual Address

실행중인 프로그램의 모든 주소는 virtual이다.

output이 다음과 같을 때 address space를 보면 code, heap, stack의 시작 주소를 알 수 있음. 하지만 이건 가상주소임.

profile
아무것도 모르는 말하는 감자 입니다

0개의 댓글