쉽게배우는 운영체제, 한빛미디어 - 요약 및 공부한 내용입니다.
1. 메모리 관리의 개요
1) 메모리 관리의 복잡성
메모리란
: 유일한 작업공간이다.
⇒ 시분할 시스템에서는 메모리에 운영체제를 포함한 여러 프로그램이 올라감.
⇒ 따라서 메모리가 관리가 매우 복잡해지는데 이 메모리관리를 (메모리 관리 시스템 MMS) 가 한다.
2) 메모리 관리의이중성
⇒ 프로세스 입장과/ 관리자의 입장에서의 편리함이 충돌한다.
프로세스 입장 : 메모리를 독차지하고 싶음
관리자 입장 : 공간을 나누어 효율적으로 관리하고 싶음
3) 메모리 관리자의 역할
1. 가져오기(fetch), 배치(placement), 재배치(replacement)
⇒ 3가지 작업이 존재
가. 가져오기(fetch)
: 프로세스와 데이터를 메모리로 가져오는 작업 ( 사용자의 요청이 없더라도 미리 가져오기도 한다)
나. 배치 작업(placement)
: 메모리의 어떤 부분에 올려놓을지 결정
⇒ 메모리를 어떻게 자를지(분배할지)도 결정
다. 재배치 작업(replacement)
: 메모리가 꽉찼다면 오래된 프로세스를 내보내야 한다.
<정책>
1. 가져오기 정책(fetch)
: 프로세스가 필요로하는 데이터를 언제 메모리에 가져올지 결정하는 정책
⇒ 필요하다고 예상되는 데이터를 미리가져오는 방법도 있다.(prefetch)
2. 배치 정책(placement)
: 가져온 프로세스를 어떤 위치에 올려놓을지 결정하는 정책(어떻게 자를지도)
- 페이징:메모리를 같은 크기로 자르는것
- 세그먼테이션: 프로세스의 크기에 맞게 자르는 것
3.재배치 정책(replacement)
: 메모리가 꽉찼을 때 메모리 내에 어떤 프로세스를 내보낼지 결정하는 정책
⇒ 앞으로 사용하지 않을 프로세스를 찾아 내보내는 것 (교체 알고리즘)
2. 메모리 주소
1) 메모리 주소
: 메모리에 접근할 때는 주소를 이용한다. (절대주소, 상대주소)
2) 32bit CPU와 64bit CPU의 차이
32bit CPU
· 표현할 수 있는 메모리 주소의 범위 0~2^32-1, 총 2^32개
· 총 크기: 2^32B == 약 4GB
64bit CPU
· 표현할 수 있는 메모리 주소의 범위 0~2^64-1, 총 2^64개
· 총 크기: 2^64B == 약 16,777,216TB
물리 주소 공간: 하드웨어 입장에서 바라본 메모리의 주소공간
논리 주소 공간: 사용자 입장에서 바라본 메모리의 주소 공간
3) 절대주소와 상대주소
1. 메모리 영역의 구분
단순 메모리 구조
· 일괄 처리 시스템에서 사용
· 운영체제 영역과 사용자 영역으로 나누어 관리
· 사용자 프로세스는 운영체제 영역을 피해 메모리에 적재
· 운영체제의 크기에 따라 적재 주소가 달라지는 번거로움
· 이를 개선해 메모리를 최상위에서 운영체제 방향으로 내려오면서 사용
· 경계 레지스터: 사용자 영역이 운영체제 영역으로 침범되지 않게하는 하드웨어적 방법
· 사용자가 작업을 요청할 때마다 경계 레지스터의 값을 벗어나는지 검사, 벗어나는 프로세스를 종료
절대 주소와 상대 주소의 개념
절대주소란, 실제 물리주소를 가리키는 주소, 메모리 관리자 입장에서 바라본 주소
· 물리 주소 공간: 절대 주소를 사용하는 주소 공간
상대주소란, 사용자 영역이 시작되는 번지를 0번지로 변경하여 사용, 사용자 프로세스 입장에서 바라본 주소
· 논리 주소 공간: 상대 주소를 사용하는 주소 공간
상대 주소를 절대 주소로 변환
1) 사용자 프로세스가 상대 주소 40번지의 데이터를 요청
2) cpu는 메모리 관리자에게 40번지의 내용을 가져오라고 명령
3) 메모리 관리자는 재배치 레지스터를 사용해 상대주소 40번지를 절대주소 400번지로 변환
4) 메모리 400번지에 저장된 데이터를 가져옴
3. 단일 프로그래밍 환경에서의 메모리 할당
메모리 오버레이
: 작은 메모리로 큰 프로그램을 실행하는 것
⇒ 오버레이 : 메모리를 적당한 크기로 잘라 가져오는 것
⇒ 어떤 모듈을 가져올지는 프로그램카운터(PC)가 결정
⇒ 프로그램 전체가 아니라 일부만 메모리에 올라와도 실행이 가능
⇒ 이는 메모리를 여러 조각으로 나누어 여러 프로세스에 할당할 수 있다는 의미이다.
스왑
1) 스왑 영역
: 사용중인 메모리를 잠시 보관하는 영역(임시 보관)
메모리가 모자라 쫒겨난 프로세스가 모이는 특별한 공간
스왑인: 메모리로 데이터를 가져오는 작업
스왑아웃: 스왑 영역으로 데이터를 내보내는 작업
사용자는 실제 메모리의 크기와 스왑 영역의 크기를 합쳐 전체 메모리로 인식하고 사용
4. 다중 프로그래밍 환경에서의 메모리 할당
1) 메모리 분할 방식
: 메모리를 어떤 크기로 나눌 것인가는 배치정책에 해당된다.
2) 분할방식 (2가지)
1.. 가변 분할 방식
: 프로세스의 크기에 따라 메모리를 나눈다.
2. 고정 분할 방식
: 프로세스의 크기에 "상관없이" 같은 크기로 나누는 것
가. 가변 분할 방식
프로세스의 크기에 맞게 메모리가 분할
⇒ 연속된 중간에 배치되기 때문에 연속 메모리 할당이라고도 한다.
(장점)
1. 프로세스를 한덩어리로 처리하여 연속도니 공간에 배치한다.
(단점)
1. 메모리 관리가 복잡하다 ( 부가적인 작업이 필요하기 때문)
나. 고정분할 방식
: 프로세스의 크기에 상관없이 메모리가 같은 크기로 나뉘어진다.
⇒ 한 프로세스가 분산되어 배치
( 비연속 메모리 할당)
(장점)
1. 메모리를 일정한 킈로 나누어 관리가 수월하다.
(단점)
1. 쓸모없는 공간으로 인해 메모리 낭비가 발생할 수 있다.
2) 가변 분할 방식의 메모리 관리
- 세그먼트 기법, 이라고도 한다.
- 메모리에 빈 영역이 있어도 서로 떨어져 있으면(연속이 아니라면) 프러세스를 배정하지 못한다.
⇒ 이로인해 작은 조각들이 발생하는 현상을 "단편화" 혹은 "조각화" 라고 한다.
⇒ 가변분할 방식에서 이러한 빈공간을 "외부 단편화"라고 한다.
3) 외부 단편화의 해결 방법
1. 메모리 배치방식 : 작은 조각이 발생하지 않게 배치
가. 최초배치 : 메모리 중, 가장 첫번째로 발견한 공간에 배치
나. 최적 배치 : 메모리 모든 공간을 확인한 후, 적당한 크기 중 (가장 작은 공간)으로 배치
(단점) : 아주 작은 조각을 만들어 냄
다. 최악 배치 : 최적과 반대, 가장 큰 공간에 배치한다.
⇒ 배치 공간이 크기 때문에 남은 공간도 쓸모가 있음
(단점)
: 결국 나중에 조각이 생김
2. 조각 모음 : 작은 조각을 모아 큰 덩어리로 만듬
<순서>
1. 이동한 프로세서의 동작을 멈춤
2. 프로세스를 이동 (상대 주소 값 변경)
3. 다시 프로세스 작동
4. 고정 분할 방식의 메모리 관리
1) 프로세스 배치와 내부 단편화
- 가변 분할 방식보다 공간을 효율적으로 관리
- 조각 모음을 할 필요가 없어 관리가 수월
2) 내부 단편화
- 고정 분할 방식에서 메모리 조각에 프로세스를 배치하고 공간이 남는 현상
- 고정 분할 방식에서는 조각 모음을 할 수 없고 다른 프로세스에 배정할 수도 없음
- 동일하게 분할되는 공간의 크기를 조절해 내부 단편화를 최소화
5. 버디 시스템
1) 버디 시스템의 작동 방식
- 가변 분할 방식과 고정 분할 방식의 중간 구조
- 프로세스의 크기에 맞게 메모리를 1/2로 자르고 프로세스를 메모리에 배치
- 나뉜 메모리의 각 구역에는 프로세스가 1개만 들어감
- 프로세스가 종료되면 주변의 빈 조각과 합쳐서 하나의 큰 덩어리를 만듦
2) 버디 시스템의 특징
1. 가변 분할 방식처럼 메모리가 프로세스 크기대로 나뉨
2. 고정 분할 방식처럼 하나의 구역에 다른 프로세스가 들어갈 수 없음
3. 메모리의 한 구역 내부에 조각이 생겨 내부 단편화 발생
4. 비슷한 크기의 덩어리가 서로 모여있어 통합하기 쉬움
'운영체제 > 쉽게 배우는 운영체제' 카테고리의 다른 글
[OS] 9. 가상 메모리 관리 (쉽게 배우는 운영체제 9장) (0) | 2022.05.08 |
---|---|
[OS] 8. 가상 메모리와 메모리 분할 방식 - 페이징, 세그먼테이션, 혼용 (쉽게 배우는 운영체제 8장) (0) | 2022.05.08 |
[OS] 6. OS 교착상태 - 데드락,데드락 조건, 데드락 해결 방법 (쉽게 배우는 운영체제 6장) (0) | 2022.05.08 |
[OS] 5. 프로세스 동기화 (쉽게 배우는 운영체제 5장) (0) | 2022.05.08 |
[OS] 4. CPU 스케줄링 알고리즘 (쉽게 배우는 운영체제 4장) (0) | 2022.05.08 |