《自己动手写操作系统》心得
不知道是从哪里来的兴趣想起自己了解一下操作系统的具体实现来了,实话实说,之前也学过操作系统,只不过学校的课程跟我完全不是一个风格。理论一大堆,我知道那是在讲什么,操作系统嘛当然^^。太深刻了!就像跟一个盲人描述一头象:象是动物,长鼻子、大耳朵、四只腿…哦,原来那就是大象啊!?
别自欺欺人了,如果你真是一个‘盲人’,OK没关系!管它是什么呢,有个印象就不错了。当然这取决于你想深究到的层次,还有就是你的风格。
对于我来说更想倾向于实践主义而非理论主义,但我也相信无论你适合哪种主义,It’s all right!就像Linus和Eric,前者的Linux内核正在撼动着微软的地位,后者的开源思想以及理论巨著《大教堂与集市》(等)也是影响着一大批的牛人!说到这里就不得不提提GNU的创始人Richard ,个人感觉‘教父‘这个称呼甚是恰当!不仅是炒了MIT,最重要的是它的Free Software!GNU’S NOT UNIX,呵呵,嬉皮的定义手法!他们重写了UNIX下的Program,我想这不仅只是版权的问题,GNU践行着自己的理想,传播着自由的意识!这可不是崇拜,每个人都有自己的理想,没有必要崇拜什么!
Okay,还是回归正题吧,回来写写心得吧,呵呵,很不错的一本书!这可不是做广告哦,毕竟作者跟我没有利益关系嘛。之所以说不错是因为这确实符合我的风格,一点一点的让你有成就感,一点一点的把你引向操作系统的大门!其实这本书是写了一个很小很小的内核!就像Linux内核一样,只是还没有那么高级。按照Richard的说法,内核只是操作系统的一部分,当年他们规划GNU的时候也是做过内核的设计,只不过他们规划的系统很复杂,听他的描述,应该是一个微内核,各个模块彼此间异步传信,完成不同的功能,由于没有很好的调试手段,BUG很难定位,后来发现了Linux内核,这也正是GNU缺少的了,Free的世界就是自由,于是直接拿了Linux做内核,这也导致以后大家都说是Linux系统而非GNU系统,其实严格来讲Linux有很多种发行版本,GNU/Linux只是其中一种!RedHat、Debian、Ubuntu…听说最近网上又有了GreenHat国产的Linux系统,不知道是不是对RedHat的恶搞。我想了解这一点还是有必要的,操作系统不只是内核提供的内存管理、进程管理、设备管理…如果这样那它只是一个内核而已,内核提供了其它程序运行的环境,为它们分配内存,执行相应的处理机分配算法、进程调度算法以及管理相应的硬件设备。然而除此之外我们还需要比如Compiler、Debuger、Editor等等等等。呵呵,现在我们还是不讨论什么是操作系统了吧,就让我们暂且认为内核就是一个操作系统吧,毕竟那太复杂…
《自己动手写操作体统》的一个优点就是在不断给你鼓励,而且把复杂的问题简单化抽取最本质的东西拿给你看,用作者的话讲就是慢慢的把你引到冰山的脚下!
下边就针对这本书具体内容写一下自己的理解吧!
之一:寻址
不管是操作系统还是普通程序,首先要解决的就是一个寻址的问题!只有知道了地址,CPU才能知道到哪里找它想要的东西,如指令、数据。其实,书中很大一部分就是在解决这个问题。8086的寻址能力是1M,386变成了4G,相应的编程方式由实模式变成了保护模式,所谓的保护模式书中作者有很多总结,有兴趣的还是自己看的好,实模式下采用的是 段:偏移址,而保护模式下则不再是这么简单,当然也并不复杂…并因此引出了相应的概念,GDT、LDT、IDT…其实这一切都是因为Intel对CPU的改进,在386之后的CPU中增加了GDT寄存器、LDT寄存器、IDT寄存器、CR0、CR3寄存器、TSS寄存器(这里只列出了书中介绍的,实际情况远远不止这些)…那么它的寻址方式最简单的情况下需要以下四步:
①由GDTR找到GDT(全局描述符表)
②由加载到段寄存器(CS DS ES SS GS)中的选择子找到相应段描述符号在GDT中的偏移,实际上不考虑选择子第三位的话他就是一个偏移
③然后在由找到的段描述符中段基址就找到了相应的段
④再由指定的偏移就可以定位(寻址)到相应的内容
一点说明:描述符中段基址是32位(4G),它不再是段(16)<<4+偏移,而是GDTà段描述符à段基址(32)à段基址+偏移(32),这样做的目的是扩大寻址范围,而并没有体现保护模式,不过这也是第一遇到保护模式地方,那就是在描述符、选择子上做的文章了,实际上在书中描述符是通过一个汇编宏实现的,其中有一个字段是DPL,而选择子中低2位存放的是RPL,而选择子在被加载到CS中时,低2位存放的是CPL,CPU在通过比较相应段的这三个权限就可以起到相应的保护规则…具体是个怎么规则还是看书吧,呵呵
当然也不是说你说它是保护模式就是保护模式,我们要经过相应的步骤才能进入保护模式:准备GDTà加载GDTRà打开A20地址线à置CR0的PE(保护模式)位à跳转到保护模式(由16位的实模式下代码跳转到保护模式下的代码),要返回的话还要执行相应的动作。
实际上这样的寻址是在未开启页机制的情况下,它得到的是一个线性地址,在开启了页式存储机制后(置CR0的PG位)又变成了如下机制(线性地址是由上边得到的):
剩下的LDT、IDT、调用门,这些都是以此为基础,只是在相应的调用权限规则上做了一些规定,来实现‘保护’的机制,比如说特权级转移、比如说堆栈切换,而且个人感觉保护模式下的寻址就是一个间接寻址的‘完美’应用,如果给我一张现在的主流硬盘做目录就可以编址宇宙中的每一个分子…呵呵,开玩笑,没算过!
好了,先写到这里,以后在补充吧!^^
《自己动手写操作系统》心得相关推荐
- 《徐卓-心理咨询师校园报告 》--心得
今天去听关于积极心理的一个互动式的演讲,取其可信之处总结归纳: 1.推荐:哈弗幸福课,象与骑象人 2.当感到迷惘时,比如想考研又想出国,那么就去找到事情们的交集,那就是要学好英语!找到交集,是明智且重 ...
- 心理咨询师——调研报告结论
课堂上的换位讨论 对于我个人而言,心理咨询实在是一件很陌生的事情,而和同学做的这个心理咨询师与咨询者之间的换位讨论带给了我很新奇的体验.但看上去我们似乎讨论了很多可能咨询者可能遇到的问题,并也对这些问 ...
- 计算机大学生寒假实践报告吧,大学生计算机寒假社会实践报告心得
<大学生计算机寒假社会实践报告心得>由会员分享,可在线阅读,更多相关<大学生计算机寒假社会实践报告心得(5页珍藏版)>请在人人文库网上搜索. 1.大学生计算机寒假社会实践报告心 ...
- 大学生心理健康和二级心理咨询师
关于部分大学生心理健康和二级心理咨询师的配备调研报告 小组成员:罗鑫 贾若凡 李月 朱洪曦 薛文池 调研对象:部分大学生以及二级心理咨询师 调研方式:网上问卷调查和收集数据 调研目的: 了解大学生心理 ...
- 计算机操作技能训练心得,计算机基础技能训练报告心得3篇
计算机,即电脑,随着科学技术的发展,不断进行着更新发展.伴随着计算机走入人类生活,它已成为人们日常生活必不可少的一部分,甚至成为当下许多人工作生活依赖的工具,下面是学习啦为大家准备的计算机基础技能训练 ...
- 2021年中级面试大纲 | 上海市学校心理咨询师《实践能力评估》要求
一.考试目的 本科目通过对实际个案的心理问题诊断.咨访关系的建立.个案材料的搜集与理论分析.咨询策略与技术的使用.咨询过程的反省.咨询中情绪的自我觉察.咨询伦理的执行,以及咨询师本身的心理健康状况等方 ...
- python调研报告总结体会_调研报告心得(多篇)
调研报告心得 ( 精选多篇 ) 有这样的结果还是很高兴.一开始其实也挺有信心的后来看到有 高手参加, 调研演讲-大学政管学院行政管理专业学生就业意向与专 业发展调查演讲> 终于进入调研大赛的决赛 ...
- 同步现象 心理学_非心理专业背景的人,如何成为心理学家或心理咨询师?
"非心理专业背景的人,如何成为心理学家或心理咨询师?" 这是前天我收到的一个提问. 有关心理学领域划分不想多说,心理学家和心理咨询师的概念差异也不想多说.仅就抱有成为合格的甚至好的 ...
- 素数五个为一行的_对标交流 ▏潍坊市心理咨询师协会名誉理事长、潍坊医学院王力教授一行到昌邑市妇幼保健院指导交流工作...
12月6日,潍坊市心理咨询师协会名誉理事长.潍坊医学院王力教授,中国心理学会首批注册心理督导师.济宁医学院刘娅俐教授,潍坊市心理咨询师协会副理事长魏玉华和副秘书长张呓飞一行来我院指导交流心理咨询与健康 ...
- c语言银行系统个人心得,c,,银行管理实验报告心得体会.docx
c,,银行管理实验报告心得体会 c,,银行管理实验报告心得体会 篇一:c++实验心得 刚拿到C++实验心得 c++书时发现,跟c语言有太多相似,觉得应该不是很难.上第一节课时,一时大意,等到教室时发现 ...
最新文章
- 顺序队列之C++实现
- 弧形玻璃清洁机器人_宅家大扫除清洁装备+清洁好物+全屋家电维护一文搞定
- wxWidgets:wxMouseCaptureChangedEvent类用法
- 二叉树遍历(附Java实现代码)
- 物联网技术渐趋成熟 车联网应用或成市场主驱力
- web中的cookie管理
- 算法-排序-冒泡排序
- JdbcTemplate(概念和准备)
- 我今年89岁,刚刚拿了个物理学博士学位
- linux检查防火墙是否阻挡端口,浅析linux查看防火墙状态和对外开放的端口状态...
- 添加中文数据出现问号_怪物猎人世界绚辉龙和冥赤龙的出现时间规律一览
- 一些有趣的 CSS 魔法和布局(下)(结尾有岗位内推哦~)
- 普渡大学统计与计算机科学,普渡大学西拉法叶分校统计学
- MGJRouter代码分析
- winform程序内存不足或假死的问题
- 价值1K的微信二维码活码源码
- 【前端】vue-slider实现可设置选择范围的时间轴
- 追求卓越之--arm MMU详解
- 初中高级的 git 和 gerrit 技巧【大型项目实战总结 CR 经验】
- 实体对齐——阅读笔记