美文网首页
Computer Systems A Programmers P

Computer Systems A Programmers P

作者: 半步江南 | 来源:发表于2018-11-21 17:10 被阅读6次

    学了太多杂七杂八的知识,特别是学到前端的那些各式各样的工具,总觉得很
    无趣,逻辑的无限抽象,无数次的分层,已经将前端的代码推向了一个超级细
    分的领域集合, 抽象到一定层次,每一个工具都是上手即用的锤子,好用无比,
    但说明书复杂,而且没有好的启发性,适用的领域太小,目前不符合本人的兴
    趣路线,还是回头看看操作系统的书,让心能够静下来,不用再被那些眼花缭
    乱的框架牵着鼻子走。

    这本深入理解计算机系统的书一直想看,但因为知道一些这方面知识,没有真
    的看两眼,今天实在觉得无聊,干脆找出来,玩一下,计算机系统说起来简单,
    实现起来却复杂至极,做为面向最终用户的交流媒介,操作系统必须做到连接
    底层硬件与用户的所有事情,解决无限的bug,提供稳定的环境。对我来说倒
    没有那么复杂,只是要用电脑写写代码,少出bug就好,重点只关心cpu、内存
    与中断,这些在学汇编的时候都接触过,现在很好奇,这本书会用什么角度来
    讲述这些知识。

    Reading_hello_from_keyboard.png

    通过这张系统的硬件组织与操作的图,我们可以了解到运行程序时发生了什么虽
    然要省去很多细节,当然未来将会一点点补充这些知识,不过现在还是先着眼于
    全局。

    最初,shell程序正在执行一个等待输入的死循环。当我们在键盘上键入./hello时,
    shell程序将每个字符读入寄存器,然后将其存储在内存中,如图所示。当我们按
    下键盘上的enter键时,shell知道我们已经输入了命令。然后,shell通过执行一系
    列指令来加载可执行的hello文件,这些指令将hello对象文件中的代码和数据从磁
    盘复制到主内存。这些数据包括字符串hello, world\n,最终它们被打印出来。

    通过DMA(direct memory access)技术将数据从硬盘直接传输到内存中,而不需要
    经过cpu。

    一旦hello对象文件中的代码和数据被加载到内存中,处理器就开始在hello程序的
    主例程(cs:ip跳转到hello程序所在内存)中执行机器语言指令。这些指令将从内存中
    复制“hello,world!”字符串的字节到寄存器中,然后再由寄存器输出到显示设备,
    在屏幕上显示出来。

    相关文章

      网友评论

          本文标题:Computer Systems A Programmers P

          本文链接:https://www.haomeiwen.com/subject/psucqqtx.html