주기억장치 관리
전공-OS

22-12-08

복습

연속 메모리 할당

고정 분할 다중프로그래밍

  • FPM

FPM 기법의 문제점 및 해결 방안

  • 사용자 프로그램의 크기가 최대 분할 영역의 크기보다 큰 경우 => 중첩 구조
  • 커널과 다른 프로세스들에게 할당된 분할 영역들에 대한 보호 필요
  • 각 분할 영역마다 낭비되는 공간 발생

고정 분할 다중프로그래밍 기법 요약

주기억장치 공간을 미리 분할

Os 입장에서는 주기억장치 관리 용이

오버헤드 작음

시스템 자원의 낭비 초래 가능

가변 분할 다중프로그래밍

  • VPM

    초기의 메모리는 사용자공간 전체를 하나의 블록으로 설정(사용자 / 커널 이렇게만 나눔)

    사용자공간 분할형태를 동적으로 변화시킴

    내부단편화가 발생하지 않아요. 그리고 연속 공간을 할당받음…

    단점: 관리 오버헤드 증가…

가변 분할 다중프로그래밍의 주기억장치 할당 예

  • 가정:

    사용자 공간 크기: 120MB

image-20221208094557684

나머지는 PDF를 보십쇼

근데 차곡차곡 할당하다가 (e) 적재 후엔 b에 있는 프로세스가 종료가 되는 걸 확인할 수 있을겁니다.

메모리에 빈 공간이 생겼어오 이런 상태에서 16MB 프로세스를 추가로 적재할 때, 어디에 적재할 것인가?

메모리 배치 기법에 따라 다르다.

메모리 배치 기법

  • 최초 적합(first-fit)

    첫 번째에 넣는다.

  • 최적 적합(best-fit)

    가장 자투리공간이 적은, 딱 맞는 곳에 넣는다.

  • 최악 적합(worst-fit)

    가장 큰, 널널한 곳에 넣는다.

  • 순환 최초 적합(next-fit)

    최초 적합과 유사하지만, 이전에 넣었던 곳부터 검사 시작.

VPM의 외부 단편화 문제 해결

  • 통합 작업

    인접한 분할 영역을 합병하여 큰 홀을 생성한다.

  • 메모리 압축 작업

    이거는 그냥 넘어간대요

버디 시스템

단편화 현상을 해결

큰 버퍼들을 반복적으로 이등분하여 작은 버퍼들을 만들고, 인접한 버퍼들을 합치는 과정 반복

기억장소교체(스와핑)

실행이 종료되지 않은 프로세스가 할당받은 기억장소를 중간에 반납받을 수 있도록 하는 기법

기존에 적재된 프로세스를 꺼내줘야지 새로운 프로세스를 적재할 수 있다는 거지

그래서 swap out-swap in으로 기억 장소를 교체

  • 롤인, 롤아웃

  • 스압 과정

    주소 바인딩 방법에 따라 다름

  • 스와핑 시간

    효과적인 프로세스 사용을 위해선 각 프로세스에 대한 수행시간이 교체시간보다 길어야 함.

virtual memory의 근간이 되는 방법이라고 볼 수 있다.