rcore-os / rCore-Tutorial-Book-v3

A book about how to write OS kernels in Rust easily.
https://rcore-os.github.io/rCore-Tutorial-Book-v3/
GNU General Public License v3.0
1.23k stars 233 forks source link

rCore-Tutorial-Book-v3/chapter4/7more-as #120

Open utterances-bot opened 2 years ago

utterances-bot commented 2 years ago

超越物理内存的地址空间 — rCore-Tutorial-Book-v3 3.6.0-alpha.1 文档

https://rcore-os.github.io/rCore-Tutorial-Book-v3/chapter4/7more-as.html

YdrMaster commented 2 years ago

我们希望基于这种层次结构,加上一定当然软硬件优化手段,能够接近“理想”内存的目标。

是”一定的“吧。

KaminariOS commented 2 years ago

最优匹配(best fit)策略的思路也很简单:选择最接近需求方请求大小的块,从而尽量避免空间浪费。也是把空闲空间基于地址顺序组织为大小不一的空闲块列表。当需求方需要大小为n的空闲块时,遍历整个空闲列表,找到足够大且二者空间大小差距最小的空闲块。其代价是时间,即需要遍历一次空闲列表,找到最合适的空闲块。而且还有可能造成空间的浪费,因为可能产生很多小的空闲碎片,虽然碎片容量的总和比较大,当无法满足内存分配请求。

最後應爲:“但無法滿足......"

KaminariOS commented 2 years ago

如何量化程序访问的速度呢?如果能知道程序执行过程中的访存命中次数和未命中次数,就可以计算出程序的平均内存访问时间:

    AvgTime = ( Tm * Phit ) + ( Ts * Pmiss ) / ( Phit + Pmiss )

應爲

AvgTime = (( Tm * Phit ) + ( Ts * Pmiss ))/ ( Phit + Pmiss )
nucstd123 commented 2 years ago

该数据的虚拟地址是否 ->是 该任务的合法地址 为了进一步提高系统的执行效率, -> 当 操作系统在让存储设备进行I/O访问时

chyyuu commented 2 years ago

@nucstd123 @KaminariOS 谢谢!已修改。

whfuyn commented 2 years ago

注解 按需分页(Demand Paging) 还有一点需要注意,交换区 不不是->并不是 应用程序的页面换入换出的唯一区域。

SnowWarri0r commented 2 years ago

动态内存分配 但应用程序需要的内存空间一般 大小不一的->一般 大小不一的

SnowWarri0r commented 2 years ago

交换技术 这里需要注意的是,及时 解决了上述三个问题 -> 即使 解决了上述三个问题

Ybeichen commented 1 year ago

stack方法中,"即把表示页(有虚拟页号即可)的项目按访存先后组织位一个栈式单链表" 这里应该是 “拉一个栈式单链表” 吧

TD-Sky commented 1 year ago

而其他一些策略,比如LRU置换,最优置换等,就不会遇到这个问题。其原因是,LRU等具有栈特性(stack property),即数量为 m+1 的物理页帧一定包括数量为 m 的物理页帧的数据内容。因此,当增加物理页帧数量时,访存命中率至少保证不变,且 可能提高。而FIFO策略、时钟策略等没有栈特性,因此可能出现异常行为。

chestNutLsj commented 1 year ago

勘误:

  1. stack方法中

    每当应用访问一个页时,处理器就会从链表中找到该页对应项目,移并放在链表头

这里应当为“移出”,毕竟访问过的页不是要拿去换出,而是置换到栈顶

  1. Belady异常中:

    计算机科学家 Belady 及其同事在 1969 年左右在研究 FIFO 置换策略

“是”应当为“时”

  1. 另外就是本节的内容多是文字,初读者看起来很晦涩,不妨添加一些图片,或指向贵校OS课的网页幻灯片的链接(我是先看了贵校OS的幻灯片再看的此书,但更普适地丰富本书内容也有必要)