Operating System

[OS] Memory Management (3&4)

Sara.H 2022. 1. 24. 17:28
❗️Disclaimer : 이화여대 반효경 교수님 수업 자료 입니다. 

Multilevel Paging and Performance 

  • Address space 가 더 커지면 다단계 페이지 테이블 필요 
  • 각 단계의 페이지 테이블이 메모리에 존재하므로, logical address 의 physical address 변환에 더 많은 메모리 접근 필요 
  •  TLB를 통해 메모리 접근 시간을 줄일 수 있음 (바로 메모리 접근 가능)
  • 4단계 페이지 테이블을 사용하는 경우 
    • 메모리 접근 시간이 100ns, TLB 접근 시간이 20ns 이고, 
    • TLB hit ratio 가 98% 인 경우 
    • Effective memory access time = 0.98 * 120(TLB확인 20 + 실제 접근 100) + 0.02 * 520(페이지테이블 확인400 + TLB확인20 + 실제 접근100) = 128ns 
    • 결과적으로 주소변환을 위해 28ns 만 소요 (100은 접근시간) 

 

Valid, Invalid Bit

valid, invalid bit in a page table

  • 페이지 테이블에는 주소변환 정보 뿐만 아니라 부가적인 비트가 저장되어 있음. (Valid, Invalid Bit) 
  • 6, 7번 페이지는 프로그램이 사용하지 않으나 존재한다. 
  • 32bit 주소 체계에서 페이지는 최대 1M개 존재할 수 있음. 중간에 사용되지 않는 주소영역 매우 많으나, 페이지 테이블 내에는 사용되지 않는 것에 대한 entry 또한 존재할 수 밖에 없다. (테이블 구조 상) 
  • 사용이 되지 않는 부분들은 Invalid 로 표시한다. 
  • 5번 페이지는 9번 프레임에 실재로 올라가 있다. 6번 페이지는 물리 프레임에 올라가 있지 않다. 

 

Memory Protection 

  • Page Table 의 각 entry 마다 아래의 Bit 을 둔다. 
  • Protection Bit : Page 에 대한 접근 권한 (read, write, read-only) 
    • 다른 프로세는 애초에 다른 페이지 테이블에 접근할 수 없기 때문에 그런 의미의 보호가 아니다. 
    • 여기서 말하는 권한은 "어떤 연산에 대한 접근 권한이 있는지" 
    • 코드, 데이터, 스택 영역 각각을 담고 있는 페이지들이 있는데 코드 영역은 read only 이다. 데이터, 스택 영역에는 업데이트가 가능하므로 read, write 권한이 모두 필요하다. "해당 페이지에 대하여 어떤 연산을 수행할 수 있는지" 를 나타내는 비트이다. 
  • Valid-Invalid Bit : Valid 는 해당 주소의 frame 에 그 프로세스를 구성하는 유효한 내용이 있음을 뜻한다. (접근 허용) / Invalid 는 해당 주소의 frame 에 유효한 내용이 없음을 뜻한다. (접근 불허) 
    • 프로세스가 그 주소 부분을 사용하지 않는 경우 
    • 해당 페이지가 메모리에 올라와 있지 않고  swap area 에 있는 경우 

 

Inverted Page Table 

System wide page table 하나 존재함

  • Page table 이 매우 큰 이유 
    • 모든 프로세스 별로 그 논리 주소에 대응하는 모든 페이지에대해 page table entry 가 존재한다. (Process 별로 페이지 테이블 만들어질 뿐만 아니라, 하나의 프로세스가 갖는 논리주소 영역 또한 큼) 
    • 대응하는 page 가 메모리에 있든 아니든간에 page table 에는  entry 로 존재  
  • Inverted page table 
    • page frame 하나당 페이지 테이블에 하나의 entry 를 둔 것 (system wide) 
    • 각 page table entry 는 각각의 (논리 메모리가 아닌) 물리적 메모리의 page frame 이 담고 있는 내용을 표시(Process ID, Process 의 논리 주소) 
    • 단점 : 테이블 전체를 탐색해야 함 
    • 조치 : associative register 사용 (expensive)
      • 별도의 하드웨어를 동원해 순차 탐색이 아닌 병렬 탐색을 하도록 한다(?) 

 

Shared Page 

Shared Pages Example

프로그램 3개가 돌아가고 있다면, 코드 영역은 공유될 수 있다. 중간에 수정되는 데이터 영역 등만 별도로 존재하면 됨. 이렇게 공유할 수 있는 코드에 대해 각각을 물리 메모리에 별도로 올리는 것이 아닌, 하나의 카피만 올리도록 한다. (위 사진에서 3, 4, 6 프레임 동일하게 매핑된 것 확인) 

 

  • Shared Code 
    • Re-entrant code (=Pure code) 
    • read-only 로 하여 프로세스 간에 하나의 code 만 메모리에 올림 (e.g, text editors, compilers, window systems) 
    • shared code 는 (물리 주소가 같은 것은 물론이거니와,)모든 프로세스의 논리 주소 공간에서 동일한 위치에 있어야 한다. 
      • 왜? 
  • Private code and data 
    • 각 프로세스들은 독자적으로 메모리에 올림 
    • Private data 는 논리 주소 공간의 아무 곳에 와도 무방 

 

Shared Memory 를 통한 IPC 와 여기서의 공유 코드와는 다른 개념이다. 

 


Segmentation 

  • 프로그램은 의미 단위인 여러개의 segment 로 구성 
    • 작게는 프로그램을 구성하는 함수 하나하나를 세그먼트로 정의 
    • 크게는 프로그램 전체를 하나의 세그먼트로 정의 가능 
    • 일반적으로는 code, data, stack 부분이 하나씩의 세그먼트로 정의됨 
  • segment 는 다음과 같은 logical unit 들임 
main() 
function 
global variables 
stack 
symbol table 
arrays​

 

Paging 기법은 프로그램을 구성하는 주소 공간을 페이지 단위로 쪼갠 것이고,
Segmentation 기법은 프로그램을 의미 단위로 쪼갠 것이다. 

 

Segmentation Architecture 

  • Logical Address 는 다음의 두 가지로 구성 
    • <segment number, offset> 
  • Segment Table 
    • each table entry has : 
      • base - starting physical address of the segment 
      • limit - length of the segment 
  • Segment table base register (STBR) 
    • 물리적 메모리에서의 segment table 의 위치 
  • Segment table length register (STLR) 
    • 프로그램이 사용하는 segment 의 수
    • segment number s is legal if s < STLR 

 

Segmentation hardware

세그먼트는 의미 단위로 자르는 것이기 때문에, 페이지와 다르게 길이를 갖고 있어야 한다. 

s 가 limit 보다 큰지 작은지 확인한다. 잘못된 경우 트랩 일으킴. 

base 만큼 떨어진 곳에서 시작하여, d 오프셋 만큼 움직이면 해당 세그먼트의 물리 주소를 알 수 있다. 

 

세그맨테이션 기법 장단점&amp;nbsp;

장점 : 의미 단위로 일을 할 때 효과적. 프로택션을 하는 경우에, 어떤 부분은 read, write 가능하고 어떤 부분은 read only ... 

단점 : 길이가 일정하지 않기 때문에 파편화 문제 발생 

 


Memory Management Cont'd (4)

 

Segmentation 기법 이어서 설명

 

생각할 점

운영체제가 하는 역할은 거의 없고 대부분 하드웨어의 지원을 통해서 메모리 관리가 이루어진다.