티스토리 뷰

728x90
반응형
본 내용은 학교 강의+반효경 교수님 강의를 통해 개인적으로 공부한 내용입니다. 책은 
쉽게 배우는 운영체제(한빛 아카데미)를 참고했습니다. 조언은 언제든지 감사합니다 !

 

Logical address vs Physical address


Logical address

≒ relative address (상대 주소), virtual address

프로세스마다 독립적으로 가지는 (가상의)공간으로 각 프로세스마다 0번지부터 시작

사용자 입장에서 바라보는 주소 공간이다.

실제 CPU는 Logical address를 보며 작업함

 

Physical address

≒ absolute address (절대 주소)

메모리에 올라가는 실제 주소 공간 

메모리 관리자의 입장

 

 

Address Binding (주소 변환)


메모리에 접근할 때, 프로세스 기준으로 되어있는 상대 주소를 실제 메모리 내의 절대 주소로 변환하기 위해 메모리 관리자가 실행하는 작업 

Symbolic address -> Logical address -> Physical address

MMU (Memory-Management Unit)

Logical address를 physical address로 매핑해 주는 Hardware device

메모리 관리자는 사용자 프로세스가 상대 주소를 사용하여 메모리에 접근할 때마다 상대 주소값에 재배치 레지스터 (relocation register = base register)의 값을 더해 절대 주소를 구한다.

이 재배치 레지스터는 메모리에서 사용자 영역의 시작 주소값이 저장되므로

상대 주소 + 재배치 레지스터 값(메모리에서 사용자 영역의 시작 주소값) = 절대 주소

식으로 구해진다. (단, 여기서 메모리에 프로그램 전체가 한 번에 올라간다는 전제)

※ limit register : 각 프로세스가 가질 수 있는 최대 메모리 크기를 저장하는 레지스터로 다른 영역의 침범을 막기 위해 사용된다.

1. 가져오기 (fetch)

프로세스와 데이터를 메모리로 가져오는 작업

언제 가져올지가 중요

2. 배치 (placement)

가져온 프로세스와 데이터를 메모리의 어떤 부분에 올려좋을지 결정하는 작업

어떤 위치에 올려 놓을지가 중요 (paging, segmentation)

3. 재배치 (replacement)

꽉 차 있는 메모리에 새로운 프로세스를 가져오기 위해 기준에 맞게 프로세스를 내보내는 작업

replacement algorithm

이러한 메모리 관리 시스템에 의해 사용자는 프로세스 입장에서의 주소인 상대 주소만 알면 되고 절대 주소는 알 필요가 없어진다. 그로인해 사용자의 편의가 증가하고, 실제 메모리의 민감한 부분도 감출 수 있기 때문에 보안도 향상된다.

 

 

Overlays & Swapping


Overlay

하나의 메모리에 여러 프로그램을 겹겹이 쌓아놓고 실행하는 것

프로세스의 크기가 메모리의 크기보다 커 메모리에 프로세스의 부분 중 실제 필요한 정보만을 올림

이는 프로그램 전체가 아니라 일부만 메모리에 올라와도 실행이 가능하다는 의미다.

운영체제의 지원없이 사용자에 의해 구현되어야 하므로 프로그래밍이 매우 복잡

어떤 모듈을 가져오거나 내보낼지는 CPU 레지스터 중 PC(Program Counter)가 결정한다.

 

Swapping

새로운 프로그램을 메모리에 올려야 하는데 사용 가능한 메모리 공간이 없어 프로세스를 일시적으로 메모리에서 스왑 영역 (swap area = backing store)로 쫒아내는 것

Backing store (Swap area) : 메모리 관리가자 관리하는 충분히 빠르고 큰 저장공간으로 하드디스크의 특별한 공간

swap out : 메모리에서 스왑 영역으로 내보내는 것

swap in : 스왑 영역에서 메모리로 가져오는 것

사용자는 전체 메모리의 크기를 실제 메모리 크기 + 스왑 영역의 크기로 인식하고 사용할 수 있다.

스왑할 프로세스의 결정은 우선순위를 고려해 중간 단계 스케줄러 (swapper)가 결정한다.

 

 

 

728x90
반응형

'CS > 운영체제 공부' 카테고리의 다른 글

페이징(Paging) 기법들  (2) 2019.05.21
물리 메모리 분할 방식  (0) 2019.05.16
CPU 스케줄링  (1) 2019.03.30
스레드  (0) 2019.03.26
프로세스 메모리 구조, 시스템 호출  (0) 2019.03.24
댓글