OSTEP 13 - Address Space

JiYun·2025년 1월 30일

OSTEP

목록 보기
8/21

1. 초기 시스템

메모리 관점에서 초기 컴퓨터는 많은 개념을 사용자에게 제공하지 않았다.

물리 메모리에 하나의 실행 중인 프로그램(프로세스)이 존재하였고. 쓰고 남은 메모리를 사용했다. 가상화는 거의 존재하지 않았다.

2. 멀티 프로그래밍과 시분할

멀티프로그래밍

여러 프로세스가 준비상태에 있고 운영체제는 이를 전환하면서 실행했다. 예를 들어 한 프로세스가 입출력을 실행하면 CPU는 다른 프로세스로 전환했다. → CPU의 이용률 증가, 효율성 개선

시분할

시간이 오래 걸리는 작업에 대해 일괄처리방식 컴퓨팅에 한계를 느끼고, 실행 중인 작업으로부터 즉시 응답을 얻는 대화식 이용의 개념이 중요해졌다.

시분할을 구현하는 한가지 방법은 하나의 프로세스를 짧은 시간동안 실행시키는 것이다. 이를 위해 프로세스의 모든 상태 정보를 메모리와 디스크 사이에서 전환했다. 이는 메모리가 커질수록 속도가 매우 느려진다. 특히 메모리 내용 전체를 디스크에 저장하는 것이 엄청 느리다.

우리가 할 일은 프로세스를 메모리에 유지하면서, 운영체제가 시분할을 효율적으로 구현할 수 있게하는 것이다.

그림을 보면 세 개의 프로세스(A, B, C)가 메모리의 작은 부분을 나누어 할당 받았다. 이 경우에는 한 프로세스가 다른 프로세스의 메모리를 침법하지 못하도록 하기 위한 보호(protection)가 중요한 문제가 된다.

3. 주소 공간

이런 위험을 염두에 두고 만들어진 개념이 주소 공간(Address Space)이다.

주소 공간은 프로세스의 모든 메모리 상태를 가지고 있다.

  • 코드(code, 명령어)
  • 스택(stack) - 함수 호출에 대한 현재 위치, 지역 변수, 함수 인자, 반환 값을 저장한다.
  • 힙(heap): 동적으로 할당되는 메모리

스택과 힙 영역은 확장이 가능해야한다. 이에 주소 공간의 양 끝단에 위치하고, 확장 방향이 서로 반대이다. 그러나 주소 공간에 여러 쓰레드가 공존한다면 이런 식으로 나누면 안된다.

주소 공간은 운영체제가 실행 중인 프로그램에게 제공하는 개념(abstraction)을 설명한다. 실제로 0~16KB의 물리 주소에 프로그램이 존재하는게 아니다. 실제로는 임의의 물리 주소에 탑재된다. <그림 16.2>를 보면 각 프로세스의 주소 공간은 0~16KB겠지만 실제 저장되는 물리 주소는 각각 다르다.

운영체제가 이런 일을 할 때, 운영체제가 메모리를 가상화(virtualizing memory)한다고 말한다. 실행 중인 프로그램들은 자신이 특정한 주소의 메모리에 주소 공간을 가지고 있다고 생각하게 된다.

그러나 실제로 프로세스들은 주소 0으로 시작하는 가상 주소 공간을 가지고, 운영체제는 하드웨어의 지원을 통해 실제로 메모리가 저장된 물리 주소를 읽도록 보장한다. 이것이 메모리 가상화이다.

*핵심 질문: 메모리를 어떻게 가상화하는가?
운영체제는 물리 메모리를 공유하는 다수의 프로세스에게 어떻게 프로세스 전용의 커다란 주소 공간이라는 개념을 제공할 수 있는가?*

4. 목표

투명성 (transparency)

운영체제는 실행 중인 프로그램이 가상 메모리의 존재를 인식하지 못하도록 해야한다. 프로그램은 메모리 가상화의 여부를 모르고, 각자 자신만의 전용 메모리를 소유한 것처럼 행동해야한다.

효율성 (efficiency)

운영체제는 가상화가 시간과 공간 측면에서 효율적이도록 해야한다. 이를 위해 TLB 등의 하드웨어 기능을 통해 시간-효율적인 가상화를 구현한다.

보호 (protection)

운영체제는 프로세스를 다른 프로세스로부터 보호해야 하고, 운영체제 자신도 프로세스로부터 보호해야한다. 자신의 주소 공간 밖의 어느 것도 접근할 수 있어서는 안된다. 프로세스들을 서로 고립(isolate)시켜야 한다.

다음 장부터는, 하드웨어 지원을 포함하여 메모리를 가상화하기 위해 필요한 기본적인 기법을 집중적으로 탐구한다. 또한 빈 공간을 관리하는 방법과 공간이 부족할 때 어떤 페이지를 내보낼 것인가 같은 운영체제 정책들에 대해서도 학습한다.

profile
고수가 되고싶다

0개의 댓글