메모리 관리 (2)

2022. 3. 11. 19:40·OS/쉽게 배우는 운영체제

전 단원에서는 메모리의 기초적인 개념,용어를 배웠다면 이번 단원에는 '메모리를 어떻게 하면 효율적으로 관리 할 수 있을까'에 대해 다룬다. 

 

이건 우리의 일상생활에서도 흔히 마주칠 수 있는 문제인데 식당에 갔을 때 손님의 수에 맞게 테이블을 제공하는 식당이 있을 수 있고, 4명이 앉을 수 있는 테이블로만 구성하는 방법도 있을 것이다. 

 

이러한 방법은 여러 장단점이 있는데 이번 내용에서 소개하겠다. 


4. 다중 프로그래밍 환경에서의 메모리 할당

 

4-1 메모리 분할 방식

 

  • 가변 분할 방식 : 프로세스의 크기에 따라 메모리를 나누는 방식. 한 프로세스가 연속적인 메모리에 배치되기 때문에 연속 메모리 할당이라고도 한다.

장점 : 프로세스 측면에서 봤을 때 매우 편리함

단점 : 관리가 불편함/ 프로세스가 작업을 마친 후 다른 프로세스가 사용할 수 없는 여러 데이터 조각들이 생길 수 있음

  • 고정 분할 방식 : 프로세스의 크기에 상관없이 메모리를 같은 크기로 나누는 방식. 한 프로세스가 분산되어 배치되기 때문에 비 연속 메모리 할당이라고도 한다.

장점 : 관리가 용이함

단점 : 프로세스 측면에서 불편함/ 관리자가 지정한 크기보다 작은 프로세스가 들어올 경우 메모리의 낭비

 

※ 예를 들어 평소에는 20KB만큼 크기를 할당하여 고정분할로 사용하고 20KB보다 작은 프로세스들은 한 곳에 뭉쳐 가변분할로 사용하면 안될까? 

 

4-2 가변 분할 방식의 메모리 관리

 

1) 외부 단편화 : 가변 분할 방식에서 일어남. 메모리를 사용하고 나간 프로세스의 자리를 새로운 프로세스가 사용할 수 없을 때 단편화가 일어남

2) 메모리 배치 방식 

  • 최초 배치 : 단편화를 고려하지 않은 방식 

장점 : 빈 공간을 찾아다닐 필요가 없다. 

단점 : 외부 단편화가 일어나기 쉬움

  • 최적 배치 : 메모리의 빈 공간을 확인한 후 가장 작은 공간에 프로세스를 배치

장점 : 프로세스의 크기와 딱 맞는 공간을 찾을 경우 단편화가 일어나지 않음

단점 : 딱 맞는 공간이 업슨 경우 아주 작은 조각을 만들어냄

  • 최악 배치 : 메모리의 빈 공간을 확인한 후 가장 큰 공간에 프로세스를 배치

장점 : 프로세스를 배치하고 남은 공간이 크기 때문에 쓸모가 있음

단점 : 빈 공간의 크기가 점점 줄어들면 아주 작은 조각을 만들어냄

 

3) 조각 모음 : 빈 공간들을 모아 하나의 큰 덩어리로 만드는 과정

 

조각모음의 순서

  1. 이동할 프로세스의 동작을 멈춘다
  2. 프로세스의 위치를 옮기기 위해 프로세스의 상대주소값을 바꾼다
  3. 프로세스를 다시 시작한다

4-3 고정 분할 방식의 메모리 관리

 

1) 내부 단편화 : 고정 분할 방식에서 일어남. 고정된 메모리값보다 작은 프로세스가 들어왔을 때 내부 단편화가 일어남

 

2) 메모리 배치 방식

조각 모음을 할 필요가 없고 곤리가 수월하므로 현대의 메모리 관리 시스템에서 자주 사용

 

4. 버디 시스템

 

4-1 버디 시스템의 작동 방식 

 

  1. 프로세스의 크기에 맞게 메모리를 1/2로 자르고 프로세스를 메모리에 배치
  2. 나뉜 메모리의 각 구역에는 프로세스가 1개만 들어감
  3. 프로세스가 종료되면 빈 조각과 합쳐서 하나의 큰 덩어리를 만든다
반응형
저작자표시 (새창열림)

'OS > 쉽게 배우는 운영체제' 카테고리의 다른 글

가상 메모리의 기초(2)  (0) 2022.03.21
가상 메모리의 기초 (1)  (0) 2022.03.17
메모리 관리 (1)  (0) 2022.03.10
교착 상태  (2) 2022.03.08
프로세스 동기화 (2)  (0) 2022.03.06
'OS/쉽게 배우는 운영체제' 카테고리의 다른 글
  • 가상 메모리의 기초(2)
  • 가상 메모리의 기초 (1)
  • 메모리 관리 (1)
  • 교착 상태
re-hwi
re-hwi
재휘의 개발일기
    반응형
  • re-hwi
    Dvelopment blog
    re-hwi
  • 전체
    오늘
    어제
    • 재휘의 개발일기 (167)
      • 개발 (25)
        • 소프트웨어 공학 (25)
      • Python (18)
        • numpy (8)
      • OS (23)
        • 쉽게 배우는 운영체제 (23)
      • Front end (1)
        • HTML (6)
        • CSS (9)
        • JavaScript (18)
        • React (2)
        • Vue.js (5)
        • TypeScript (5)
        • Sass (3)
      • Algorithm (1)
        • 파이썬 알고리즘 인터뷰 (2)
        • 자료구조와 함께 배우는 알고리즘 (20)
      • Android (2)
        • 안드로이드 앱 프로그래밍 with 코틀린 (2)
      • Project (15)
      • Network (0)
      • etc (12)
        • 이것저것 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리액트
    오블완
    티스토리챌린지
    자료흐름도
    vue
    자료구조
    REACT
    표
    정보처리기사
    파이썬
    타입스크립트
    JavaScript
    연결리스트
    플레이리스트
    CSS
    HTML
    알고리즘
    TS
    개발
    pwa
    프론트엔드
    scss
    FE
    정처기
    js
    sass
    typeScript
    뷰
    numpy
    컴포넌트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
re-hwi
메모리 관리 (2)
상단으로

티스토리툴바