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