전공/운영체제

메모리-4

러비코스믹 2025. 5. 11. 08:48

Hased Page Table

q : virtual page number

s : the mapped page frame

c : a pointer to the next element // linked list

 

//64 bit : cluesteded page table : page 안에 page들

 

Inverted page Table

 

// 64bit에서 사용

Process가 여러개시 각각의 PageTable 사용 낭비

ㄴ Page Table) frame에 대한 logical 주소 및 PID 저장

 

(pid, p, d) → (i, d)

ㄴ 각 frame 마다 p와 pid 로 물리주소 i 를 search

ㄴ 전체 물리memory를 search 해야함..

> Hash Table(with TLB) : TLB에 없다면 (pid,p) 로 search

   ㄴ d가 없어서 page 단위 변환

// d : 페이지내 위치 ::offset

> 공유메모리만 따로 logical -> physical mapping 

 

Swapping

 

 

Backing store : Disk

main memory : Memory

 

Threshold High(메모리할당 많음) -> swap (roll out) -> 여유 -> roll in

  ㄴ swap time (transter time) 은 매우길다! 

     ㄴ Memory <-> Disk 매우 느림

        ㄴ ready queue에서 대기 > "disexecution"

// Binding(copiler/load time : 메모리 주소 고정 <> execution : 실행시 변경)

> 1G Memory -> 4G 처럼

 

C/S time with Swapping

ex) 원하는 P가 disk 에 있어서 memory에 있는 안쓰는 P 를 swap out

  ㄴ 100MB , 50MB/sec

> 100/50 = swap out time(C/S): 2000ms

  ㄴ Total C/S time : 2000ns * 2 = 4s

 

Pending I/O : I/O 중에는 swap X

  ex) Read 중 process swap -> I/O 장치가 메모리에 없는데 건들려함 > 오류

> double Buffering 

   ㄴ App -> kernel(복사) -> I/O device 

>> kernel (OS) 공간은 직접접근 X

       ㄴ system call 로 복사

>>> swap 되더라도 오류 방지

단) overhead Big (두번복사과정)

 

Intel 32bit : segmentation with paging

 

 

segment : 메모리를 프로그램의 기능에 따라 나눈 부분

ㄴ 효율 , 유연성, 보호 // 부분들끼리 독립

  ㄴ code segment ,data, stack, heap..

 

각 Process 마다 16K segment 

ㄴ LDT : 8K, local descripter table : 

ㄴ GDT : 8K, global  "             " 

> Code Selector) 전체2^14 

        ㄴ 2^13 : LDT(s)

        ㄴ 2^1   : GDT(g)

>

logical -> linear

 

 

>>>>>

  1. logical → linear
  2. [CS: offset]
    (ex: CS = 0x3FFF, offset = 0x0010)
  3. CS → GDT: 1FFF, LDT: 0x0001 ,offset: 0x0001 추출
  4. descriptor table -> 해당 segment 의 base, limit, 권한 확인
    → linear = base + offset
  5. linear -> physical

 

p1 : outer :: page directory

p2 : inner :: page table

ㄴ  3level

 

page size :2개 :: 4KB , 4MB

 

PAE : page address extension

 

intel64 : 64bit는 너무많아서 48bit 로 축소

  ㄴ page size : 4kb, 2MB, 1GB 

      ㄴ 4level

 

ARM : 

ㄴ page    : 4kb/16kb    (2level)

ㄴ section : 1mb/16mb (1level)

 

TLBs(2level) 

  ㄴ outer : data/명령어 접근용

  ㄴ inner : main

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

Virtual memory-2  (0) 2025.05.23
가상메모리  (0) 2025.05.15
메모리-3  (0) 2025.05.10
메모리-2  (0) 2025.05.09
메모리  (0) 2025.05.04