《操作系统真象还原》是一本由郑钢著作,人民邮电出版社出版的平装图书,本书定价:108.00,页数:759,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。《操作系统真象还原》精选点评:●难得一见的好书,通俗易懂,不过不是零基础可以看的书籍,强烈推荐,哈哈哈哈!!!●挺好通
《操作系统真象还原》是一本由郑钢著作,人民邮电出版社出版的平装图书,本书定价:108.00,页数:759,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。
《操作系统真象还原》精选点评:
●难得一见的好书,通俗易懂,不过不是零基础可以看的书籍,强烈推荐,哈哈哈哈!!!
●挺好 通俗易懂
●可以当工具书查看,细致但罗嗦了。
●这本书很好,跟着书能完整一些一个操作系统,很有成就感。虽然有点啰嗦,但那是作者 为了把枯燥内容描述轻松而不得已的做法。
●本书的elf解析,程序链接加载和内联汇编的知识讲得非常清晰,可以说除了官方的manual以外,没有其他比这本书更加清楚的了。这本书绝对会节省你大量的时间帮你入门kernel
●讲的太通俗,既是优点又是缺点,还是老老实实去啃硬货吧
●非常不错
●对我这种基础不好的人来说,很详细,很多东西解释清楚了。有时候你还要知道为什么这么做,这个很重要
●学习OS的第三个阶段终于完成了,发了本书论坛的第一个帖子,本想动手实现书中的全部代码,最终只实现到了第11章,算是一个遗憾吧
●不错不错
《操作系统真象还原》读后感(一):非常好的书,五星推荐
问问豆瓣,为什么我发布的两星的评论就不显示?豆瓣。。。。
两星的评论为:
废话太多,抓不住重点。比《从实模式到保护模式》一书差很多。如果把口语化的都去掉能节省三分之二的空间。摘抄一段:计算机执行到这份上,BIOS也即将完成自己的历史使命了,完成之后,它又将谁去。想到这里,心中不免一丝忧伤,甚至有些挽留它的想法。可是,这就是它的命,它生来被设计成这样,在它短暂的一生中已经为后人创造了足够的精彩。何况。。。。
以后选书不能太依靠豆瓣。
《操作系统真象还原》读后感(二):非常棒的操作系统实践类书籍
先说下这本书的印象,大而全,事无俱细,处处透着作者想把知识说清楚的真诚,而且本书是从第0章开始,那一章是做为答疑,没错,刚开始就答疑,说明,这是作者为了把常见问题给大家解释,很难得,很真诚,很少见这样的认真。 这本书很好,跟着书能完整一些一个操作系统,很有成就感。虽然有点啰嗦,但那是作者 为了把枯燥内容描述轻松而不得已的做法。
这本书其实比很多大学老师都讲的好,感觉是真正站在学生的角度在阐述操作系统,在课堂上不懂的地方,这本书上全都有解释,而且,是我的老师推荐给我的。总之,赞国内良心作者。
《操作系统真象还原》读后感(三):又一本国人写的精品的计算机书籍
大二下学期开设了操作系统课程,课上理论过多,缺乏实践,对操作系统的运行机制依旧茫然。。于是在知乎看到如何自己写一简单内核,
了解到需要汇编。自己买了王爽汇编自学,然而那本汇编讲的只是16位的8086汇编,在别人推荐下,买了一本x86从实模式到保护模式,
读完之后会对实模式和保护模式、系统的基本引导有基本的了解,后来在china-pub上再看《《操作系统真象还原>>看了目录。感觉内容很不错
,拿到手后确实很厚,不过不用担心,之所以这么厚。作者用非常通俗,幽默得讲解每一个概念,
知识点。而且不断提及,生怕读者弄不懂,读起来很舒服,作者真是煞费苦心,为作者点赞
,这本书有一个非常好的好处就是。每章对应的代码实现一新的功能,可以用bochs调试,
自己造着书上抄有时也会出现错误,需要你自己动手调试,对比作者源码,这样印象会很深刻。
这样做之前在其那些很晦涩的概念,自己阅读,调试后,感觉也就那么回事。随着深入对操作系统的全貌都有了清晰的认识,深刻体会到了内核实现的各种巧妙思想。看得我直拍大腿。
这本书也不是完全面向0基础,需要有了一点汇编/c语言,跟基本的数据结构(链表),如果不会汇编.推荐王爽的汇编语言跟x86从实模式到保护模式,再看这本书会比较快.
另外此书有一点瑕疵就是elf格式那块讲得不是很明白.推荐cousera南京大学开设的程序的表示、转换与链接(https://www.coursera.org/learn/jisuanji-xitong),跟<深入理解计算机系统>的第7章链接知识.
《操作系统真象还原》读后感(四):书评
这本书就是实现一个简单的操作系统在bochs虚拟机上面,主要内容有:操作系统基础、部署 工作环境、编写 MBR 主引导记录、完善 MBR 错误、保护模式入门、保护模式进阶和向内核迈进、中 断、内存管理系统、线程、输入输出系统、用户进程、完善内核、编写硬盘驱动程序、文件系统、系统 交互等核心技术。 操作系统的主要内容也大概就是这些。
本书的表达:这本书对初学者来说已经是十分详细了,书中有列出代码十分齐全无缺漏,供读者参考还有讲解十分详细,无论是在程序的验证,程序的调试。
这是一本看得懂,学待会,深入理解操作系统原理的原创精品书。在开源的世界里,最耀眼的操作系统莫过于Linux。不过,如果想以短、平、快的方式了解系统实现的原理、阅读Linux源码并不是一个好的选择,因为Linux的代码量非常大,已经达到了上千万行的级别。
本书的特点有这几个:
用最少的代码展示操作系统的本质。这本书用了比较少的代码实现了一个功能完整的操作系统,仅千行,若要学习Linux的千万行读者可能会被枯燥困扰,导致无法继续阅读下去,一本书几千行的代码大大降低了学习操作系统原理的门槛。
这本书实现的操作系统的特点是程序量少,功能多。实现了内核线程、特权级变换、进程、任务调度、fork、exec、父子进程间的通信等。
用实际代码解释了锁、信号量及生产者消费者问题等操作系统中的难点、让这些深奥的技术易学习、易理解。支持文件系统、管道及shell操作等。
通俗易懂,易学易用。用通俗易懂、诙谐幽默的语言解释了操作系统的实现原理每节一个知识点、实战中逐步实现一个完整的操作系统的实现原理。每节一个知识点,在实行自主码代码时逐步实现一个操作系统。
我最喜欢的部分作者将操作系统与人类世界联系起来。把社会组织和人们之间的关系比作操作系统和用户进程的关系,十分形象简单明了的解释了操作系统是什么。所以觉得操作系统课本枯燥的,建议可以先观看此书,十分值得各位阅读。
阅读完此书让我知道了我们为什么要学习操作系统,我们学习操作系统并不一定让我们开发出更好的系统,它可以让我们了解计算机的底层是如何运作的,从而对我们学习工作中基于底层上的程序有了更深的认识。有利于我们今后学习工作。
《操作系统真象还原》读后感(五):读书笔记
读书报告--《操作系统真象还原》
作者简介:郑钢,毕业于北京大学,前百度运维高级工程师,对操作系统有着深入的研究。好运动,热衷于尝试前沿技术,乐于分享学习成功。郑钢历时19个月,行文60余万字,用6000多行代码实现了一个完整的操作系统。彻底剖析操作系统的原理,实现内核线程、特权级变换、用户进程、任务调度、文件系统等操作系统最基本的组成单元。用实际代码解析了锁、信息量、生成者、消费者问题。实现了一个简单的shell,易于理解内核命令、外部命令、管道等操作。
本书讲解了开发一个操作系统需要的技术和知识,主要内容有:操作系统基础、部署工作环境、编写MBR主引导记录、完善MBR错误、保护模式入门、保护模式进阶和向内核迈进、中断、内存管理系统、线程、输入输出系统、用户进程、完善内核、编写硬盘驱动程序、文件系统、系统交互等核心技术。
本书在表达上使用了一问一答的形式,常常会站在一个过来人的身份,讲述他之前学习到该知识点或遇到什么问题时,是怎么解开疑团。这使我更好的理解事务本身的概念或作用。本书用通俗易懂、诙谐幽默的语言解释了操作系统实现原理,每节一个知识点,使读者对操作系统的认识不再停留在感官上或死记硬背的概念上(操作系统是用户与计算机硬件系统之间的接口)。对于像我们这些刚入门学习操作系统的来说,是比较友好的。书中有着很多可圈可点的地方,比如:这本书设置了第0章:一些你可能正感到迷惑的问题。不同以往其他书籍,平白无故的抛出一个概念,对于理解某个新鲜的知识点一点帮助都没有,不理解的还是不理解,久而久之还可能产生厌烦以及没动力学下去。以下是我在这一章节中记忆比较深刻、难忘的地方。
开篇作者生动的向读者解释操作系统到底是什么来的?人们想狗猎时,可不可以自己先打造武器,然后拿着自己的武器去持猎? 当然可以,自己制造武器完全没有问题,但部落既然有现成的武器可用,何必自己再费事呢。另外,部落担不担心你随意制造武器会对他人造成伤害?当然会,所以部落不允许你自己制造武器了,人们只有申请的资格,给不给还是要看人家部落的意愿。这就是操作系统提供给用户进程一些系统调用,当用户进程需要某个资源时,直接调用便可,不用自己再费尽心思考虑硬件的事情了,由操作系统把资源获取到后交给用户进程,用户进程可以专注于自己的工作 但操作系统为了保护计算机系统不被损害,不允许用户进程直接访问硬件资源,比如用户进程将操作系统所占据的内存恶意覆盖了,操作系统也就不复存在了,没有操作系统的话,计算机将会瘫痪无法运作。当人们想和远方的朋友说话时,虽然可以徒步走到亲朋好友身边再对其表达想说的话,但社会组织 已经给提供了邮局和电话,何必自己再大老远跑一趟呢。这就是操作系统(社会组织)提供的资源。两个人想在起生活,要不要定先结婚呢?完全不用,领不领证都不会阻碍人们在一起生活,但是社会组织为了方便人口管理做了额外约束。不领证的话,至少社会组织无法预测未来人口数量趋势,无法做出宏观调控,甚至这是找到你家人的一种方法。这就如 Linux 系统中的内存管理,分别要记录哪些页是 Active ,哪些是“脏页飞不记录会不会影响程序执行,当然不会,记录这些状态还不是为了更好地管理内存吗。
这样的例子,很具有带入感,理解某个事物的概念与作用变成了一个不那么困难的事情,还会使读者有动力往下看。又好比作者对物理地址、逻辑地址、有效地址、线性地址、虚拟地址的区别。几个概念如何能使读者更好的理解呢?作者是这样解释的:物理地址就是物理内存真正的地址,相当于内存中每个存储单元的门牌号,具有唯一性。不管在什么模式下,什么虚拟地址、线性地址,最终都要以物理地址去访问内存,只有物理地址才是内存访问的终点站。 在实模式下,“段基址+段内偏移地址”经过段部件的处理,直接输出的就是物理地址, CPU 可以直接用此地址访问内存而在保护模式下,"段基址+段内偏移地址”称为线性地址,不过,此时的段基址已经不再是真正的地址了,而是一个称为选择子的东西 它本质是个索引,类似于数组下标,通过这个索引便能在 GD 中找到相应的段描述符,在该描述符中记录了该段的起始、大小等信息,这样便得到了段基址。若没有开启地址分页功能,此线性地址就被 作物理地址来用,可直接访问内存 若开启了分页功能,此线性地址又多了 个名字,就是虚拟地址 ,虚拟地址、线性地址在分页机制下都是 回事) 虚拟地址要经过 页部件转换成具体的物理地址,这样PU才能将其送上地址总线去访问内存无论在实模式或是保护模式下,段内偏移地址又称为有效地址,也称为逻辑地址,这是程序员可见的地址 这是因为,最终的地址是由段基址和段内偏移地址组合而成的。由于段基址已经有默认的,要么是在实模式下的默认段寄存器中,要么是在保护模式下的默认段选择子寄存器指向的段描述符中,所以只要给出段内偏移地址就行了,这个地址虽然只是段内偏移,但加上默认的段基址,依然足够有效线性地址或称为虚拟地址,这都不是真实的内存地址。它们都用来描述程序或任务的地址空间,由于分页功能是需要在保护模式下开启的, 位系统保护模式下的寻址空间是4GB所以虚拟地址或线性地址就是4G的范围。
要说我最喜欢的部分就是第9章--线程,在看这本书之前我只是知道进程与线程的一些抽象的概念,实质上进程和线程到底是什么?这也激起我学习第9章的兴趣。在第9章开头部分我就了解到进程。为了充分利用计算机硬件资源,要让尽可能“同时”多做一些工作--由处理器执行某段程序代码来完成,而这里的程序代码就是进程。一个进程可以完成项工作有的时候,工作往往并不简单,它由多个“子工作”组成,因此,我们需要让进程尽可能“同时”多做些子工作,这些子工作也得由程序代码完成,完成这些子工作的程序就是线程。另外在这章,作者还使用了一些生动的例子。单线程进程就好比果厨房中只有一个工作人员,即配菜、炒菜、洗涮厨具等这几样工作都是一个人做,那么厨房的工作效率必然会很低,因为此时厨房中就一个线程。多线程就好像厨房人手多了,工作才更高效,因此为配菜、炒菜、洗涮厨具专门配备了个工作人员,也就是说进程内的线程多了。执行流、调度单位、运行实体等概念都是针对线程而言的,线程才是解决问题的思路、步骤,它是具有能动性的指令,因此只有它才能上处理器运行,即一切执行流其实都是线程,因为任何时候进程中都至少存在一个线程。进程独自拥有整个地址空间,在这个空间中装有线程运行所需的资源,所以地址空间相当于资源容器,就像鱼缸为鱼提供了水。因此,进程与线程的关系是进程是资源容器,线程是资源使用者。进程与线程的区别是线程没有自己独享的资源,因此没有自己的地址空间,它要依附在进程的地址空间中从而借助进程的资源运行。说白了就是线程没有自己的页表,而进程有。
现代操作系统都是多用户多人户操作系统,每个任务要被调度到处理器上分时运行,运行一段时间后再被换下来,有调度系统根据调度算法选下一个线程到处理器。但是对于调度问题很自然的接踵而来。在这一章节里,我知道了操作系统为每一个进程提供了一个PCD,process control block,即程序控制块。这个PCD就好比进程的身份证,用来记录与此进程相关的信息,比如进程的状态、PID,优先级等。每个进程都有自己的PCD,把所有的PCD放到一张表格中维护,这就是进程表,调度器就是根据这张表选择到处理器上运行的进程。PCB 没有具体的格式,其实际格式取决于操作系统的功能复杂度,而基本的该有的内容有:寄存器映像、栈、栈指针、进程状态、时间片、优先级、页表、打开的文件描述符以及父进程。因为PCD包含了“进程状态”解决一个疑问--进程被换下的原因是什么?下次调度器还能把它换上处理器运行吗?比如进程状态为阻塞态,下次就不能把他调度到处理器上。因为PCD包含时间片,表示当时间片的值为0时,该进程在CPU上的运行时间到了,需要将该进程从处理器上换出,新的进程被调度到处理器上运行。而PCD中的页表就表示该进程的地址空间。那么PCD上的寄存器映像是什么来的呢?“寄存器映像”是用来保存进程的“现场”,进程在处理器上运行时,所有寄存器的值都将保存到此处。一般情况下它位于 PCB 的顶端,不过位置也不固定,具体位置取决于栈指针的位置,总之它会在 PCB 中上下滑动。“寄存器映像”的位置并不固定,原因就是“寄存器映像”存储到内核栈中,通常情况下进程或线程被中断时,处理器自动在 TSS 中获取内核栈指针,这通常是 PCB的顶端,因此通常情况下“寄存器映像”位于 PCB 的顶端。但有时候进程或线程的上下文,也就是“寄存器映像飞并不是在中断发生时保存到栈中的,而是在内核态下工作时,枝指针己经发生了变化时才向栈中保存“寄存器映像飞比如线程主动让出处理器,这时候就得保存线程的现场,此时“寄存器映像”必然就不在PCB 顶端了。内核态未必都是关中断的状态,可以在开中断下执行内核代码,否则就不会接收时钟中断,进而就不会调用调度器,也就无法进行任务调度了。鉴于“寄存器映像”的位置并不固定,在 PCB 中还要维护个“栈指针 成员,它记 录0级栈栈顶的位置,借此找到进程或线程的“寄存器映像”。要加载一个任务上处理器运行,任务由哪来?也就是说,调度器从哪里才能找到该任务?要解决此问题,就是要单独维护一个进程表,将所有的 PCB 结构加载到此表中,由调度器直接在进程表中找相应进程的 PCB ,从而获取到对应进程的信息,将其寄存器映像加载到处理器后,新进程就开始运行了。进程使用的栈也属于 PCB 部分,不过此栈是进程所使用的 特权级下内核栈(并不是特权级下的用户栈) 栈在 PCB 中,这听上去有点不可思议,但细想一下还是觉得合理的和进程相关的所有资源都应该集中放在一起,这样才方便管理。在这一章节里,作者罗列出来的问题正是我们入门操作系统学习时所疑惑的点。读完这一部分,我对进程、线程都有了新的认识。
操作系统的各个部分层层递进、相辅相成,你中有我,我中有你,各个部分之间的相互配合支撑起了电脑这一概念,让许多人即使不学习深入的知识也依然能够顺畅的使用着电脑,操作系统的功劳不可谓不高。构成操作系统的核心代码精简起来几千行就可以了,比起那些动辄上万甚至数十万的代码量的大程序少的不是一星半点。然而就是这几千行代码所涉及的思想,所涉及的理论浓缩了不知何几的计算机专业的前辈甚至各行业的前辈的心血。
就我个人而言,我就得收获还是蛮多的。我了解了工作环境的配置,了解了MBR以及MBR的进入的步骤,实模式只能访问1MB的内存空间,BIOS在ROM中。开机上电后CS:IP指向内存0xfff0,这里有个跳转语句,转到fe05b才是真正的BIOS程序,之后检测内存,显卡灯,建立数据结构,中断向量表和填写中断例程。了解了解到段的大小统一64KB,段基址代表内存的起始,偏移地址代表段内偏移量。section是为了让程序员在逻辑上将程序划分为几个部分,伪指令。了解到了全局描述符和局部描述符。全局描述符(GDT)相当于描述符的数组,可以用选择子中提供的下标在全局描述符表中索引描述符,位于内存中,需要GDTR寄存器指向他CPU才知道在哪。在保护模式下由于段基址已经存入段描述符,段寄存器没必要再存段基址了,所以段寄存器存入选择子,通过选择子在GDT中找到段描述符从而得到内存段起始地址和段界限值。选择子低2位存储了RPL(可以表示0、1、2、3四种特权级),第2位是TI位用来选择是GDT还是LDT索引描述符。而选择子的索引部分有13位,所以最多索引8192个段,和GDT存储的数量相同。第五章:我了解到了快表虚拟地址到物理地址转换有一个缓存器,快表,存储少量的转换关系,能加快转换速度。转换时一般先查快表查不到再查页表项。
大致阅读了《操作系统真象还原》后,我对操作系统的认识有改变的。之前只知道裸机有了操作系统才能更好的方便人们使用,但是对计算机偏硬件的知识知道的甚少。现在至少对操作系统以及其运行机制等都有了新的认识。这本书起着引领的作用,唯独美中不足的地方是:语言有时候过于口语化,看上去好像想到什么就写什么,有些地方是可以稍微精简提炼一点,也可以降低读者的阅读量。但是总的来说《操作系统真象还原》这本书还是很推荐大家去看的,对你入门操作系统有着很大的帮助。阅读此书,我有如下反思以及对阅读这类书籍态度的反思:很多时候对于一个新鲜的知识点是兴致勃勃的,很想认真阅读一番。但是总会三心二意,看一会就去忙其他事甚至会犯困。对于这本书中的代码,我也有尝试学习理解,但是总的来说还是存在很多不理解的地方,需要我继续学习其他相关知识,扩充思维,开阔视野。这本书还提醒我不能满足于当下,需要我去了解和学习的还有很多。
如果认为本文对您有所帮助请赞助本站