320x100
320x100

사전지식

- 프로세스와 메모리

 

프로세스와 메모리

프로세스와 메모리 주 기억장치 (메모리) - RAM (Random-Access-Memory) : 전력 공급이 끊길 경우 데이터가 소거되는 휘발성 메모리 - ROM (Read-Only-Memory) : 메모리 내의 데이터에 대해 읽기만 가능한 비휘발

2mukee.tistory.com

 

 

 

메모리관리 개념

- 메모리에 적재된 프로세스에 대한 관리

 : 프로그램이 프로세스가 되어 CPU에 적재되기 전, 프로세스를 메모리에 적재하는 과정이 필요하기 때문

 

- 메모리 관리 정책의 종류

 : 적재 정책 = 디스크에서 메모리로의 프로세스 적재에 대한 관리 

 : 배치 정책 = 프로세스의 적재 위치에 대한 관리

 : 대치 정책 = 메모리가 충분하지 않을때 제거할 프로세스 결정 방법

 

 

 

 

메모리 주소의 종루

- 논리적 주소 (가상주소)

 : CPU가 생성한 가상 주소로 프로세스마다 독립적으로 가지는 주소 공간 (0X123456)

 : 프로그램에서 사용하는 배열, 구조체 등이 저장 

 

- 물리적 주소 (실제주소)

 : 메모리가 취급하는 주소 (메모리주소 레지스터(MAR)에 저장되는 주소)

 

=> 논리적 주소와 물리적 주소의 변환은 MMU에서 담당 

 

 

 

 

MMU (Memory Management Unit)

- 논리적 주소를 물리적 주소로 매핑해주는 Hard Ware

- Relocation Register 

 : 접근할 수 있는 물리적 메모리의 최소값

- Limit Register

 : 논리적 주소가 존재할 수 있는 범위 (오류방지를 위함)

 

 

 

 

주소할당 (Address Binding)

- 변수와 함수 등의 데이터를 실제 메모리 주소에 할당하는 것

 : 프로그램이 메모리 어느 부분에 적재될지 결정

 : 논리적 주소에서 물리적 주소로의 바인딩

 

 

- 컴파일 시간 바인딩 (Compile Time Binding)

 : 컴파일이 진행될때 할당

 : 한번 결정된 주소는 바뀔 수 없음

 : 하나의 프로세스만 존재하는 경우에 사용 (ex) 임베디드)

 

 

- 적재 시간 바인딩 (Load Time Binding)

 : 프로그램을 메모리에 적재할 때 할당

 : 컴파일러가 주소를 재배치할 수 있음

 : 멀티프로그래밍이 가능하나, 메모리 로딩시간의 지연 문제 발생

  => 프로그램 코드가 일일이 메모리를 참조해주기 때문

 

 

- 실행 시간 바인딩 (Execution Binding / Runtime Binding)

 : 프로그램을 실행시킬때 할당

 : CPU가 주소를 참조할 때마다 바인딩 상태를 점검해야하는데 이때 MMU를 이용하여 수행

 => CPU에서 논리적 주소로 메모리에 접근할때 MMU에서 물리적 주소로 매핑 수행

 

 

 

 

Dynamic Loading (동적적재)

- 프로세스 전체를 메모리에 미리 올리지 않고 해당 함수가 불려질때 마다 메모리에 적재 하는 방법

 : 운영체제의 지원없이 프로그램 자체에서 구현 가능

 

 

 

 

Dynamic Linking (동적연결)

- Linking을 실행시간때까지 미루는 방법

- Lingking

 : 컴파일 이후 링크를 통해 프로그램을 실행하는 과정

 : Link = 흩어진 프로그램 파일을 하나로 묶는 작업

 

 

 

 

Swapping (스와핑)

- 프로세스를 일시적으로 메모리에서 디스크의 일정영역에 잠시 저장하는 것

- Swap in

 : 디스크 -> 메모리

- Swap out

 : 메모리 -> 디스크

 

 

 

 

