[전공 CS]/[컴퓨터 구조론][운영체제]

[운영체제] 08장 메모리 관리

우당탕탕 개발 일지 2025. 12. 14. 21:11
728x90

수업 내용을 정리한 글 입니다.~

분할 메모리 할당 정책 2가지

홀 선택 3가지_ 교수님 예제 밑에 있음. 


문제 풀이시 주의해서 볼 부분 )

-시스템 버스를 통해서 전달되는 주소는 물리주소이고 그 범위는 cpu (주소버스의 크기 )에 달려 있다.

-외부 단편화와 내부 단편화 문제 풀때 잘보기.

-세그먼트 번화와 세그먼트 물리주소 = 세그먼트 테이블.

 

 
 

ch01 메모리 계층 구조와 메모리 관리 핵심

 

메모리 계층 구조 : 속도와 용량에 따라 계층 구조를 이룸

(용량이 커지면 속도는 느려지고 비용은 싸진다)

 

속도 : 레지스터 >캐시 L1~L2> 캐시 L3 > 메인 메모리 > 보조 기억 장치

 

메모리 계층화 목적 : cpu가 명령과 데이터를 가져오는 메모리 엑세스 시간 단축을 위해 = 빠른 프로그램 실행

 

메모리 계층화 성공한 이유 : 참조의 지역성 때문.

 (* 참조 지역성 : 코드나 데이터,자원등이 아주 짧은 시간 내에 다시 사용되는 프로그램의 특성임)

 

 

메모리가 관리되어야 하는 이유

1. 메모리는 공유자원이기 때문 

2. 메모리 보호를 위해.

3. 메모리 용량 한계 극복할때 필요.

4. 메모리 효율성 증대를 위해. 

 


ch02 메모리 주소 

: 메모리는 오직 주소를 이용해서 만 접근됨.

 

 

논리/가상주소 : 프로그램 내에서 사용되는 주소. 

- 순차적으로 저장되는 것처럼 보임.  

-컴파일러 : 프로그램을 논리 주소로 컴파일.

더보기

cpu가 인지하는 모든 주소 = 논리주소 

동적할당 메모리 주소 =논리주소 

함수 호출시 스택 주소 =논리 주소 

 

물리 주소 : 하드웨어 주소, ram에 매겨진 주소.

- 물리 메모리 몇번지에 적재될지 알 수 없음. 

-물리주소 =논리주소 + 재배치 레지스터 값

 

 

MMU (memory managment Unit) : 논리 주소를 물리 주소로 바꾸는 하드웨어 장치.

- 논리주소와 물리주소의 매칭 정보를 담은 매핑 테이블을 참고해  변환 

 

cpu→(논리주소)→ MMU→ (물리주소) → 물리 메모리

 

 

ASLR ( 주소 공간 랜덤 배치 )

: 해커들의 메모리 공격에 대한 대비책. **오늘날 대부분의 운영체제 활용

논리 주소중에 힙이랑 스택 영역의 주소만 다르게 할당

 


CH 03 물리 메모리 관리 

메모리 할당 

: 운영체제가 새 프로세스를 실행 시키거나 실행중인 프로세스가 메모리가 필요할때 물리 메모리를 할당하는 것

 

 

 

연속메모리 할당 

: 프로세스 1개에 한 덩어리 메모리 할당

(예 : 파티션 하나에서 프로세스 A의 동작이 일어나야함. )

 

○고정 크기 할당  : 메모리 미리 나눔, 운영체제가 원하는 크기로 

 

가변 크기 할당 : 실행중 메모리 나눔, 프로세스가 원하는 크기 대로 

 

 

분할 메모리 할당 

: 프로세스 1개에 여러 덩어리 메모리 할당

-연속 메모리 보다 유연성 있음

-비어 있는 공간 = 홀 

 

 

paging (고정 크기 할당 )  :0번부터 일정한 크기로 잘라서 사용함 (용량 단위)   ⭐️현재

내부 단편화 발생 해결)을 위해서 세그먼테이션 기법 사용.

 

segmentation (가변 크기 할당) : 크기가 다른 여러개의 세그먼트로 분할 (코드, 데이터, 스택 단위 ) 

외부 단편화가 발생함.  → 해결)을 위해서 페이징 기법 사용.  속도가 느리고 계산이 어려움 

 

*내부 단편화 : 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비되는 상황

 

