操作系统课程设计课件题目
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
空闲块组指针 块组位图指针
分配/释放: Buddy heap algorithm 以2 i 个页框(块组)为分配/释放单位( 2 i-1<fn≤2 i ), fn为要申请的页框数;
精选ppt
10
Linux 存储管理(Cont.)
块组位图: 对于块组2 i 按前后顺序两两结合成一对Buddy, 如: 2 1块组的0、1页框和2、3页框是一对Buddy; 块组位图的 1 位表示对应的一对Buddy页框块组的使用情况; 对于一对buddy: ① 若一个空闲, 另一个全部或部分占用, 则位图相应位置1; ② 当两个都空闲, 或都被全部或部分占用, 则位图相应位置0。
10(29) 9(28) 8(27)
… 4(23) 3(22) 2(21) 1(20)
申请长度为128,在第8组中取一块。若 第8组已空,在第9组取一块,分配其中 的128页,并将剩余的128页记入第8组。 若第9组也空,在第10组取一块,进行 两次分割,分配128页,剩余的128页 和256页分别记入第8组和第9组。
精选ppt
9
Linux 存储管理
1. 伙伴堆存储分配算法 ⑴ Physical memory management
页框: 静态等长, 4KB; 块组: 连续的 2 i ( i = 0, 1, 2, …, 9 )个页框构成一个块组;
共10个块组, 长度为2 i 的块组叫作块组 i ; 空闲区表: free_area[i]表示页框数为2 i的块组, 其结构为:
精选ppt
3
Managing Physical Memory
Allocate ranges of physically-contiguous pages on request.(为进程分配连续存储区)
The allocator uses a buddy-heap algorithm to keep track of available physical pages.
4 unit block head
8 unit block head
I6 unit block head
32 unit block head
...
Problem: internal fragmentation eg: req(17) second memory allocation carves slabs (small units) and manage them separately third memory allocation for allocation of no-contiguous memory
(Buddy heap算法记载可用存储区) – Each allocatable memory region is paired with
an adjacent partner.(每个可用存储区有一个伙伴)
精选ppt
4
Managing Physical Memory
– Whenever two allocated partner regions are both freed up they are combined to form a larger region.(两个相邻的伙伴被释放时, 合并为一个大空闲区)
8
8
8
8
精选ppt
6
Buddy Heap Implementation
10(29) 9(28) 8(27)
… 4(23) 3(22) 2(21) 1(20)
数据结构: 组号(空闲块数 ):链头指针 256 512
24 96
相同长度的空闲块 构成一组
8
16 32
精选ppt
7
Buddy Heap Implementation
– If a memory request cannot be satisfied by allocating an existing small free region, then a larger free region will be subdivided into two partners to satisfy the request.(小区域 不能满足时,分割大区域)
释放是上述操作的逆过程,考虑伙伴的 合并。两个块为伙伴的条件是:(1)两 个块的大小相同,如b个页面;(2)两 个块的物理地址连续;(3)位于后面块 的最后页精面选编ppt号必须是2b的整数倍。 8
Buddy Heap Implementation
I unit block head
2 unit block head
(3)设计对选择的内存空间进行划分管理模块,当所有内存为空闲时, 显示其各块组空闲区链表的内容;
(4)随机指定多个不连续占用的内存空间(每块占用空间包括2i个连 续的页框),显示各块组空闲区链表的内容;
(5)基于内存当前情况,随机产生申请的页框数m,显示满足m个页 框的申请后,块组空闲区链表的内容;
(6)基于内存当前情况,随机产生被占用的(页框号,块组号)释放, 显示释放后块组空闲区链表的内容。
精选ppt
2
பைடு நூலகம்
• 实现
(1)定义空闲区块组链表数据结构; (2)依据块组伙伴的定义,产生空闲区块组链表的
内容; (3)满足申请后,重新调整块组链表;
(4)释放后,相邻空闲块组依据伙伴关系要合并成 大的块组
基于伙伴堆算法的内存分配/释 放的模拟实现
精选ppt
1
功能要求
(1)空闲页面分为10个块组,块组编号为0,1,2,……,8,9;
(2)内存空间及其划分(界面):
– 内存物理空间大小可选择:256M bytes,512M bytes;
– 每个页框的大小可选择:1K bytes,2K bytes,4K bytes;
精选ppt
5
Buddy heap存储分配
---------------------------------req(8) req(8) ----------req(4) rel(8) rel(8)
32 32
32
32
32
32
32
32
64
8
8
8
8
16
16
16
32
8
4 4
4 4
4 4
8 16
8
8
8
8
16
8
伙伴条件:
① 两个块大小相同, 即具有相同的页框数b; ② 两个块的物理地址相连; ③ 位于后面块组的最后页框编号+1必须是2b的整数倍。
分配/释放: Buddy heap algorithm 以2 i 个页框(块组)为分配/释放单位( 2 i-1<fn≤2 i ), fn为要申请的页框数;
精选ppt
10
Linux 存储管理(Cont.)
块组位图: 对于块组2 i 按前后顺序两两结合成一对Buddy, 如: 2 1块组的0、1页框和2、3页框是一对Buddy; 块组位图的 1 位表示对应的一对Buddy页框块组的使用情况; 对于一对buddy: ① 若一个空闲, 另一个全部或部分占用, 则位图相应位置1; ② 当两个都空闲, 或都被全部或部分占用, 则位图相应位置0。
10(29) 9(28) 8(27)
… 4(23) 3(22) 2(21) 1(20)
申请长度为128,在第8组中取一块。若 第8组已空,在第9组取一块,分配其中 的128页,并将剩余的128页记入第8组。 若第9组也空,在第10组取一块,进行 两次分割,分配128页,剩余的128页 和256页分别记入第8组和第9组。
精选ppt
9
Linux 存储管理
1. 伙伴堆存储分配算法 ⑴ Physical memory management
页框: 静态等长, 4KB; 块组: 连续的 2 i ( i = 0, 1, 2, …, 9 )个页框构成一个块组;
共10个块组, 长度为2 i 的块组叫作块组 i ; 空闲区表: free_area[i]表示页框数为2 i的块组, 其结构为:
精选ppt
3
Managing Physical Memory
Allocate ranges of physically-contiguous pages on request.(为进程分配连续存储区)
The allocator uses a buddy-heap algorithm to keep track of available physical pages.
4 unit block head
8 unit block head
I6 unit block head
32 unit block head
...
Problem: internal fragmentation eg: req(17) second memory allocation carves slabs (small units) and manage them separately third memory allocation for allocation of no-contiguous memory
(Buddy heap算法记载可用存储区) – Each allocatable memory region is paired with
an adjacent partner.(每个可用存储区有一个伙伴)
精选ppt
4
Managing Physical Memory
– Whenever two allocated partner regions are both freed up they are combined to form a larger region.(两个相邻的伙伴被释放时, 合并为一个大空闲区)
8
8
8
8
精选ppt
6
Buddy Heap Implementation
10(29) 9(28) 8(27)
… 4(23) 3(22) 2(21) 1(20)
数据结构: 组号(空闲块数 ):链头指针 256 512
24 96
相同长度的空闲块 构成一组
8
16 32
精选ppt
7
Buddy Heap Implementation
– If a memory request cannot be satisfied by allocating an existing small free region, then a larger free region will be subdivided into two partners to satisfy the request.(小区域 不能满足时,分割大区域)
释放是上述操作的逆过程,考虑伙伴的 合并。两个块为伙伴的条件是:(1)两 个块的大小相同,如b个页面;(2)两 个块的物理地址连续;(3)位于后面块 的最后页精面选编ppt号必须是2b的整数倍。 8
Buddy Heap Implementation
I unit block head
2 unit block head
(3)设计对选择的内存空间进行划分管理模块,当所有内存为空闲时, 显示其各块组空闲区链表的内容;
(4)随机指定多个不连续占用的内存空间(每块占用空间包括2i个连 续的页框),显示各块组空闲区链表的内容;
(5)基于内存当前情况,随机产生申请的页框数m,显示满足m个页 框的申请后,块组空闲区链表的内容;
(6)基于内存当前情况,随机产生被占用的(页框号,块组号)释放, 显示释放后块组空闲区链表的内容。
精选ppt
2
பைடு நூலகம்
• 实现
(1)定义空闲区块组链表数据结构; (2)依据块组伙伴的定义,产生空闲区块组链表的
内容; (3)满足申请后,重新调整块组链表;
(4)释放后,相邻空闲块组依据伙伴关系要合并成 大的块组
基于伙伴堆算法的内存分配/释 放的模拟实现
精选ppt
1
功能要求
(1)空闲页面分为10个块组,块组编号为0,1,2,……,8,9;
(2)内存空间及其划分(界面):
– 内存物理空间大小可选择:256M bytes,512M bytes;
– 每个页框的大小可选择:1K bytes,2K bytes,4K bytes;
精选ppt
5
Buddy heap存储分配
---------------------------------req(8) req(8) ----------req(4) rel(8) rel(8)
32 32
32
32
32
32
32
32
64
8
8
8
8
16
16
16
32
8
4 4
4 4
4 4
8 16
8
8
8
8
16
8
伙伴条件:
① 两个块大小相同, 即具有相同的页框数b; ② 两个块的物理地址相连; ③ 位于后面块组的最后页框编号+1必须是2b的整数倍。