책/혼자 공부하는 컴퓨터구조+운영체제

혼자 공부하는 컴퓨터 구조+운영체제 14장 정리

개발하는 민우 2024. 8. 4. 21:17


연속 메모리 할당

  • 프로세스에 연속적인 메모리 공간을 할당하는 방식

스와핑

  • 메모리에서 사용되지 않은 일부 프로세스를 보조기억장치로 내보내고 실행할 프로세스를 메모리로 들여보내는 메모리 관리 기법

메모리 할당

최초 적합

  • 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스르 배치하는 방식
  • 운영체제가 빈 공간 A → 빈 공간 B → 빈 공간 C 순으로 검색했다면 빈 공간 A에 적재된다.

최적 적합

  • 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 배치하는 방식

최악 적합

  • 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 배치하는 방식

외부 단편화

  • 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상

외부 단편화를 해결할 수 있는 대표적인 방안

  • 메모리를 압축하는 방법
    • 많은 오버헤드를 야기하며, 어떤 프로세스를 어떻게 움직여야 오버헤드를 최소화하며 압축할 수 있는지 불명확함.
  • 여기저기 흩어져 있는 빈 공간들을 하나로 모으는 방식으로 메모리 내에 저장된 프로세스를 적당히 재배치시켜 작은 빈 공간들을 하나의 큰 빈 공간으로 만드는 방법

페이징을 통한 가상 메모리 관리

가상 메모리

  • 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술

페이징과 세그멘테이션

페이징

  • 메모리와 프로세스를 일정한 단위로 자르고, 이를 메모리에 불연속적으로도 할당할 수만 있다면 외부 단편화는 발생 X
  • 프로세스의 논리 주소 공간을 페이지라는 일정한 단위로 자르고, 메모리 물리 주소 공간을 프레임이라는 페이지와 동일한 크기의 일정한 단위로 자른 뒤, 페이지를 프레임에 할당하는 가상 메모리 관리 기법

페이징 시스템에서의 스왑 아웃은 페이지 아웃, 스왑 인은 페이지 인이라고 부른다.

페이지 테이블

  • 프로세스가 메모리에 불연속적으로 배치되어 있다면 CPU 입장에서 이를 순차적으로 실행할 수 없다.
  • 프로세스가 비록 물리 주소에 불연속적으로 배치되더라도, 논리 주소에는 연속적으로 배치되도록 페이지 테이블을 이용한다.
  • 페이지 테이블의 페이지 번호를 이용해 페이지가 적재된 프레임을 찾을 수 있다.

내부 단편화

  • 페이징은 프로세스의 논리 주소 공간을 페이지라는 일정한 크기 단위로 자른다.
  • 페이지 크기가 10KB인데, 프로세스의 크기가 108KB인 경우, 마지막 페이지는 2KB만큼의 크기가 남는다. 이러한 메모리 낭비를 내부 단편화라고 한다.

프로세스마다 각자의 프로세스 테이블을 가지고 있고, 각 프로세스의 페이지 테이블들은 메모리에 적재되어 있다.

CPU 내의 페이지 테이블 베이스 레지스터는 각 프로세스의 페이지 테이블이 적재된 주소를 가리킨다.

CPU 곁에 TLB라는 페이지 테이블의 캐시 메모리를 둔다.

TLB는 페이지 테이블의 캐시이기 때문에 페이지 테이블의 일부 내용을 저장하고, 참조 지역성에 근거해 최근에 사용된 페이지 위주로 가져와 저장한다.

  • CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 있을 경우 TLB 히트라고 한다.
  • 페이지 번호가 TLB에 없을 경우 페이지가 적재된 프레임을 알기 위해 메모리 내의 페이지 테이블에 접근하는 경우를 TLB 미스라고 한다.

페이징에서의 주소 변환

  • 하나의 페이지 혹은 프레임은 여러 주소를 포괄하고 있다.
  • 특정 주소에 접근하려면 두 정보가 필요하다.
    • 어떤 페이지 혹은 프레임에 접근하고 싶은지
    • 접근하려는 주소가 그 페이지 혹은 프레임으로부터 얼마나 떨어져 있는지
  • 페이징 시스템에서는 모든 논리 주소가 기본적으로 페이지 번호와 변위로 이루어져 있다.

