이야기박스

운영체제) 메모리 관리1 (Memory Management) 본문

Computer & Data/Operating System

운영체제) 메모리 관리1 (Memory Management)

박스님 2017. 5. 26. 19:49
반응형

§ 메모리 추상화가 없는 컴퓨터

▣ 메모리 관리

- 메인 메모리 자원 관리 ; 주 메모리 - 보조기억장치 프로세스의 이동 가능 여부

- 메모리 계층 구조 ; 캐시, 메인 메모리 등

- 메모리 관리자 ; 메모리 계층을 관리하는 운영체제의 특정 부분


▣ 단일 프로그래밍 (monoprograming)

- 가장 간단한 메모리 관리기법 ; 모든 프로그램은 물리 메모리를 직접 사용

- 병렬성은 제공 됨 <-- 한 프로세스에 존재하는 스레드들은 모두 같은 메모리 이미지를 공유
                          <-- 제한된 병렬성



▣ 여러 프로그램을 실행하려면

- 메모리에 존재하던 프로그램 이미지를 디스크에 저장 -> 다음에 실행할 프로그램을 메모리로 로딩 (스와핑; swapping)

- 사실상 메모리에 한 순간에 하나의 프로그램만 존재

- 고정 분할 방식 멀티프로그래밍 ; 메모리를 n개의 분할로 나누고 사용

- IBM 360 시스템 초기 모델; 하드웨어






§ 메모리 추상화

▣ 물리 주소 사용의 문제점

- 프로그램이 물리 메모리의 모든 주소에 접근할 수 있다면
    --> 운영체제 파괴의 위험 , 시스템 중지의 위험

- 여러 프로그램을 동시에 실행시키기 어려워 짐




▣ 주소 공간 개념

- 재배치 (Relocation) : 메모리에 적재되는 프로그램

- 보호 (Protection) : 다른 프로세스의 파티션과의 문제

- 베이스(Base)와 한계(Limit) 레지스터

==> 주소 공간(address) 라는 새로운 메모리 추상화


- 주소공간 ( Address )

; 프로세스가 메모리에 접근할 때 사용하는 주소들의 집합

; 각 프로세스는 자신만의 주소 공간을 갖음

; 공유 메모리는 예외


- Base와 Limit 레지스터

; 동적 재배치(dynamic relocation) 방법 중 하나

; 각 프로세스에게 자신 고유의 주소 공간 제공 -> 메모리 참조시 덧셈, 비교 연산 ( 덧셈은 캐리 전파로 지연 발생 )

; 오직 운영체제만 변경가능




▣ 스와핑 (Swapping)

- 실제 물리 메모리 < 모든 프로세스 적재 크기 ==> 메모리 관리가 필요하다

- 메모리 관리 기법

a. swapping ; 프로세스 전체를 디스크에서 메모리로 적재 후 실행, 다시 디스크로 저장

b. virtual memory ; 프로그램 일부분만 메모리에 적재되더라도 동작 가능하도록 지원

- 메모리 조각 (Memory compaction) --> 메모리 재배치
    ; 여러 개의 빈 공간들을 이동시켜 하나의 커다란 빈 공간으로 생성

- 대부분의 프로세스들은 실행되는 동안 더 많은 메모리를 요구 
    --> Base는 그대로, Limit가 가변적
    --> 실제 프로그램 크기보다 넓게 가지고 시작
    ===> 가용 메모리 공간 관리




가용 메모리 공간 관리 ( 비트맵 이용 / 연결리스트 이용 )

- 비트맵을 이용

; 0 (가용), 1 (사용)

; 일정 크기 단위의 프로세스 적재하려고 할 때, 연속적인 0 비트를 찾기 위해 비트맵 조사 --> overhead

|p,0,5| --> |H,5,3|-->|p,8,6|--> ....
* p : process , h : hole // 첫번째는 0번부터 5개 적재되어 있단 의미


- 연결리스트 이용

; 프로세스를 적재할 경우

a. 최초 적합 (first fit) ; 리스트 처음부터 검색시 적합한 첫번째 공간에 할당

b. 다음 적합 (next fit) ; 이전 빈공간 할당후의 위치에서 부터의 최초적합

c. 최적 적합 (best fit) ; 모든 엔트리 검사 후, 요청한 크기에 가장 근접한 빈공간 선택
 --> Compaction이 많음

d. 최악 적합 (worst fit) ; 항상 가장 큰 빈 공간을 할당   
--> 의외로 가장 효율적 <-- Compaction이 적음 <-- 조각이 큼

e. 빠른 적합 (quick fit) ; 홀을 별도의 리스트로 유지





▣ 가상 메모리 ( Virtual memory ) ; 지역성을 이용

- 각 프로그램 ~ 고유한 주소 공간 갖음 , 주소 공간은 페이지(page)라는 조각들로 구성

- 각 페이지는 연속된 주소를 갖음

- 프로그램이 일부분만 메모리에 적재되더라도 동작

- 현재 사용중인 프로세스의 부분들만 메모리에 적재, 다른 부분들은 디스크에 저장

- 필요에 따라 메모리 <---> 디스크





반응형