[OS] Address Space & Address Translation

2024. 3. 29. 00:57·OS

주소 공간

: 실행 중인 프로그램이 가정하는 메모리의 모습

  • 코드, 데이터, 힙, 스택 존재

 

가상 메모리 시스템(VM)의 목표

  • 투명성
    • 실행 중인 프로그램이 가상 메모리의 존재를 인지히지 못하도록 가상 메모리 시스템을 구현해야 한다.
  • 효율성
    • 시간적으로는 프로그램이 너무 느리게 실행되서는 안되고, 공간적으로는 가상화를 지원하기 위한 구조를 위해 너무 많은 메모리를 사용해서는 안된다.
  • 보호
    • 어떤 프로세스가 다른 프로세스나 운영체제의 메모리 내용에 접근하거나 영향을 줄 수 있어서는 안된다.
    • isolation(격리) → 주소 공간
      • 하드웨어의 도움 → 빠르게 하기 위함 → 효율성
        1. Dual Mode (CPU)
          • Kernel Mode: 주소 변환 정보 생성/갱신
          • User Mode: 주소 변환 정보 사용
        2. Address Translation (MMU)

 

주소 변환 (하드웨어 기반)

: 가상 주소를 물리 주소로 변환

  • CPU 내부는 가상 주소로 이루어져있어 바로 물리 주소로 접근 불가능
  • MMU라는 하드웨어의 도움을 받아 물리 주소 접근

 

가정

  • 주소 공간은 물리 메모리에 연속적으로 배치되어야 한다.
  • 주소 공간은 물리 메모리 크기보다 작다.
  • 각 주소 공간의 크기는 같다.

 

동적 재배치 by MMU

베이스 & 바운드

▷ base: 가상 주소를 물리 주소로 변환하게 더해주는 offset 같은 역할

▷ bound(= limit): 보호를 위해 존재, 주소가 지정된 크기를 넘어가지 않게 한다.

  • 원하는 위치에 주소 공간을 배치할 수 있게 한다.
  • 물리 주소 = 가상 주소 + 베이스
  • 가상 주소 < 바운드(limit) 이어야 물리 주소 변환 가능
  • 주소 공간을 통채로 물리 주소에 배치

 

MMU

주소 변환에 도움을 주는 프로세서

  • 주소 변환 정보 저장
    • 베이스 레지스터, 바운드 레지스터, 덧셈 연산 회로, 비교 연산 회로 등

 

프로세스 상테 워드(PSW)

CPU 내부에 존재하며 현재 실행 모드가 무엇인지 저장하는 레지스터

 

하드웨어 요구사항

하드웨어 요구사항 노트
특권 모드(Kernel Mode) 사용자 모드 프로세스가 특권 연산을 실행하는 것을 방지하기 위해 필요
베이스/바운드 레지스터 주소 변환과 범위 검사를 지원하기 위하여 CPU 당 한 쌍의 레지스터가 필요
가상 주소를 변환하고 범위 안에 있는 검사하는 능력(+, > 회로) 주소 변환과 범위 검사를 위한 회로
베이스/바운드를 갱신하기 위한 특권 명령어 프로그램 시작 전에 운영체제가 베이스와 바운드 레지스터 값을 지정할 수 있어야 함
예외 핸들러 등록을 위한 특권 명령어 운영체제가 예외 처리 코드를 하드웨어에게 알려줄 수 있어야 함
예외 발생 가능 프로세스가 특권 명령어 실행을 시도하거나 범위를 벗어난 메모리의 접근을 시도할 때 예외를 발생시킬 수 있어야 함

 

운영체제 요구사항

운영체제 요구사항 노트
메모리 관리 - 새 프로세스의 메모리 할당에 필요
- 종료 프로세스로부터 메모리 회수
- 빈 공간 리스트를 통한 일반적인 메모리 관리
베이스/바운드 관리 문맥 교환 시 올바르게 베이스/바운드 설정
예외 처리 - 예외가 발생할 때 실행할 코드
- 범법 프로세스를 종료하는 것이 가능성이 높은 처리

 


※ 국민대학교 소프트웨어학부 황선태 교수님의 운영체제 교과목을 공부하며 정리한 내용입니다.

728x90
반응형

'OS' 카테고리의 다른 글

[OS] Paging  (0) 2024.03.30
[OS] Free-Space Management  (1) 2024.03.29
[OS] Segmentation  (1) 2024.03.29
[OS] Scheduling  (4) 2024.03.28
[OS] Process  (0) 2024.03.28
'OS' 카테고리의 다른 글
  • [OS] Free-Space Management
  • [OS] Segmentation
  • [OS] Scheduling
  • [OS] Process
nueos
nueos
  • nueos
    nueos 공부 기록
    nueos
  • 전체
    오늘
    어제
    • 분류 전체보기 (191)
      • 해커톤 (1)
      • 네이버 BoostCamp (6)
      • LG 유플러스 유레카 SW (3)
        • React (21)
        • TypeScript (2)
        • JavaScript (2)
        • HTML+CSS (5)
        • Spring (7)
        • Java (6)
        • SQL (2)
        • Algorithm (8)
        • CX (6)
        • Git (2)
        • 프로젝트 (2)
        • 스터디 (9)
        • 과제 (8)
        • 특강 (1)
      • React (3)
      • Next (0)
      • Javascript (2)
      • HTML (2)
      • CSS (9)
      • Algorithm (6)
      • Database (0)
      • OS (13)
      • C++ (24)
      • Python (1)
      • jQuery (1)
      • Django (1)
      • Git (1)
      • 개발 지식 (3)
      • 정보 보안 (22)
      • 포렌식 (1)
      • 암호 (2)
      • 기타 (4)
      • 패스트캠퍼스 FE 프로젝트십 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    큐
    Stack
    디지랩챌린지
    제주지역혁신플랫폼지능형서비스사업단
    스택
    디지털혁신
    힙
    완전 탐색
    exhaustive search
    heap
    기술로바꾸는세상
    Queue
    제주해커톤
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
nueos
[OS] Address Space & Address Translation
상단으로

티스토리툴바