[운영체제및실습] 11주차 3회차: 메모리관리 개요

2025. 5. 25. 23:17·운영체제및실습

Memory Management

What is Memory Management? (오늘)

Memory Partitioning

Address Binding

Paging

Segmentation

 

이 시간부터는 운영체제가 컴퓨터 메인 메모리를 관리하는 방법을 알아보겠습니다.

메모리 관리 방법 이해를 위해 기본 지식 학습 후 바인딩을 알아볼 것이며, 여러가지 할당방법(고정, 가변 등)에 대해 알아볼 것입니다. 5가지 메모리 관리 방법을 알아보고 동작 방식을 알아봅시다. 이 중에서 Memory Partitioning에서 알아볼 고정 분할식과 가변 동적식은 요즘 잘 사용 안 하지만, 이것을 이해해야 요즘 것을 이해할 수 있습니다.


1. Memory Management Requirements

1-1. 메모리 관리 기능 2가지

1. Memory allocation(메모리 할당) : 프로그램을 실행하려면 프로세스를 메인 메모리에 넣고 실행해야 합니다. 그래서 프로그램 실행을 하려면 프로세스에게 메모리 공간을 분배하고 그 분배한 공간에 프로세스를 집어넣어야 합니다. 앞서 본 내용 중에 이런 그림을 본 적이 있습니다. 메인 메모리의 회색 부분이 운영체제이고, 사용자 프로세스 A를 위해서 공간을 배분해준다음 프로세스 이미지를 집어넣은 것입니다. CPU가 ProcessA의 instruction을 실행할 수 있습니다. B,C도 마찬가지로 빈 공간을 할당해 프로세스들을 각각 집어넣어야 합니다.

2. Memory protection(메모리 보호)

 

1-2. Memory allocation(메모리 할당)

메모리 영역을 분할해 다수의 프로세스에게 들어올 수 있게 해줍니다.

 

1-3. Memory protection(메모리 보호)

메모리 할당 후, 세 개의 프로세스가 메모리에 들어왔다고 하면, 각 영역을 보호해줘야 합니다. 만약 보호를 하지 않고, B가 마음대로 C영역에 들어가서 변수를 바꾸거나 메모리 내용을 지워버리면 C가 정상동작을 안 하기 때문에 그런 동작을 하지 않도록 B는 B에 할당된 공간(허용된)만 접근할 수 있습니다. 허용된 공간과 금지된 공간을 계속 감시하는 역할을 합니다. 금지된 공간을 접근하면 메모리 공간 위반이어서 후속조치를 해서 OS가 프로세스 실행을 중단시킵니다. 


2. Memory Management Requirements

2-1. Relocation

Relocation은 location을 다시 잡아준다는 의미입니다. 

  • 한 프로세스는 실행하는 동안 다른 메모리 영역이 주어지게 됩니다.
  • 프로그램 실행하는 동안, 디스크에 swap되며 메인 메모리에 다른 영역에 return됩니다.(relocated)
  • 메모리 참조는 물리적 메모리 공간의 코드속에서 번역되어야 합니다.

swap은 프로세스 상태를 배울 때, 메모리 공간 부족할 때, 메인 메모리에 있던 프로세스를 잠시 보조기억장치로 옮겨서(swap out) suspended sleep상태로 바뀌었습니다. 다시 공간이 있으면 보조기억 장치에서 메인 메모리로 swap in 했었습니다.

swap in할 때, 원래 있던 자리로 오기만 하면 비효율적입니다. 예를 들어 프로세스 A가 보조기억장치로 갔는데, 급한 프로그램 실행을 위해 급하지 않았던 A를 밀어낸 것이었습니다. 이때, 우선순위가 높은 E가 원래 A자리에서 실행된다고 할때, B가 다 끝나면, 다시 A가 메모리의 같은 위치에 들어올려고 하면 비효율적입니다. 비어있는 공간으로 A가 들어가서 실행되면 되는 것입니다. 그렇게 할 때 결과적으로 relocation된 것입니다. 이러면 효율적입니다.

 

 

또한 relocation이 꼭 필요한 것이 컴팩션입니다. 컴팩션은 메모리 공간을 조각 모음하는 것입니다. 다음 그림과 같이 안 쓰는 공간(노란색)이 흩어져 있는 경우 조각 모음을 하고 싶습니다. 프로세스 B와 C를 위로 올리면 빈 공간이 밑으로 내려가 합쳐져서 제법 큰 빈 공간이 만들어져 프로세스가 들어올 수 있습니다. 

2-2. Sharing

메모리 공유한다는 개념은 두 개 이상의 프로세스들이 같은 영역의 메모리를 접근하도록 권한을 허용하는 것입니다. 일반적으로 어떤 프로세스는 다른 프로세스에게 할당된 메모리 영역에는 접근할 수 있습니다. 즉, Process 1이 process 2 영역에 접근할 수 없습니다. OS가 감시하기 때문. shared memory라는 공간을 요청하면, 만들어서 process 1과 process2가 같이 쓸 수 있습니다. 보통은 프로세스 1번이 부모프로세스이며, 공유 메모리를 만든 후, 자식 프로세스를 만드면, 부모와 자식이 같이 쓰도록 허용이 되는 것입니다. 아무 프로세스나 같이 쓰는 것이 아닙니다. 

'운영체제및실습' 카테고리의 다른 글

[운영체제및실습] 11주차 5회차: Virtual Address Space  (0) 2025.05.26
[운영체제및실습] 11주차 4회차: 메모리 파티셔닝  (0) 2025.05.26
[운영체제및실습] 11주차 2회차: RAID  (0) 2025.05.25
[운영체제및실습] 11주차 1회차: 디바이스 드라이버  (0) 2025.05.25
[운영체제및실습] 10주차 4회차: 디스크 스케줄링  (0) 2025.05.25
'운영체제및실습' 카테고리의 다른 글
  • [운영체제및실습] 11주차 5회차: Virtual Address Space
  • [운영체제및실습] 11주차 4회차: 메모리 파티셔닝
  • [운영체제및실습] 11주차 2회차: RAID
  • [운영체제및실습] 11주차 1회차: 디바이스 드라이버
soyun5
soyun5
개발블로그
  • soyun5
    soyun5
    soyun5
  • 전체
    오늘
    어제
    • 분류 전체보기 (67) N
      • 운영체제및실습 (14)
      • 프로그래밍언어개론 (1)
      • 데이터베이스 (0)
      • 클라우드 (0)
        • 2025 AWS Cloud 초급특강 (0)
      • 스터디 (23)
        • 2024하계모각코 (10)
        • 2024동계모각코 (13)
      • 웹개발 (0)
        • HTML, CSS, 자바스크립트 (0)
      • PS (0)
        • 백준 (0)
        • 프로그래머스 (0)
      • 앱개발 (0)
        • flutter (0)
      • C (0)
      • java (0)
        • 자료구조 (0)
        • 알고리즘 (0)
      • 깃허브 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    운영체제
    Directory
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
soyun5
[운영체제및실습] 11주차 3회차: 메모리관리 개요
상단으로

티스토리툴바