1 / 145

Modern Operating System Kernels

Modern Operating System Kernels. 第五 組 報告. 1. 目錄. 4.1 記憶體管理概述 4.1.1 分頁式記憶體管理 4.1.2 Segmentation 4.1.3 記憶體管理演算法介紹 4.1.4 Windows 記憶體管理概述 4.2 Windows 系統記憶體管理 4.2.1 系統位址空間初始化 4.2.2 系統位址空間記憶體管理 系統非分頁集區的管理演算法 系統分頁集區的管理演算法. 2. 4.1 記憶體管理概述. 資工 4 A 郭 濬愷. 3. 實體位址 (physical address).

lucia
Download Presentation

Modern Operating System Kernels

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Modern Operating System Kernels 第五組報告 1

  2. 目錄 • 4.1 記憶體管理概述 • 4.1.1 分頁式記憶體管理 • 4.1.2 Segmentation • 4.1.3 記憶體管理演算法介紹 • 4.1.4 Windows記憶體管理概述 • 4.2 Windows系統記憶體管理 • 4.2.1 系統位址空間初始化 • 4.2.2 系統位址空間記憶體管理 • 系統非分頁集區的管理演算法 • 系統分頁集區的管理演算法 2

  3. 4.1記憶體管理概述 資工4A 郭濬愷 3

  4. 實體位址(physical address) 系統的記憶體的真正位址 一個32位元或36位元的不帶正負號的整數 4

  5. 虛擬位址(virtual address) 虛擬記憶體讓各程序共享系統記憶體空間, 這樣系統就似乎有了更多的記憶體。 • 優點 • 擴大位址空間 • 記憶體保護 • 記憶體映射 • 公平分配記憶體 • 虛擬記憶體共享 5

  6. 6

  7. 邏輯位址(logical address) 包含兩個個部分:區段(segment)和偏移(offset) 邏輯位址的實際位址是區段基址加上偏移量 7

  8. 8

  9. 分頁式記憶體管理 資工四A 黃柏皓 965002019 9

  10. Intel x86 Address Translation Segmentation Paging Logic Address Virtual Address Physical Address 10

  11. Introduction • 虛擬位置 實體位置 • page page frame • 連續 不一定 11

  12. Virtual Address Form • 32bits • Intel x86 Index Offset 分頁表目錄Index 分頁表Index Offset 11 21 22 31 12 0 12

  13. Address Translation(Intel x86) 10 10 12 二級分頁表結構 優點: 節省page table 缺點: 效能降低 CR3 分頁表目錄Index(PDE) 分頁表Index(PTE) Offset x1024 ………… …… x1024 x1024 13

  14. TLB(Translation look-aside buffer) • 快取位址轉譯資訊 • 成功 : 直接取出儲存的位址資訊(TLB) • 失敗 : 兩次存取記憶體(TLB,Page table) • 記憶體存取有區域性 • 硬體處理 • 切換CR3暫存器 • invlpg指令 (Intel x86 Pentium Pro) 14

  15. 15

  16. Address Translation • Virtual→physical • Page fault問題 • 多對一 • 4G VM / 1G PM • 共用問題 • 寫入 CPU Data VA TLB Memory TLB miss Program Space Page Table Page fault Disk 16

  17. Address Translation • Page fault • Random • LRU • 寫入記憶體 • Write-through • Write-back 17

  18. PAE(Physical Address Extension) • 三級分頁表 • 分頁表目錄、分頁表 每一個Entry大小 :64 bits • 每個page(分頁目錄、分頁表)只能存放512項 • 實體位置描述 :20bits→24bits(包含12個flag bits) • 可支援:2^(24+12) bits = 2^36 bits = 64 GB (windows : 使用26bits表示→256GB) 18

  19. PAE-Address Translate 64bits 24bits PA Offset 分頁表目錄指標Index 分頁表目錄Index(PDE) 分頁表Index(PTE) x512 x512 20 11 x512 30 29 21 12 0 31 … … 4*512 4*512*512 … 4 19

  20. PAE Example(pae.asm) push ebx push esi movebx, [esp] + 16 ; ebx = NewPteContentslowpart movecx, [esp] + 20 ; ecx = NewPteContentshighpart movesi, [esp] + 12 ; esi = PtePointer movedx, [esi] + 4 moveax, [esi] ; edx:eax = OldPteContents lock cmpxchg8b qword ptr [esi] ; compare and exchange jnz short swapagain ; if z clear, exchange failed pop esi pop ebx edx eax esi ebx esi esi+4 edx ecx eax ebx ecx ebx 20

  21. PAE Summary • 沒有增加virtual memory大小 • 增加可支援的physical memory • Windows(64bits in Intel x64): • 48bits Virtual Mem → 40bits Physical Mem(1TB) 21

  22. Segmentation 資工四A 許木炘 22

  23. Logic address 邏輯位址 Segment(節區) • a16-bitsegment selector(segment identifier) Offset(偏移量) • a32-bitoffsetwithin the segment identified by the segment selector 23

  24. Segment selector 24

  25. segmentation register • 為了讓segment selector能被快速取出 ->segmentation register cs: 指向 code segment # (cpl 0 or 3) ss: 指向stack segment ds: 指向 data segment. es,fs, and gs: 一般用途,可以參用到任何data segment 25

  26. Segment Descriptors • 每個segment可用一個8byte的descriptor表示,每個segment descriptor會儲存在 ->GDT(global descriptor table) 或 ->LDT(local descriptor table) 26

  27. Segment Descriptors • Base field (32): the linear address of the first byte of the segment. • Ggranularity flag (1): 0 (byte); 1 (4K bytes). • Limitfield (20). • Ssystem flag (1): 0 (system segment); 1 (normal segment). • Type field (4): segment type and its access rights. • DPL(Descriptor privilege level) (2): • Segment-present flag • D/Bflag • Reserved bit • AVLflag 27

  28. 常用的segment descriptor • Code Segment Descriptor. • Data Segment Descriptor. • P.S.: Stack Segments are implemented by means of Data Segment Descriptors. • Task State Segment Descriptor (TSSD) • A TSSD describes a Task State Segment (TSS) which is used to store the contents of a process registers. • Local Descriptor Table Descriptor (LDTD) 28

  29. 29

  30. Segment Registers • Each segment register contains a segment selector. • 13-bit index • 1-bit TI (Table Indicator) flag. • 2-bit RPL (Requestor Privilege Level) • The cs register’s RPL also denotes the current privilege level of the CPU. • 0 represents the highest privilege. 0 represents the kernel mode and 3 represents the user mode. • Associated with each segment register is an additional nonprogrammable register which contain the segment descriptor specified by the segment selector 30

  31. 快速存取segment descriptor 31

  32. Locate the Segment Descriptor Indicated by Segment Selector • address=(gdtr/ldtr)+ index*8. • GDT的第一個欄位永遠試設為 0. • 能儲存在GDT的節區描述器最大的數目為81912^13-1 32

  33. Segmentation unit 33

  34. 記憶體管理演算法介紹 34

  35. 就本質而言,記憶體管理演算法可以分為兩大類就本質而言,記憶體管理演算法可以分為兩大類 • 點陣圖標記法(Bitmap) • 空間串列法(AV List) 35

  36. 點陣圖標記法(Bitmap) • 假設要分配的記憶體大小為 N bytes,而一個blocks為M bytes,並且符合下列等式N=K*M也就是說現在共用K個blocks要做動態管理! • 點陣圖標記法:使用K個Bits的Bitmap來記錄這個K個blocks的使用情形 • 0:free • 1:Allocated 36

  37. 點陣圖標記法(Bitmap) • 分配:根據請求的大小確定需要多少個連續memory blocks,然後掃Bitmap是否存在這樣的連續空間,若有將Bitmap中對應的連續bits設為1 • 釋放:指定要釋放的記憶體起始位址和大小,將bitmap對應的連續bits設為0 37

  38. 點陣圖標記法(Bitmap) • 此法實作較簡單,但須額外的記憶體負擔,通常為 其中 • 若請求的記憶體大小不為M的倍數則會有空間浪費,平均而言會有 M/2 bytes浪費! • 每次分配需要掃瞄bitmap,因為時間複雜度為O(K) 38

  39. 空間串列法(AV List) • 首先建立一個空閒串列(Available list) • 在初始時,整個區塊被當作一個大的空閒區塊加入到空閒串列(Available list),每當記憶體管理員收到分配請求便從AV list中尋找適合空閒區塊 39

  40. 空間串列法(AV List) • 尋找適合的空閒區塊的方法共有以下幾種 • first-fit:將list中第一個找到的空閒區塊分配出去 • best-fit:從list中找到最接近要求的記憶體大小之區塊,並將其分配 • worst-fit:從list中找最大空閒區塊將其分配 • next-fit:從list目前的位置往後掃瞄,找到第一個符合請求的空閒區塊 40

  41. AV List Example 41

  42. First Fit P3 25K P1 P4 200K P2 200K • 缺: • 在串列的前端會產生許多極小的可用空間 (被配置機率很低) • 可用Next-Fit來解決 42

  43. Best Fit P3 25K P2 100K P1 50K P4 250K 缺: 需搜尋完全部串列,才可找到最佳的配置區塊 產生更大量的fragmentation 43

  44. Worst Fit 100K P2 100K 200K P1 P3 P4 25K 44

  45. 伙伴系統(Buddy System) • 以2的冪次作為memory的配置單位,假設總memory size為 則宣告 AV[K]的list陣列,陣列元素 AV[i]記錄了大小為的空間串列開頭 • 配置:假設要配置的空間大小為n則求出>n 中i的最小值,並去av list中尋找k[K]不為空串列,若k=i則自AV[K]中取出一區塊並配置,若K>i則自AV[k]中取出一個block將分為兩塊(大小皆為)將其中一塊加入AV[K-1]的串列中,另一塊持續切割至大小為時再將其分配 45

  46. 假設有一個記憶體配置要求為3Blocks,則需要之block,則此時檢查AV[2],若不為NULL則配置,否則往下尋找AV[3],直到不為NULL,切割直到大小相符!假設有一個記憶體配置要求為3Blocks,則需要之block,則此時檢查AV[2],若不為NULL則配置,否則往下尋找AV[3],直到不為NULL,切割直到大小相符! 46

  47. 伙伴系統(Buddy System) • 分配和回收的時間複雜度皆為O(log n) • 但依然存在外部分散 47

  48. 分散(fragmentation) • 分散(fragmentation)共分為兩種 • 外部分散(external fragmentation) • 在連續配置的方法下每個free block皆不夠但全部的free block加總後可以滿足要求的空間,然後因為不連續所以不能滿足此要求,便稱為外部分散(以上介紹的演算法皆存在此種問題) • 內部分散(internal fragmentation) • 配置出去的空間超過要求的size,兩者之間的差值無 法被有效利用,形成浪費稱為內部分散 48

  49. 分頁式記憶體管理系統(Page memory Management) • 為了解決記憶體的外部分散,我們使用了分頁式的記憶體方法,而當實體的記憶吃緊時,我們變要選擇哪些的process該swap out到disk中哪些該寫入實體記憶中,而且這個管理方法就稱為 頁面替換演算法(Page Replacement Algorithm) 49

  50. 頁面替換演算法(Page Replacement Algorithm) • 最佳頁面替換演算法(The Optimal Page Replacement Algoritm) • NRU(The Not Recently Used Page Replacement Algortim) • FIFO(The First-In First-Out Page Replacement Algorithm) • 第二次機會替換演算法(The Second Chance Page Replacement Algorithm) 50

More Related