* 외부 단편화: 남아 있는 총 메모리 공간이 요청 메모리 공간보다 크지만, 연속적이지 않아 요청한 메모리를 적재할 수 없는 상황

 


CH04 연속 메모리 할당

-초기 운영체제에 사용.

-가상 메모리 지원 X

  • 고정 크기 할당 기법 : 동일한 고정 크기 ,  IBM os/360 MF
  • 가변 크기 할당 기법 : 프로세스와 동일한 크기의 메모리할당 ,IBM os/360 MVT

두 기법의 공통점 )  메모리가 부족하면 프로세스 큐에서 대기

 

**단편화 : 프로세스에게 할당할 수 없는 조각 메모리(홀)들이 생기는 현상임.

-내부 단편화 : 할당된 메모리 내부에 사용할 수 없는 홀이 생기는 현상.

-외부 단편화 : 할당된 메모리들 사이에 사용할 수 없는 홀이 생기는 현상.

 

 

더보기

(if 주소레지스터(논리주소)< limit 레지스터(범위) : mmu 정상 동작 )

 

하드웨어 지원 :

연속 메모리 할당시

하드웨어적으로 실행중에 1) 논리 주소를 물리주소로 변화하는 기능 (mmu)과

프로세스가 2) 다른 프로세스의 메모리 엑세스를 금지하는 기능이 구현되어야 함. 

+ 3) cpu의 레지스터 필요 : base 레지스터, limit 레지스터 , 주소 레지스터

 

 

운영체제 지원 : 

연속 메모리 할당시 

모든 프로세스에 대해 프로세스별로 할당된 1) 물리메모리의 시작주소와 크기정보를 저장 관리하고(base레지스터,limit 레지스터)

2) 비어 있는 메모리 영역을 관리해야함. 

 

 

 

연속 메모리 할당의 장단점
장점)

- 논리 주소를 물리 주소로 바꾸는(mmu) 과정 단순, CPU의 메모리 액세스 속도 빠름
- 운영체제가 관리할 정보량이 적어서 부담이 덜함

 

단점)
-메모리 할당의 유연성이 떨어짐. 

-외부 단편화 발생 (-> 메모리 압축 기법으로 해결)

 

 

 

홀 선택 알고리즘 (=동적 메모리 할당)⭐️

 

고정 크기 할당시 ) 파티션을  가용 메모리 리스트로 만들어서 관리하고  그 중하나 선택(단순) 

 

가변 크기 할당시 )

  • worst-fit : 홀이 무조건 큰거 (요청 크기를 수행 하는 것 중 가장 큰 홀) 
  • best-fit : 자기 크기랑 딱 맞는거.(요청 크기 중에 가장 작은 홀 ) 
  • first-fit : 무슨 조건 없이 제일 빠른거 .(홀 리스트를 검색해서 요청 크기보다 큰 첫 홀 ) 

 

 

 

수업중 예제 ) 순서대로 6,12,30이 요청  메모리 크기 일때 어디 위치할지 

크기 first  best worst
50 6   12
80 12   6
10   6  
5      
40 30 30 30
20   12  

 

 

 


 

CH 05 세그먼테이션 메모리 관리

세그먼트 : 프로그램을 구성하는 논리적 단위, 세그먼트마다 크기 다름.

 

세그멘테이션 메모리 관리 기법 :

프로세스를 논리 세그먼트로 나누고 (링커, 컴파일러에 의해 이루어짐)

논리 세그먼트에 한 덩어리의 물리 메모리를 할당하는 정책.

 

단점) 외부 단편화 : 세그먼트들의 크기가 같지 않기 때문에 발생. 

 

  • 코드 세그먼트
  • 데이터 세그먼트
  • 스택 세그먼트
  • 힙 세그먼트

 

 

하드웨어 지원 

-논리 주소 =[세그먼트 번호(s), offset]

-cpu

-mmu

-세그먼트 테이블

 

s offest
0 500

 물리 주소 :  base(0)+ offest(500)=500

 

s base
0 3000
1 0
2 2000
3 5000

 

 

->필기 햇는데 이게 먼지 당최.. 

s  
0 s1 (500)
1 s2(1000)
2  
3 s3=2000
2 s0=3000

 

  base limit
s0 3000 2000
s1 0 500
s2 2000 500
s3 5000 1000

 

(limit >offset인 경우만 )