페이지 테이블 엔트리

  • 페이지 테이블의 각 엔트리를 페이지 테이블 엔트리라고 한다.
  • 유효 비트, 보호 비트, 참조 비트, 수정 비트가 있다.

유효 비트

  • 유효 비트는 현재 해당 페이지에 접근 가능한지 여부를 알려준다.
  • 페이지가 메모리에 적재되어 있다면 유효 비트가 1, 페이지가 메모리에 적재되어 있지 않다면 유효 비트가 0이 된다.
  • CPU가 유효 비트가 0인 메모리에 적재되어 있지 않은 페이지로 접근하려고 하면 페이지 폴트라는 예외 발생

보호 비트

  • 페이지 보호 기능을 위해 존재하는 비트
  • rwx의 조합으로 나타낼 수도 있다.
  • 보호 비트가 100으로 설정된 경우, 읽기만 가능
  • 110인 경우 읽고 쓰기만 가능하고, 실행은 불가능

참조 비트

  • CPU가 이 페이지에 접근한 적이 있는지 여부를 나타낸다.
  • CPU가 읽거나 쓴 페이지는 참조 비트가 1로 세팅되고, 적재 이후 한 번도 읽거나 쓴 적이 없는 페이지는 0으로 유지

수정 비트

  • 해당 페이지에 데이터를 쓴 적이 있는지 없는지 수정 여부를 알려준다. 더티 비트라고도 부른다.

요구 페이징

  • 프로세스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는기법을 요구 페이징이라고 한다.

순수 요구 페이징 기법

  • 아무런 페이지도 메모리에 적재하지 않은 채 무작정 실행부터 할 수도 있다. 프로세스의 첫 명령어를 실행하는 순간부터 페이지 폴트가 계속 발생하게 되고, 실행에 필요한 페이지가 적재된 이후부터 페이지 폴트 발생 빈도가 떨어진다.

페이지 교체 알고리즘

  • 메모리에 적재된 페이지를 보조기억장치로 내보내는지 결정하는 방법
  • 페이지 폴트 횟수는 페이지 참조열을 통해 알 수 있다.
2 2 2 3 5 5 5 3 3 7 -> 2 3 5 3 7

FIFO 페이지 교체 알고리즘

  • 이름 그대로 메모리에 가장 먼저 올라온 페이지를 내쫒은 방식
  • 오래 머물렀으면 나가라

2차 기회 페이지 교체 알고리즘

  • 메모리에서 가장 오래 머물렀던 페이지를 대상으로 내보낼 페이지를 선별한다.
  • 페이지의 참조 비트가 1일 경우, 참조 비트를 0으로 만든뒤 현재 시간을 적재 시간으로 설정한다.

최적 페이지 교체 알고리즘

  • 사용 빈도가 가장 낮은 페이지를 교체하는 알고리즘을 페이지 교체 알고리즘으로 삼는 것

LRU 페이지 교체 알고리즘

  • 가장 오랫동안 사용하지 않은 페이지를 교체하는 알고리즘

스레싱과 프레임 할당

  • 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저하되는 문제를 스레싱이라고 한다.
  • 메모리에서 동시 실행되는 프로세스의 수를 멀티프로그래밍 정도라고 한다.

균등 할당

  • 세 개의 프로세스에 총 300개의 프레임을 할당할 수 있다면 각 프로세스에 100개의 프로세스를 할당하는 방식

비례 할당

  • 프로세스의 크기가 크면 프레임을 많이 할당하고 프로세스 크기가 작으면 프레임을 적게 나눠주는 방식을 비례할당이라고 한다.

작업 집합 모델과 페이지 폴트 빈도

  • 실행중인 프로세스가 일정 시간 동안 참조한 페이지의 집합을 작업 집합이라고 한다.
  • 페이지 폴트율이 너무 높으면 그 프로세스는 너무 적은 프레임을 갖고 있다.
  • 페이지 폴트율이 너무 낮으면 그 프로세스가 너무 많은 프레임을 갖고 있다.