Memory protection

불꼬ㅊ코딩·2023년 3월 26일
0

운영체제

목록 보기
2/2

개요

동시에 한 개의 프로세스만 동작한다면 메모리 관리에 골머리 쓸 필요가 없겠지만 우리는 수많은 프로세스를 동시에 사용하고 있다.
동시에 여러 운영체제는 프로세스를 관리하기 위해 많은 일들을 하지만 가장 중요한 일은 Context Switching을 하는 와중에 프로세스들의 데이터를 손상시키지 않는 일이다. 어떻게하면 데이터를 보존할 수 있을까?


핵심이 되는 아이디어는 각 프로세스들을 서로 격리(isolation) 시키는 것이고, 이를 구현하기 위해 각각의 프로세스에게 고유한 가상 주소 공간을 할당하고, 각각의 프로세스는 자신의 가상 주소 공간에서만 실행되도록 제한한다. 이걸 실현시키기 위한 세부사항을 알아보자.

PCB(Process Control Block)

운영체제는 프로세스를 관리하고 운영체제와 프로세스 간의 상호작용을 담당하는 시스템 소프트웨어이며, 이를 위해 각 프로세스의 상태 정보, 실행 정보, 자원 사용 정보 등을 추적하고 저장해야 한다. 이러한 정보를 담고 있는 자료구조가 바로 PCB.
이 pcb에서 관리하는 많은 데이터중에, 베이스값과 바운드 값이 있다.

베이스

  • 프로세스가 메모리에 Load될 때, Load된 메모리 주소의 시작값. 즉 프로세스가 사용가능한 메모리 주소값 중 가장 작은 값.

바운드

  • 프로세스가 사용가능한 메모리의 값중 가장 큰 값.

따라서 프로세스가 사용가능한 메모리 영역의 범위는 [베이스 , 베이스 + 바운드] 이다.

MMU(Memory Management Unit)

MMU는 가상 메모리 주소를 실제 물리적인 메모리 주소로 변환하는 작업을 하는 하드웨어에 내장된 장치이다. 변환 작업을 위해 필요한 데이터는 프로세스의 가상 메모리주소, 그리고 베이스, 바운드 값이다.
만약 프로그래머가 접근하는 메모리 주소가 사용가능한 메모리 영역의 범위에 들어온다면 정상적으로 프로그램이 동작하고, 범위를 넘어간다면 exception을 일으켜서 상황을 처리한다.

MMU를 사용해서 프로세스간 메모리 영역을 분리하고, 관리할 수 있다.

Dual Mode

듀얼모드는 컴퓨터 시스템에서 두 가지 모드(커널 모드와 유저 모드)를 구분하여 각각 다른 권한을 부여하여 사용하는 방식이다.

  • 커널 모드는 시스템 리소스에 대한 전체적인 접근 권한을 가지며 privileged mode 라고도 불린다.

  • 유저 모드는 일부 시스템 리소스에 대한 접근만 가능합니다.

운영체제는 두 가지 모드를 구분함으로써 사용자가 운영체제의 핵심 데이터(trap handler 등)에 접근을 제한함으써 시스템 보호 및 안정성을 유지할 수 있다.

profile
안녕하세용

0개의 댓글