게으른 개발자

8강-4. Memory Management 4 본문

cs/운영체제

8강-4. Memory Management 4

Tomato_Coffee 2023. 11. 11. 12:14

Segmentation

  • segment table의 최대 entry개수는 프로그램이 사용하는 세그먼트 개수이다.
  • 페이징 기법은 페이지의 개수가 백만개(굉장히 많다)
    • 테이블을 위한 공간 낭비가 심하다.
    • 장점
      • allocation
    • 단점
      • protection
      • sharing
  • 세그먼트
    • 실제 시스템을 운용해보면 개수가 작다.
      • 테이블 메모리 낭비가 작다. 
    • 장점 
      • protection
      • sharing
    • 단점
      • allocation

프로그램을 구성하는 세그먼트가 5개
서로 다른 프로그램이 세그먼트를 공유하고 있는 이미지. - sharing

 

Segment와 page를 혼합해보자

  • 세그먼트 하나가 여러개의 페이지로 구성이 됨.
    • 먼저 세그먼트에 대한 주소변환을 한다.
    • STBR : 여기 레지스터에 세그먼트에 대한 시작위치가 저장되어 있다.
    • 메모리에 올라갈 때는 page 단위로 쪼개져서 올라간다.
      • 이렇게 하면 allocation 문제가 안생긴다!
      • hole이 안생긴다!
      • 세그먼트는 page 개수의 배수로 구성이 된다.
  • 의미 단위에서는 segment table 에서 해준다.
  • 현실적으로 오리지널 segmentation 메모리 시스템은 없다.
    • 따라서 내부에 페이지 기법을 써야지 관리가 편하다.
  • 세그먼트당 페이지 테이블이 존재한다(세그먼트 하나가 여러개의 페이지로 구성됨).
    • 세그먼트 테이블의 해당 entry에 가게 되면, 해당 세그먼트를 구성하는 페이지 테이블의 시작위치가 나온다.
    • 그러면 몇개의 entry가 구성되는가?
      • segment length를 보면, 해당 세그먼트가 page table에 몇개의 entry가 있는지 알 수 있다.
        • 길이를 벗어나는 요청에 대해서는 trap 발생
        • segment length >= d  
    • 다단계 page table처럼 d를 짜른다.
      • 앞부분은 p (페이지 번호) | d' (오프셋 : 페이지 안에서 얼마나 떨어져 있는지)

Memory Management 정리

  • 이번 챕터에서 주소변환에 있어서 운영체제 역할은?
    • 주소변환에 있어서 운영체제의 역할은 없다!
      • 하드웨어가 처리함.!!! (MMU ..)
    • 왜 하드웨어가 처리하나?
      • 어떤 프로세스가 cpu를 가지고 있으면서 메모리 접근을 하는것은 운영체제의 도움을 받지 않는다.
        • 왜냐하면 주소변환을 할 때, 운영체제의 도움을 받게되면 cpu가 운영체제로 넘어가야 한다.
        • 따라서 주소변환은 하드웨어로 이루어진다.
    • 운영체제가 접근하는건 i/o device에 접근할 때이다.

 

'cs > 운영체제' 카테고리의 다른 글

10강 - 2. Virtual Memory  (1) 2023.11.13
10강 - 1. Virtual Memory  (0) 2023.11.12
8강-3. Memory Management 3  (0) 2023.11.10
8강-2. Memory Management 2  (0) 2023.11.09
8강-1. Memory Management 1  (0) 2023.11.07