[혼공컴운] WIL_#6

Oigu·2024년 2월 4일
0
post-thumbnail

연속 메모리 할당


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

스와핑

메모리에 적재된 프로세스들 중 현재 실행되지 않는 프로세스들을 보조기억장치 일부 영역으로 쫓아냄
쫓아낸 프로세스가 있던 자리에 다른 프로세스를 적재해 실행

스왑 영역: 프로세스들이 쫓겨나는 보조기억장치의 일부 영역
스왑 아웃: 쫓겨난 것
스왑 인: 스왑 영역에서 다시 메모리로 ~

이 때, 스왑 인 된 프로세스는 기존(스왑 아웃 전)의 물리 주소와 다른 주소에 적재될 수 있음

⭐ 스와핑을 이용하면 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 커도 프로세스 동시 실행 가능



메모리 할당

최초 적합

운영체제가 메모리 내 빈 공간을 순서대로 검색하다가 공간 발견하면 냅다 프로세스 배치 ➡️ 검색 최소화, 빠른 할당 가능

최적 적합

빈 공간 모두 검색 후에 가능한 가장 작은 공간에 프로세스 배치

최악 적합

빈 공간 모두 검색 후에 가능한 가장 큰 공간에 프로세스 배치

✔️ 연속 메모리 할당 방식을 사용하면 외부 단편화라는 문제가 생김

프로세스의 실행이 끝나면 그 프로세스가 적재되어 있던 메모리 공간이 비고 그 공간보다 큰 프로세스를 적재하기 어려워짐
---> 빈 공간이 많아질 수록 낭비가 됨




가상 메모리 관리 (feat.페이징)


가상 메모리 관리 기법인 페이징 & 세그멘테이션 중 현대 운영체제 대부분이 페이징 기법 사용

  • 가상 메모리: 실행하려는 프로그램의 일부만 메모리에 적재해 실제 크기보다 더 큰 프로세스 실행을 가능하게 함

페이징 기법

  • 메모리의 물리 주소 공간을 프레임 단위로 자름
  • 프로세스의 논리 주소 공간을 페이지 단위로 자름
  • 각 페이지를 프레임에 할당

➡️ 잘린 메모리 조각들에 프로세스 조각들을 불연속적으로 적재함으로써 외부 단편화 문제 해결

🤔 잘려진 조각을 맞춰 끼우면 실행 순서가 뒤죽박죽 되는 거 아닌가?

아님! 페이징 기법에선 페이지 번호와 프레임 번호를 짝지어 주는 페이지 테이블을 이용해서 어떤 페이지가 어떤 프레임에 할당되었는지 알 수 있다 !




페이지 교체 알고리즘



FIFO 페이지 교체 알고리즘

  • First-In First-Out Page Replacement Algorithm
  • 오래 머물렀으면 이제 좀 나가라



최적 페이지 교체 알고리즘

  • Optimal Page Replacement algorithm
  • 자주 안 쓰니까 갖다 버리자


LRU 페이지 교체 알고리즘

  • Least Recently Used Page Replacement Algorithm
  • 최근에 사용하지 않은 페이지는 앞으로도 사용될 일 없겠지..



*페이지 폴트: 해당 페이지가 메모리에 적재되어있지 않은 경우




🚶🏻 기본 미션


p.400

  1. 메모리 할당 방식에 대한 설명으로 올바른 것

    최초 적합, 최적 적합, 최악 적합

  • (최초 적합): 최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치하는 방식
  • (최악 적합): 프로세스가 적재될 수 있는 가장 큰 공간에 프로세스를 배치하는 방식
  • (최적 적합): 프로세스가 적재될 수 있는 가장 작은 공간에 프로세스를 배치하는 방식



🏃🏻 선택 미션


14-3) LRU 페이지 교체

프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2313523423' 일 때 LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는지 풀어보기

프레임 3개 0 0 0
2 3 1 3 5 ✔️ 2 ✔️ 3 4 ✔️ 2 3

2
23
231
231
531 ✔️
532 ✔️
532
432 ✔️
432
432

세 번의 페이지 폴트가 발생한다 !

0개의 댓글