CSCI3150 T10 分页地址转换
课程:CSCI3150 Introduction to Operating Systems · 2025T2 本讲:T10 分页地址转换 · 原件 T10-分页与地址转换-2025T2.pptx(本地课件) · PDF页码副本(本地课件) p.1–10 定位:先确定按字还是按字节编址,再拆两级索引与页内偏移。 前后:演练 L10分页、L11多级表。
逐页伴读
p.1–3:版本日期冲突与分页的边界
p.1 Tutorial 10: Paging(Address Translation)
CSCI3150 Introduction to Operating Systems, Spring 2026
p.3 Convenient for free space management
Reduce the wasted fragmentation
(not larger than one page size)
Allowing the memory space of one process
discontinuous
Creating large virtual memory space within
small memory
封面同时写Spring2026与March26,2024,按来源目录保留2025T2历史参考,不擅自修正原件。p.2作业日程同属历史。p.3说分页减少碎片:固定页避免可变长分配的外部空洞要求,但最后未填满页仍有内部碎片;“不超过一页”应对应单个末页浪费,不能说全系统总浪费不足一页。
p.4–6:页表查两次,不是数据拷贝两次
p.4 Page Table Function:
logical addresses -> physical addresses
Each process has its own page table
How the Translation works:
Logical Address Components:
• Page Number + Offset.
Translation Process:
• Page Number + page table + PTBR -> Frame Number.
• Frame Number + Offset -> Physical Address.
p.6 The two level page table in x86 (32-bit machine)
先从VA取VPN与offset,PTBR定位表,读PTE得到PFN,形成PA。多级表图与L11一致:省去整页无效叶表,但根目录占空间。32位、4KiB字节页、4B项的典型两级示意为10/10/12,下一题改成word addressing,不能沿用12位offset。
p.7–8:完整题面与位数推导
p.7 Suppose a machine uses the word addressing (A physical address uniquely identify one word in the memory) and two-level paging. The word length of the machine is 32 bits. The page size is 32 bytes, the page directory has 4 entries, and the page table (PT) has 8 entries. You need to answer the following questions.
a)
What is the size of the virtual address space?
How many bits does a virtual address have?
How many bits should be reserved for the page directory index, page table index and the offset respectively?
原题:机器按字编址,每个物理地址唯一标识一个word;word长32bit=4B,页长32B;目录4项,每个二级表8项。问虚拟空间大小、VA位数及目录/表/offset位数。
每页包含32/4=8个word,故offset3位;目录4项需要2位,二级表8项需要3位,总VA为8位。共有4×8=32虚拟页,每页8word,所以空间256word=1024B=1KiB。原图写但没注明单位;按本题编址单位必须补上word,不能写256B。
补充:先画“一个地址前进一格”到底前进多少字节。 本题地址0、1、2分别指定第0、1、2个word,各word占4B。因此地址从0到1前进的是4字节;页大小32B可容8个地址单位,页内offset只能取0–7。把32B直接写成32个地址就会平白把每页扩大四倍。
目录2位和叶表3位合计5位VPN,能选32页;加3位offset后,8位VA编码256个word地址。这与32页×32B=1024B是同一个容量,分别用地址个数和字节数计量。无需也不能再额外把VA多添两位来“补回word大小”;只有把机器改成按字节编址,才换成另一套地址定义。
p.9:完整映射题与四个地址
p.9 b) For virtual address space defined by the two level page table as shown in Figure1, given the following virtual addresses: 22, 68, 150, 245. Which of the above addresses would be mapped? If the virtual address is mapped, what is its corresponding physical address?
图给目录0→页表PFN10,目录2→页表PFN11,目录1、3无效。PFN10表有效项为索引0→5、2→6、3→2、7→3;PFN11表有效项2→4、6→0、7→8;黑色格表示无效。问VA22、68、150、245是否映射及PA。
| VA(word) | 二进制2/3/3拆分 | 目录 | 表索引 | offset | 结果 |
|---|---|---|---|---|---|
| 22 | 00 010 110 | 0 | 2 | 6 | PFN6,PA=6×8+6=54word |
| 68 | 01 000 100 | 1 | 0 | 4 | 目录无效,不映射 |
| 150 | 10 010 110 | 2 | 2 | 6 | PFN4,PA=4×8+6=38word |
| 245 | 11 110 101 | 3 | 6 | 5 | 目录无效,不映射 |
若额外问对应字节起始地址,分别54×4=216B、38×4=152B;这不是题目原来的word地址。原页最后一行把245的二进制11110101误标成“(150)”,应按245读取。目录中的PFN10/11是页表所在地,不是目标数据框;最后用的是6和4。
补充:把十进制地址直接拆成三项,反查二进制表。 每个目录项覆盖 8 个叶表项,每项映射 8 个 word,所以一个目录项覆盖 64 个 word 地址。目录索引是 VA 除以 64 的整数商;叶表索引是先除以 8 取整,再对 8 取余;页内 offset 是 VA 对 8 取余。
对原题 150:150=2×64+22,故目录 2;22=2×8+6,故叶表索引 2、offset 6。目录 2 指向 PFN11 的页表,从那张表的第 2 项取得数据 PFN4,最后 4×8+6=38word。PFN11 是中间表的位置,PFN4 才是最终数据位置。这个分解与二进制 10 010 110 一致,提供了不依赖抄位串的复核途径。
p.10:先写单位再套公式
Q&A页。通用形式是PA=PFN×每页地址单位数+offset;按字节编址时这个单位数才等于页字节数。本题用8,若直接乘32就混了两套单位。
自测:已求得VA22映射PA54word,为什么216B不是另一个互相冲突的答案?
54表示第54个word;每个word4字节,所以它的字节起始位置是216。两个值描述同一位置,但使用不同单位。若题目要求word地址,应答54word;只有额外问字节位置才给216B。与之不同,把PFN6乘32再加offset6得到198,才是真正把字节和word混相加的错误。
本讲核心考点
- [C] 按字编址下把页字节数换成每页word数。
- [C] 推导目录、表索引、offset位数及虚拟空间容量。
- [C] 逐级检查有效性,区别页表框与数据框。
附录
本份没有需要移至附录的长推导;计算过程已在对应页正文写全。
来源与证据
-
原件:T10-分页与地址转换-2025T2.pptx(本地课件);PDF副本(本地课件) p.1–10。本文页码均为 PDF 页号。
-
考试证据:读了 课程大纲-2026T1.pdf、教学计划-2026T1.pdf、T08-期中参考-2025T2-题目-解答.pdf、T07-多级反馈队列-2025T2.pdf(p.13–15内嵌历史试题);未识别用途的 PDF:无
-
2026-10-13 内容补全:保留原页顺序与版本,补入对应页的程序、接口、字段、条件和演算;原程序片段保留课件行号、拼写与省略处,不能据此视为经过编译的完整软件。本文已有运行记录属于其标注日期,本次未重新运行课程容器或提交作业。