返回介绍

CPU 阿甘之烦恼

发布于 2025-01-22 00:38:44 字数 1625 浏览 0 评论 0 收藏 0

1 批处理系统 CPU 阿甘最近很烦。

原因很简单,内存和硬盘看他不顺眼。

阿甘心里很清楚, 是自己干活太快了,干完了活就歇着喝茶,这时候内存和硬盘还在辛辛苦苦的忙活,他们肯定觉得很不爽了。 

中国有句古话叫什么来着? “木秀于林,风必摧之”,“不患贫而患不均”,这就是阿甘的处境。 

虽然阿甘自己也于心不忍, 可是有什么办法?谁让他们那么慢 !一个比自己慢 100 倍 , 另外一个比自己慢 100 万倍

这个世界的造物主为什么不把我们的速度弄的一样呢?

阿甘所在的是一个 批处理的计算机系统 , 操作系统老大收集了一批任务以后,就会把这一批任务的程序逐个装载的内存中,让 CPU 去运行,大部分时候这些程序都是单纯的科学计算,计算弹道轨迹什么的, 但有时候也会有 IO 相关的操作,这时候,内存和硬盘都在疯狂的加班 Load 数据, 可是阿甘只能等待数据到来,只能坐那儿喝茶了。

没多久, 内存向操作系统老大告了阿甘一状, 阿甘被老大叫去训话了: “阿甘,你就不能多干一点? 老是歇着喝茶算是怎么回事?”

阿甘委屈的说: “老大, 这不能怪我啊, 你看你每次只把一个程序搬到内存那里 让我运行, 正常情况下,我可以跑的飞快, 可以是一旦遇到 IO 相关的指令,势必要去硬盘那里找数据,硬盘实在是太慢了, 我不得不等待啊”

操作系统说: “卧槽, 听你的口气还是我的问题啊, 一个程序遇到了 IO 指令, 你不能把它挂起,存到到硬盘里,然后再找另外一个运行吗?”

阿甘笑了:“老大我看你是气昏头了, 我要是把正在运行的程序存到硬盘里,暂时挂起,然后再从硬盘装载另外一个, 这可都是 IO 操作啊 ,岂不更慢?”

“这?!” 操作系统语塞了,沉默了半天说:“这样吧, 我以后在内存里多给你装载几个程序,一个程序被 IO 阻塞住了, 你就去运行另外一个如何?”

“这得问问内存,看他愿不愿意了, 我把内存叫来,我们一起商量商量” 阿甘觉得这个主意不错。

内存心思缜密,听了这个想法, 心想:自己也没什么损失啊,原来同一时间在内存里只有一个程序, 现在要装载多个,对我都一样。

可是往深处一想,如果有多个程序,内存的分配可不是个简单的事情, 比如说下面这个例子: 图 5:一个简化的段表和页表

所有事情都设置好了, 大家都喘了口气,觉得这样的结构大家应该没什么异议了。

老大心情大好,觉得一切尽在掌握,他笑着对 CPU 阿甘说:

“阿甘,从今天开始,如果有程序想非法的访问内存,例如一个不属于他的段, 我就立刻给他一个警告:Segmentation Fault !”

阿甘说:“那程序收到 Segmentation Fault 以后怎么处理?”

老大说: “通常情况下就被我杀死, 然后给他产生一个叫 core dump 的尸体,让那些码农们拿走分析去吧!”

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文