운영체제 13 주소공간의 개념

zh025700·2022년 5월 21일
0

운영체제

목록 보기
8/20

운영체제

13) 주소 공간의 개념

초기 시스템

  • 메모리에 오직 하나의 프로세스만 load
    • 추상화 없음
    • 하나의 프로세스가 전체 메모리를 사용했다.
    • poor한 활용(utilization), 효율(efficiency)
  • 비싸고 낮은 유틸성

EX

  • 0~64kb까지 OS가 사용, 나머지는 현재 프로그램이 사용

멀티프로그래밍, 시분할

  • 메모리에 여러 프로세스를 load
    • 하나의 프로세스를 짧은 시간안에 실행
    • 메모리 안에서 프로세스 스위칭
    • utilization과 efficiency를 높임
  • protection이 중요한 문제로 화두
    • 한 프로세스가 다른 프로세스의 메모리를 사용하는 것을 막아야함

EX
단위 = kb

  • 0~63 OS사용, 64~127 free, 128~191 process c, 192~255 process b, 256~319 process A, 320~511 free

가상 메모리(Virtual Memory)

  • 메모리는 충분하지 않다

    • 프로그램이 돌아가기 위한 최소의 메모리 크기는??
  • 메모리에 접근할 때 동작 활용

    • 메모리 접근은 순서대로 실행(순차적 주소 사용)
    • 메모리 접근은 locality(인근성??)를 지님
      • temporal
      • spatial

Appendix: Locality

locality로 메모리 예측

원리

프로그램은 최근에 사용했던 주소공간이나 그 근처의 데이터나 인스트럭션을 사용하는 경향이 있음
  • Temporal locality
    • 최근 접근했던 인스트럭션 or 데이터를 미래에 다시 사용할 것이다.
  • Spatial locality
    • 프로그램이 어떤 주소 공간에 접근했으면 곧 그 근처 메모리에 접근할 것이다.

EX

sum =0;
for(i=0;i<n;i++>){
    sum+=a[i];
}
return sum;
  • data
    • temporal: sum
    • spatial: a[]
  • instruction
    • temporal: for
    • spatial: reference 인스트럭션(메모리 읽고쓰는)

가상 메모리

  • 동작중인 프로그램에 OS가 할당하는 추상화된 주소 공간
  • 사용자에게 실제 메모리를 숨긴다 => 가상화
    • 프로그램의 부분만 실제 메모리에
    • 동작중인 프로그램은 메모리의 특정 주소에 로드되고 큰 공간을 사용한다고 생각한다 => unbounded하게

주소 공간 address space

  • OS는 실제 메모리의 추상화를 생성

    • address space: OS가 제공하는 물리적 메모리의 추상화

    • address space는 프로세스의 모든 것(모든 메모리 상태)을 포함

      • 코드, 힙, 스택 등등
  • 실제론 프로세스는 전체 메모리를 쓰지 않음

    • 추상화가 메모리 가상화에 필요
      • EX
          실제 메모리에 프로세스 A는 320kb부터 저장
          프로세스 A가 0번째 주소로 load를 할 때 0번째가 아닌 320kb를 읽도록 해야함
  • logical address(가상 메모리)

    • cpu에 의해 생성되는 주소
  • physical address

    • 메모리
  • code

    • 인스트럭션이 있음
  • heap

    • 유동적으로 할당되는 메모리
      • malloc
  • stack

    • return 주소, 값을 저장
    • 지역 변수를 포함

실행하는 프로그램의 모든 주소는 가상이다

  • OS가 가상 주소를 실제 주소로 변경한다(MMU)

메모리 layout

순서대로 높은 메모리 순(2^n-1 ~ 0)

커널(OS) -> 스택 -> free -> heap -> Static data -> Literals -> instructions -> system reserved

메모리 가상화의 장점

  • 프로그래밍하기 쉬움
  • Transparency 투명성(인지하기 어렵게)
    • 프로그램이 가상메모리를 인지하지 못하도록
      • 프로그램이 자신의 전용 물리메모리를 소유한 것 처럼
  • Efficiency 효율성, 시간과 공간에 대한
    • Time: 성능에 영향을 미치지 않도록
      • 프로그램 실행이 너무 느리면 안됨
    • Space: 가상화에 최소의 공간만 사용하도록
      • 가상화를 위해 너무 많은 메모리를 쓰면 안됨
    • OS는 하드웨어에 지원을 받아야함
  • Protection 보호, 프로세스끼리의 isolation 보장
    • 프로세스를 다른 프로세스와 OS로부터 보호해야함
      • 자신 주소 밖의 어느 것도 접근 불가!
    • 프로세스 사이의 isolation
    • memory sharing에도 좋아

Summary

  • 메모리 가상화의 motivation
    • 초기 time sharing 시스템
  • address space
    • 물리적 메모리의 추상화, OS가 함
    • protection을 준다
  • 메모리 가상화
    • 추상화와 함께, OS는 메모리를 가상화할 수 있다.
    • 목표
      • transparency
      • efficiency
      • protection
profile
정리

0개의 댓글

관련 채용 정보