가상메모리

- 메모리 부족 현상을 방지하기 위해 디스크 공간을 주 기억장치로 활용하는 것

 

- 운영체제의 메모리 관리

 : 프로세스에서 필요한 부분만 메모리로 적재하고

   나머지 부분은 디스크에 생성된 가상메모리 영역에 적재

 

 

 

https://developerhenrycho.tistory.com/22

Paging (페이징)

- 프로그램 전체를 연속된 공간에 적재하지 않고 일정 크기의 단위로 나누어서 분산 하여 적재 하는 방법

 : 물리메모리를 일정한 크기인 Frame으로 나눈다

 : 논리메모리도 같은 크기의 Page로 나눈다

 : 프로세스에는 페이지번호와 offset 정보가 포함 되어있음

 : CPU에서 프로세스를 실행할때 운영체제의 PageTable을 참조하여 데이터를 로딩

=> 빈공간이 발생하는 단편화 현상 해결

 

 

 

 

 

Segmentation (세그먼테이션)

- 프로그램의 주소공간을 논리적 단위로 나누는 방법

 : 변수, 함수, 스택, 객체 등 논리적인 단위로 나누어 각 세그멘테이션간의 침범을 방

 : 세그먼트에는 세그먼트 테이블을 통해 세그먼트 번호와 오프셋이 지정됨

 : 페이지와 달리 세그먼트의 길이가 일정하지 않음

=> 페이징에서 발생할 수 있는 공유, 보안, 접근, 권한 문제 해결

 

 

 

Paged Segmentation

- 세그먼트를 페이지로 나누어 적재

 : 세그먼트 기법과 페이징 기법에서 발생하는 문제를 해결 

 

 

 

 

 

 

 

 

Refference

 

메모리 관리(Memory Management) 개념 및 설명

메모리 관리 개념 어떤 프로그램이든 프로세스가 되어 프로세서에 적재되기 위해서는 메모리에 적재되어야 실행이 가능하다. 따라서 메모리는 중요한 작업 공간이고 한정된 메모리를 다중 프

www.crocus.co.kr

 

[운영체제 OS]Address binding 로드타임 바인딩(load time binding), 실행타임(execution time) 바인딩 (run time bi

안녕하세요 여러분 오랜만에 들고 온 운영체제 관련 글입니다. ㅎㅎ [운영체제 OS 완전정복 목차] 저번 시간에는, 1. 물리적 주소란 (physical address) 2. 주소 바인딩이란 (Address binding) 3. 절대 코드란

jhnyang.tistory.com

 

[OS] 운영체제 9. Memory Management : 논리/물리 주소, MMU(Memory Management Unit)

메모리의 주소를 크게 두가지로 나눌 수 있다 Logical address(=virtual address) - 프로세스마다 독립적으로 가지는 주소 공간 - 각 프로세스마다 0번지부터 시작 - CPU가 보는 주소는 logical address Physical..

developyo.tistory.com

 

[운영체제] 8장 메모리 관리 전략

* 메모리는 각각 주소가 할당 된 일련의 워드 또는 바이트들로 구성된다. * 주 메모리와 프로세서 자체에 ...

blog.naver.com

 

8강. 메모리 관리

8강. Memory Management 메모리란? 주소를 통해 접근하는 객체로 Main Memory는 주 기억장치를 의미한다. 주소의 종류 Logical Address(Virtual Address) 프로세스마다 독립적으로 갖는 공간. 0번지부터 시작한다...

marlinbar.tistory.com

 

 

[21] 페이징(Paging)과 세그멘테이션(Segmentation)

페이징(Paging)과 세그멘테이션(Segmentation) 메모리 관리와 관련하여 페이징과 세그멘테이션을 수없이 많이 들어 본 것을 보면 분명 중요한 토픽일거라는 생각에 페이징과 세그멘테이션 부분은 따

developerhenrycho.tistory.com

 

300x250
728x90