• 自己动手操作系统 pdf 自己动手操作系统 自己动手写操作 系统 pdf
  • 本书用丰富的实例代码,一步一步地指导读者用C语言和汇编语言编写出一个具备操作系统基本功能的操作系统框架,不同于其他的理论型书籍,本书提供给读者一个动手实践的路线图。用理论指导动手实践,用实践深化理解...
  • 本书在详细分析操作系统原理的基础上,用丰富的实例代码,一步一步地指导读者用C语言和汇编语言编写出一个具备操作系统基本功能的操作系统框架。本书不同于其他的理论型书籍,而是提供给读者一个动手实践的路线图。...
  • 自己动手操作系统_于渊版.pdf自己动手操作系统_于渊版.pdf
  • 所谓填补空白,具体说就是让像我一样的操作系统爱好者在读完本书之后,能够有信心去读其他比较流行的开源的操作系统代码,有能力从零开始自己动手操作系统,而这个任务第一版已经完成了。 那么为什么我又写作了第...
  • 自带动手写操作系统,扫描版本的,字迹不是很清晰,可以阅读。
  • bochsrc.bxrc Bochs 配置文件,如果系统中安装了 Bochs-2.1.1 可直接双击之运行。其它细节请见书第 2.7 节。 godbg.bat 调试时可使用此批处理文件。它假设 Bochs-2.1.1 安装在 D:\Program Files\Bochs-2.1.1\ 中。...
  • 本书起源于中国电子工业出版社出版的一本书:《自己动手操作系统》(于渊著)。我对《自》一书中使用商业软件做为演示平台比较惊讶,因为他以为《自》所面向的主要受众应该是学生,那么一本介绍只有商业软件才能...
  • 本书内容侧重于逐步指导构建一个迷你操作系统,可作为操作系统DIY者参考。 本pdf清晰、完整,带有书签。
  • 最近开始看《自己动手操作系统》,虽然很早以前就读过一点点,但一直没有机会动手实践。本着光说不练假把式的原则, 今天动手实践了开头的一部分。(说得这么正经其实你就是看了一点点吧!囧)废话不多说,在这里...

    最近开始看《自己动手写操作系统》,虽然很早以前就读过一点点,但一直没有机会动手实践。本着光说不练假把式的原则,

    今天动手实践了开头的一部分。(说得这么正经其实你就是看了一点点吧!囧)废话不多说,在这里做一个小小的总结。

    实验环境:

    操作系统:win7旗舰版64位 

    汇编编译器:NASM  2.12.02

    虚拟机:VirtualPC_2007

    软盘/虚拟软盘 写引导扇区工具:FloppyWriter.exe

    步骤

    • 抄袭(这个这个)了书中的汇编代码,然后用NASM编译,生成boot.bin文件。
    • 将boot.bin写入软盘映像文件中,当然这里是写入指定的位置,具体来说就是对应软盘的第一个扇区。
    • 虚拟机中用设置用软盘启动,启动文件当然设置为我们上面做好的启动软盘映像啦。
    • 启动虚拟机,然后,bingo!


    问题

    如何将boot.bin写入到软盘映像中正确的位置(引导扇区)。


    为了印证随后的确将boot.bin写入了正确的位置,先查看生成的boot.bin的内容,用任意二进制查看软件均可。我用的是BinaryViewer.可以看到其中的内容为:



    用UltraISO生成软盘映像,然后尝试用UltraISO将boot.bin写入其中,我的步骤如下(勿喷,小生对UltraISO不是特别熟悉):

    操作后的软盘映像文件内容为:

    好吧,确实写入了,但是并没有对应软盘的第一个扇区,o(╯□╰)o,我不太明白。


    无奈,利用作者提供的小工具FloppyWriter.exe将boot.bin写入UltraISO软盘映像文件,写入成功。写引导扇区后的软盘内容如下:

    可以看到成功写入了boot.bin,并确实在第一个扇区。

    虚拟机中设置此软盘映像启动。启动失败。(o(╯□╰)o)

    好吧,别瞎折腾了!


    还是按照书中的步骤,用VirtualPC的软盘制作向导生成软盘印象文件,然后将boot.bin写入其中,内容如下:


    显示预期的字符,成功。

    对于为什么不能直接用UltraISO生成的软盘启动,还是有些困惑,希望能得到解答。可能VirtualPC_2007对软盘映像文件的确有特殊的格式要求。



    
    展开全文
  • 分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇...分享知识,造福人民,实现我们中华民族伟大复兴!   ... 用一个月左右的时间

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   


      用一个月左右的时间读了《自己动手写操作系统》,这是一本让人读着很过瘾,却也特别累的一本书。

    http://ike.126.com

      对操作系统的兴趣由来已久,只是一直未能找到入门之径。操作系统教材是个令人生畏的东西,它可以告诉人有什么,却不能告诉人为什么,从那里了解的操作系统有如盲人摸到的象,得到各个部分,却不能拥有整体,加之缺乏实践的支持,理论显得苍白空洞。如Linux般的开源操作系统,虽然可以让人坐拥全部源码,但一来规模庞大,让人不知从何入手,二来源码背后更多的是业务——操作系统和硬件知识,不了解业务的人很难凭一己之力破解源码的奥秘。客观如此,更重要的还是主观的不努力。

      《自己动手写操作系统》则为如我一般挑剔的人打开了一扇门,从一点一滴的小处着手,一步步构建出一个简陋的操作系统雏形——Tinix,虽然它还不具备任何实际的价值,甚至算不上一只五脏俱全的麻雀,但对于想走近操作系统的人来说,这已经足够了,如果能够随着它一路走来,至少可以具备更进一步的基础,再去遨游广阔天地,便不会迷失于庞杂的理论与源码之中。

      这本书的名字给人的提示是,它是一本以实践为基础的书,因此,阅读之初我便给自己定下了步步紧跟的策略。照着书敲代码也难免出错,再者书中有一些遗漏,只有对比光盘中提供的源码才能发现其中的细微之处,所以,常常是一段代码要花相当长的时间进行调试。实践证明,这种方法需要花费相当的精力,这也是我为什么会认为读这本书很累的原因。但是这种做法对于理解书中内容大有裨益。看明白,做一遍,调试,这是几个截然不同的境界。很多细节的东西,只有经过调试才能发现。即便是自己编写的代码,如果没有经过调试,恐怕也难说真正的理解。

      作者在后记中写到,这本书最大的价值在于,它让操作系统的实现这个问题变得具备“可操作性”。正是因为这样,我才可以追随它一步步走来。在这点上,我读到第三章《保护模式》就已经体会颇深了。我曾经读过很多关于保护模式的内容,不过,由于缺乏实验,我只是了解一些概念,却不曾深刻体会。在第三章中,通过一个个简单的小例子,切换至保护模式,设置GDT和LDT,使用分页,中断处理等等书本上的概念活灵活现的展现在我的面前,那些艰涩的概念一下子便得再简单不过了。

      市面上关于源码剖析的书很多,但是,即便像侯捷先生这样教育大家编写的《深入浅出MFC》、《STL源码剖析》大多数情况下也只是讲了怎么做,而无法说出为什么,原因很简单,这些书是站在旁观者的角度看问题,而很多问题只有开发者才是真正理解的。所以,这些源码剖析的书有其价值,但深度上还存在相当的欠缺。这本书的作者恰恰是站在了开发者的角度来讨论问题,所以,我们有机会看到了一个思考的过程,而不仅仅是一个结果。这一点从第六章《进程》中时钟中断处理程序的一步步进化便得以管中窥豹。

      不得不提一下的是作者的写作功力,读过了许多生涩的技术书籍,这本读起来很舒服的书倒显得有些另类。它属于我心目中期盼的那种“形神兼备”的好书,正是作者相当不错的表达,才是这本书让人享受技术的同时又可以体味阅读的乐趣。当然,其中还是有些技术细节让人昏昏欲睡。

      读书,首先要找到适合自己的书,这样我们才能从中有所收获,毕竟,技术书籍中很少能够找到满足所有层次需要的书。《自己动手写操作系统》的定位是一本入门书,显然,它不适合已经过了这个阶段的人,如果因此埋怨这本书档次太低,那就怪不得旁人,因为自己走错了路。

      如果你和我一样,对操作系统有兴趣却不得门径,不妨《自己动手写操作系统》。

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • 含有自己动手操作系统pdf版以及附带的光盘内容
  • 自己动手操作系统pdf+源码+工具,整合到一起,免得大家到处找。
  • 原链接年久失效,请转到115网盘下载完整PDF书,http://115.com/file/dp7nifwi
    原链接年久失效,请转到115网盘下载完整PDF书,http://115.com/file/dp7nifwi
    
    展开全文
  • 自己动手写嵌入式操作系统(文字版) 非常清晰文字PDF
  • 《orange s:一个操作系统的实现》从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个操作系统框架的完成过程。书中不仅关注代码本身,同时关注完成这些代码的思路和过程。本书不同于其他的理论型书籍,而是...
  • 很喜欢《自己动手操作系统》这本书,但现在这本书已经绝版了。在这里分享一下这本书的高清电子版和源代码,感兴趣的人可以下载一下。 链接:https://pan.baidu.com/s/1lPXg-Airu2NFjSaTwX67jQ 提取码:sdfr 复制这...

    很喜欢《自己动手写操作系统》这本书,但现在这本书已经绝版了。在这里分享一下这本书的高清电子版和源代码,感兴趣的人可以下载一下。
    链接:https://pan.baidu.com/s/1lPXg-Airu2NFjSaTwX67jQ
    提取码:sdfr
    复制这段内容后打开百度网盘手机App,操作更方便哦

    展开全文
  • 2019-4-26 AM 9:15 前言:记得上初中时,在一张英语报上看到一篇关于史蒂夫乔布斯的文章,那时他才20多岁,就已经达到人生的巅峰,可谓意气风发,我的内心对其充满崇敬之意。联想到表哥家的那台windows95大块头电脑...

    2019-4-26 AM 9:15

    前言:记得上初中时,在一张英语报上看到一篇关于史蒂夫乔布斯的文章,那时他才20多岁,就已经达到人生的巅峰,可谓意气风发,我的内心对其充满崇敬之意。联想到表哥家的那台windows95大块头电脑,时常偷偷玩上两把魔兽争霸,那时,已经对这个魔术般奇幻的机器充满好奇。再后来一直到大学,在偌大的图书馆看到关于计算机的书籍,里边总是浮现一些不明所以的代码,既感到神奇的同时也暗下决心一探究竟,我记得第一次运行hello world程序的狂喜心情,然后这种对计算机技术的热爱就一直延续至今。很纯粹的热爱,就想弄明白操作系统的运作原理,便想依照于渊老师的《自己动手写操作系统》做一个小的系统内核,真正属于自己的!想想都有种莫名的激动。

    基本上,书中都是在虚拟机上运行,我手边有一个基本上不用的联想Y460的笔记本电脑,我决定直接在这个机器上做实验,不知是不是对不起我的爱机?

    以前实际上是有过类似的写操作系统的经验的,但因为没有任何文档记录,现在得一切从头开始。这两天已经摸索出基本测试思路:1.使用notepad++文本编辑器编辑好系统代码,asm格式。2.使用NASM转为格式为bin文件 3.直接使用rawrite写入U盘 4.使用真机测试

    第一章--最小的“操作系统”

    最最简单的“操作系统”就是一个最最简单的引导扇区(Boot Sector)。虽然它不具有任何功能,但是它却能够直接在裸机上运行,不依赖其他软件。一个引导扇区是512个字节,并且以0xAA55为结束标识的扇区。

    /****************************************************************************************************************************************************引导扇区(Boot Sector) 通常指设备的第一个扇区,用于加载并转让处理器控制权给操作系统。

    0x07C00相当于十进制中的:31744

    ***************************************************************************************************************************************************/

    1. org 07C00h                          ; 告诉编译器程序加载到07C00处  
    2.        mov ax, cs  
    3.        mov ds, ax  
    4.        mov es, ax  
    5.        call DispStr                     ; 调用显示字符串例程  
    6.        jmp $                    ; 无限循环  
    7. DispStr:  
    8.        mov ax, BootMessage  
    9.        mov bp, ax                       ; es:bp = 串地址  
    10.        mov cx, 16                       ; cx = 串长度  
    11.        mov ax, 01301h               ; ah = 13, al = 01h  
    12.        mov bx, 000Ch                ; 页号为0(bh = 0) 黑底红字 (bl = 0Ch,高亮)  
    13.        mov dl, 0  
    14.        int 10h                          ; 10h号中断  
    15.        ret  
    16. BootMessage:  db "Hello,OS world!"  
    17. times 510-($-$$)   db   0               ; 填充剩下的空间,使生成的二进制代码恰好为512字节  
    18. dw 0xaa55                               ; 结束标志  

    1、org 07C00h

    org伪指令: org + 数值表达式

    其中,org是操作码,不可省略。数值表达式给出偏移地址值,即org语句后的指令或数据以数值表达式给出的值作为起始的偏移地址。数值表达式必须是一个可计算得到的正整数,数值范围在0~65535之间。

    org伪指令用来指出其后的程序段或数据块存放的起始地址的偏移量。汇编程序汇编时把语句中表达式的值作为起始地址,连续存放org语句之后的程序和数据,直到出现一个新的org指令。若省略org语句,则从本段起始地址开始连续存放。

    在大多数情况下,不需要用org语句设置位置指针。由于段定义语句是段的起点,它的偏移地址为0000H,以后每分配一个字节,位置指针自动加1,所以每条指令都有确定的偏移地址。只有程序要求改变这个位置指针时,才需要安排org语句。通常org语句可以出现在程序中任何位置上。   

    org示例:

    在数据段中依次定义以下变量,由于此时没有使用org语句,则变量word1的偏移地址为0。
    word1 DW  1234h
    byte1  DB   56h
    word2 DW  abcdh
    其在数据段中word1,byte1,word2的存储位置如下图所示(采用小端存储,按单字节对齐)。

    在数据段中依次定义以下变量,由于此时使用org语句,则变量word1的偏移地址为1。
    org 0001h
    word1 DW  1234h
    byte1  DB   56h
    word2 DW  abcdh
    其在数据段中word1,byte1,word2的存储位置如下图所示(采用小端存储,按单字节对齐)。

    我们知道编译器本身在汇编时对指令的地址计算是相对地址,而对于引导扇区,是按绝对地址执行,那么对于用相对地址编译的执行码就要换算成绝对地址。一般而言,“真实开始执行的引导扇区”都会固定装载到07C00h处。

    由于编译器在编译时的地址是从第一行开始用0000h开始相对计算的,而且我们要写的是“引导扇区”程序,所以我们要将下面的代码加载到地址07C00h处,所以我们需要org 07C00h,通过该伪指令,将代码和数据加载到07C00h地址。

    2、jmp $

    $被称为当前位置计数器

    在汇编程序对源程序进行汇编的过程中,使用地址计数器来保证当前正在汇编的指令地址。地址计数器值可用“$”来表示,汇编语言也允许用户直接用“$”来引用地址计数器的当前值,因此,org $+5可表示从当前地址开始跳过5个字节存储单元,在指令和伪指令中,也可直接用“$”表示地址计数器的当前值。故jmp $进入了一个无限循环。

    3、int  10h

    int  10H号中断

    int 10H 是由BIOS 对屏幕及显示器所提供的服务程序。使用int 10H 中断服务程序时,先指定 AH 寄存器为下表编号其中之一,该编号表示欲调用的功用,而其他寄存器的详细说明,参考表后文字,当一切设定好之后再调用 int 10H。

    在这里我们只详细讲解本程序中的10号中断。由于ah=13,故调用编号为13的功能:即显示字符串。其中ES:BP=串地址,CX=串长度 ,AH=13,当AL=01h时,光标会跟随显示移动。BH为页号,BH=0表示页号为0,BL=0CH,表示属性,即黑底红字高亮。因此在调用10号中断之前,无非就是对各个寄存器进行初始化。

    4、times 510-($-$$)  db  0

    times:重复指令或数据

    times前缀引起指令被汇编多次。其中

    )次。也就是用0来填充剩下的空间,达到510字节。

     

    打开计算机电源;加电自检(POST);寻找启动盘,该系统设置从软盘启动,计算机检查软盘的0面0磁道1扇区,如果发现它以0xAA55结束,则BIOS会认为它是一个引导扇区;BIOS将该512字节扇区内容加载到内存地址0000:7c00;跳转到0000:7C00出将控制权交给这段引导代码。到此为止,计算机不再由BIOS中固有的程序来控制,而变成由操作系统的一部分来控制。

     

    展开全文
  • 很好的一部关于嵌入式入门的书籍,可以让你明白操作系统的构造以及明白一般嵌入式的实现构架
  • 自己动手操作系统高清扫描版pdf+随光盘工具floppy writer
1 2 3 4 5 ... 20
收藏数 4,802
精华内容 1,920