[운영체제] #24강

Junyoung Park·2022년 8월 6일
0

운영체제

목록 보기
24/25
post-thumbnail

Memory Management

Contiguous Memory Allocation

  • 메모리 할당 → 연속적
  • Single: 메모리 영역을 한 번에 하나의 유저 프로그램만 사용 - 프로세스 하나 사용할 때 페이지 폴트가 일어나지 않을 수 있음. 컨텍스트 스위칭 할 때마다 페이지 폴트 발생
  • Multiple: 멀티 프로그래밍 도입. 여러 개의 유저 프로그램이 부분을 나누어서 사용. 제한된 메모리 공간을 나눠야 하기 때문에 파티션에 의해 특정 프로세스가 사용할 메모리가 부족하기 때문에 page replacement 발생
  • No Partition: 전체를 구획을 나누지 않고 필요할 때마다 사용하는 방법. 메모리 할당(필요할 때마다 프리 프레임 할당) + GC(사용 중, 미사용 메모리를 확인해서 사용 가능한 메모리를 계속해서 얻어내기) 필요

프로그램을 피지컬 메모리에 로드 시 비어 있는 메모리 공간이 여러 개라면 선택해야 한다. "과연 어디에 넣는 게 가장 효율적인가?"

  • First-Fit 알고리즘은 다른 프레임을 찾는 비용을 줄일 수 있기 때문에 시간적으로 효율적임. 프레임의 개수는 현재 메모리 크기가 커짐에 따라서 늘어나고 있기 때문이다.

Fragmentation


1. External Fragmentation: 프로그램 할당 후 남은 메모리 조각이 새로운 할당 요청에 적합하지 않은 경우. 페이징 기법(고정된 4KB 크기)을 통해 극복 가능
2. Internal Fragmentation: 할당된 페이지 사이즈보다 요구받은 메모리가 작기 때문에 낭비되는 메모리 조각이 생기는 경우(4KB로 고정된 프레임 크기보다 작은 3.99KB 요청된다면 0.1KB 낭비)

  • Protection: 현재 접근 가능한 메모리 공간만 접근하도록 제어하는 방법. OS와 유저 프로그램의 메모리 영역은 서로 구분해야 함
  • Relocation: 유저 프로그램은 재배치 가능한 주소로 표현. 재배치 가능한 주소를 통해 프로그램이 어디에 로드되더라도 쉽게 코드 주소를 결정할 수 있어야 함
  • Limit register(참조 허용되는 주소의 최댓값 가지고 대소 비교, 아니라면 트랩 핸들러 호출), Relocation Register(오프셋을 더해주는 레지스터, 이후 값을 통해 피지컬 메모리 매핑)라는 HW의 지원
profile
JUST DO IT

0개의 댓글