[운영체제] #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개의 댓글

관련 채용 정보