- 博客(27)
- 收藏
- 关注
原创 深入理解计算机系统_第七章_链接
文章目录章前导读编译器驱动程序章前导读链接是将各种代码和数据片段收集并组合成为一个单一文件的过程,这个文件可被加载到内存并执行。链接可以执行于编译时,也就是在源代码被翻译成机器代码时;也可以执行于加载时,也就是程序被加载器加载到内存并执行时;甚至执行于运行时,也就是由应用程序来执行。现在系统中,链接是由叫做链接器的程序自动执行的。链接器使得分离编译成为可能。这样我们可以独立修改和编译不同的模...
2019-06-02 20:53:36
779
原创 深入理解计算机系统_第六章_存储器层次结构
章前导读到目前我们只看到了一个简化的计算机系统模型,其中CPU执行指令,而存储器系统为CPU存放指令和数据,实际上存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。CPU寄存器保存最常用的数据;靠近CPU的小的、快速的高速缓存存储器作为一部分存储在相对慢速的主存储器中数据和指令的缓冲区域;主存储器存储在容量较大的、慢速磁盘上的数据,这些磁盘可以作为存储在通过网络连接的其他机器的磁...
2019-05-19 17:18:37
2040
原创 深入理解计算机系统_第五章_优化程序性能
检讨在公司就有同事给我指出过:“大段贴代码的技术博客都是垃圾”,如今反复的体味到这句话很对。技术博客确实应该保持篇幅适中,思路流畅简洁,我最近在看自己写的深入理解计算机系统系列文章,真是又长又臭,第三章和第四张我自己都看不下去,基本是在摘抄原文中的话,那人家干嘛看我这博客,人家自己买本书不好的多?在我这里转一手,除了排版更垃圾没其他改变了,真是让人失望透顶了。接下来我写博客,一定要多加自己的理解...
2019-05-14 15:52:35
1645
原创 深入理解计算机系统[习题]_第二章_信息的表示和处理
[可以看到这个练习中,从 [ 1011 ] 扩展到 [ 11011 ] 再扩展到 [ 111011 ] ,它们都是 -5 的补码表示。可见有符号数位扩展时候,左边扩展符号位,不会对它的数值有影响。][而且也验证了,对于无符号数来说,每一个数只有一种位向量表示,而对于有符号数(补码表示),同样都是-5,就有很多种表示,甚至是无限种,只要扩展符号位就可以。 -2019/5/6]A: 当 s...
2019-05-07 13:53:38
615
原创 深入理解计算机系统_第四章_处理器体系结构
现代微处理器可以称得上是人类创造出的最复杂的系统之一。一块手指甲大小的硅片上,可以容纳一个完整的高性能处理器、大的高速缓存,以及用来连接到外部设备的逻辑电路。从性能上来说,今天在一块芯片上实现的处理器已经使 20 年前价值 1000 万美元、房间那么大的超级计算机相形见绌了。即使是在像手机、导航系统和可编程恒温器这样的日常设备中的嵌入式处理器,也比早期计算机开发者所能想到的强大很多。到目前为止,...
2019-01-15 15:28:29
2285
原创 《作为意志和表象的世界》_世界作为表象初论_叔本华
写在前面这一周有两件事情引发了我的思考,与本文主旨也有着隐晦的联系,而且都是单纯的思考事情本身,绝无针对任何人的意图,先说说这两件事情好了:每次写了新的阅读心得后,我都会分享在朋友圈和QQ空间,大致有两层意思,一是推动自己坚持看书不要懈怠,二是向有意了解我的人(倘若有幸有这样的人的话)介绍自己,我大概不会有机会亲口与每个人交谈,我的文章则(在我们都能耐下性子看纯文字的情况下)有这种机会,当...
2019-01-13 13:19:42
3496
原创 深入理解计算机系统[习题]_第三章_程序的机器级表示
深入,并且广泛 -沉默犀牛之前整理了第二张的习题,没想到访问量挺高的,看来还是有人需要习题和答案的,以后每看完一章书,就会对应的整理出那一章的习题。如果看完答案觉得不同,请看我的“深入理解计算机系统_第一部分_第三章_程序的机器级表示” 其中对这一章都进行了详细的介绍1.熟悉操作数的类型2.这个练习题要看上面的各个寄存器的字节数[看答案介绍内存引用总是用四字长寄存器给...
2019-01-11 09:30:10
2358
2
原创 2.《THE WISDOM OF LIFE》_叔本华
关于这个系列的更新有了一些调整,写在了整个系列的“写在前面”,为了不让你再多麻烦多点击几次,复述如下:“继马基雅维利后,我想开始学习叔本华,但是叔本华的思想我实在没办法在一周内看完,在此修改掉这个狂妄的目标,重定为一周至三周弹性更新,更新形式从介绍人物转为介绍书籍。”写在前面上周在苏州跟爸妈汇合,买菜回来的路上,爸说我不要年级轻轻弄得多么老成,好像想把什么事情都看透似的,我回答到:那就是我所...
2019-01-09 10:49:28
945
原创 2019年元旦九问
写在前面去年的元旦,我还任职于学校实验室负责人,在实验室的二楼写了一篇《你好,我是姜立明》(发表于QQ空间,一整年下来有16个人访问,这个访问量让我既开心又难过,开心在于自己写在文章中的那些秘密还没被人知道,心中窃喜;难过在于好不容易鼓足勇气写下自己的秘密却无人问津,心中失落)。早在几个月前,就已经有意图用几个问题来记录每个月的心态变化,想必一年下来,在翻看自己的心态变化过程,是非常有意思的,但...
2019-01-09 10:43:48
417
3
原创 1.《The Prince》_马基雅维利
写在前面我对这个系列的更新有两种想法:1.根据时间线索从古希腊哲学家一路学习过来 2.先学习自己及其感兴趣的哲学思想,最后再穿起来。最终选择了2,原因有两点:1.为了保证更新的频率,也为了保证自己学习的进度,从感兴趣的哲学家开始学习会提供给我更多的动力;2.在还没有自己理解的基础上,就按照时间线系统学习,只能让我最后充满其他学派的思想,而如果有了基础后,再进行相互的联系和对照,会产生出更多自己的...
2019-01-09 10:40:57
991
1
原创 写在前面
更新于2019/1/9之前这个文集一直在简书网站更新,我的第二篇文章1.5号发布后,1.6号就被强制设置为个人可见,并且没有给出任何理由,十分恼火,此后转在CSDN上继续更新(原本只想在CSDN 更新我的专业学习文章的,但无可奈何)更新于2019/1/1继马基雅维利后,我想开始学习叔本华,但是叔本华的思想我实在没办法在一周内看完,在此修改掉这个狂妄的目标,重定为一周至三周弹性更新,更新形式...
2019-01-09 10:34:04
150
原创 深入理解计算机系统_第三章_程序的机器级表示
深入,并且广泛 -沉默犀牛文章导读计算机执行机器代码,用字节序列编码低级的操作,包括处理数据、管理内存、读写存储设备上的数据,以及利用网络通信。编译器基于编程语言的规则、目标机器的指令集和操作系统遵循的惯例,经过一系列的阶段生成机器代码。GCC C语言编译器以汇编代码的形式产生输出,汇编代码是机器代码的文本表示,给出程序中的每一条指令,然后GCC调用汇编器和链接器,根据汇编代码生成可...
2019-01-01 15:58:41
1821
2
原创 深入理解计算机系统_第二章_信息的表示和处理
文章导读这一章介绍了计算机中信息(即二值信号)的表示和处理。信息存储十六进制表示法:介绍了十六进制的产生和十六进制、十进制、二进制之间的相互转换规律字数据大小:介绍了在不同机器和编译器中,数据类型数据在内存中所占的大小寻址和字节顺序 : 介绍了寻址方法和字节顺序(小端法、大端法),float与int的二进制表示有联系现在计算机存储和处理的信息以二值信号表示。对于有10个手指的人...
2018-12-17 20:03:08
2416
1
原创 深入理解计算机系统_第一章_计算机系统漫游
深入,并且广泛 -沉默犀牛写在前面今天是2018/12/14,还有一周我的实习期就结束了,发现自己的基础特别薄弱,选了基本提升基础的书籍,《深入理解计算机系统》是我将要看的第一本书,特别开这个系列文章,记录所学所得所想,也用作检验自己学习进度的指标之一。PS:大部分是摘抄书中原话,[]方括号中的内容是自己所想所得。计算机系统漫游所有的计算机都有相似的硬件和软件结构,它们又执行着...
2018-12-14 16:28:59
741
转载 Linux启动流程_LK流程_recovery/normal_boot(2.2)
深入,并且广泛 -沉默犀牛此篇博客原博客来自freebuf,原作者SetRet。原文链接:https://www.freebuf.com/news/135084.html写在前面的话写这篇文章之前,我只好假定你所知道的跟我一样浅薄(针对本文这一方面),所以如果你看到一些实在是太小儿科的内容,请你多加担待,这确实就是我目前的水平,谢谢。这里就开始啦!上一篇博客...
2018-12-10 10:47:22
2557
转载 Linux启动流程_LK流程_aboot_init(不包含recovery boot)(2.1)
深入,并且广泛 -沉默犀牛此篇博客原博客来自freebuf,原作者SetRet。原文链接:https://www.freebuf.com/news/135084.html写在前面的话写这篇文章之前,我只好假定你所知道的跟我一样浅薄(针对本文这一方面),所以如果你看到一些实在是太小儿科的内容,请你多加担待,这确实就是我目前的水平,谢谢。这里就开始啦!上一篇博客...
2018-12-10 09:43:44
1685
转载 Linux启动流程_LK流程_bootstrap2(1)
深入,并且广泛 -沉默犀牛此篇博客原博客来自freebuf,原作者SetRet。原文链接:https://www.freebuf.com/news/135084.html写在前面的话写这篇文章之前,我只好假定你所知道的跟我一样浅薄(针对本文这一方面),所以如果你看到一些实在是太小儿科的内容,请你多加担待,这确实就是我目前的水平,谢谢。这里就开始啦!上一篇我们已经分析过Kma...
2018-12-10 09:43:35
734
转载 Linux启动流程_LK流程_Kmain(0)
深入,并且广泛 -沉默犀牛此篇博客原博客来自freebuf,原作者SetRet。原文链接:https://www.freebuf.com/news/135084.html写在前面的话写这篇文章之前,我只好假定你所知道的跟我一样浅薄(针对本文这一方面),所以如果你看到一些实在是太小儿科的内容,请你多加担待,这确实就是我目前的水平,谢谢。首先要说的一点是,之前我总以为 LK = ...
2018-12-10 09:43:23
2629
原创 看其他文章时候的一些新的感悟
关于dts中platform device 和 i2c device 的级别问题之前写到过,kernel启动后从aboot_init进去一系列的解析DTS流程,这个流程中写到了,只会注册platform device,然后i2c device再由i2c bus来注册,当时的理解是platform device 和 i2c device是同等地位的,就像i2c device 与 spi devi...
2018-10-26 15:14:16
201
原创 Input_subsystem_从三个基础结构到事件上报流程
从三个基础结构到事件上报流程声明:这篇博客大部分来自https://blog.csdn.net/u014545515/article/details/53507567?utm_source=blogxgwz1我跟着这篇博客的思路一路下来,觉得非常有收货,也写入自己的感悟。广泛,并且深入 -沉默犀牛三个层级事件处理层:evdev.c 、mousedev.c核心层:input...
2018-10-17 18:17:12
604
原创 (二)设备结构模型_高级部分(Bus、Class、Device、Driver)
高级部分(Bus、Class、Device、Driver)深入,并且广泛 -沉默犀牛这篇文章只分析Bus、Class的作用,和表示它们的结构体。不分析接口函数BusBus是处理器与一个或者多个device之间的通道。在设备模型中,所有的device都通过bus相连,这意味着,系统中的每一个device都要连接在一个Bus上,这个Bus可以是内部Bus,虚拟Bus,或者platfo...
2018-10-16 16:26:45
1245
原创 (一)设备结构模型_低级部分(Kobject、Kset、Ktype)
低级部分(Kobject、Kset、Ktype)深入,并且广泛 -沉默犀牛我打算把设备结构模型分为两部分来写:1.低级部分,分析Kobject、Kset、Ktype2.高级部分,分析总线、设备、驱动如何联系首先以一张图介绍一下Kobject、kset、ktype的关系:...
2018-10-16 09:57:05
431
原创 (二)USB驱动程序_USB设备驱动(Host)
USB设备驱动(Host)深入,并且广泛 -沉默犀牛有了第一篇文章的基础,我们这篇文章来看一下USB设备驱动的源码。与其他的Driver一样,USB的driver也表现为一个结构体:struct usb_driver驱动整体结构在编写新的USB设备驱动时,主要应该完成的工作是probe()和disconnect()函数,它们分别在Device被插入和拔出的时候调用,用于初始化和...
2018-10-11 16:11:19
942
原创 (一)USB驱动程序_USB基础知识
深入,并且广泛 -沉默犀牛USB设备驱动分类USB驱动程序可以粗分为两类:一、主机(Host)系统上的驱动程序 ,这个驱动程序控制插入其中的USB设备二、设备(Device)上的驱动程序,这个驱动程序控制USB设备如何与主机通信为了举一个形象的例子,我得先展示一张图片,更细致的介绍一下以上的两种分类:HostDeviceUSB设备驱动(Mass sto...
2018-10-11 10:20:05
11003
原创 (三)从解析DTS到创建device_从device_node到并入设备驱动模型(结合源码)
从device_node到并入设备驱动模型此篇博客有很多参考其他文章的内容,由于参考内容繁杂,不一一标注角标了,在末尾会贴上所有参考博客的link,如有侵权,请联系本人处理,谢谢。深入,并且广泛 -沉默犀牛上一篇文章已经详细的分析了两个问题:1.如何根据Device Tree的信息,找到最适合的machine_desc2.如何将DTB转换成节点是device_node的树状...
2018-09-27 18:28:20
7378
原创 (二)从解析DTS到创建device_DTS的匹配和解析(结合源码)
@kernel启动流程_DTS解析(源码层面)此篇博客有很多参考其他文章的内容,由于参考内容繁杂,不一一标注角标了,在末尾会贴上所有参考博客的link,如有侵权,请联系本人处理,谢谢。深入,并且广泛 -沉默犀牛我认为作为初学者去学习kernel代码的一个重要方法就是:先知道这些代码是干嘛的,然后再找代码来验证想法。这样的探索顺序会变得事半功倍,让我们直接去看繁杂的代码来分析出代...
2018-09-26 15:17:29
3701
原创 Linux启动流程_LK流程(源码层面)_作废
此篇博客有很多参考其他文章的内容,由于参考内容繁杂,不一一标注角标了,在末尾会贴上所有参考博客的link,如有侵权,请联系本人处理,谢谢。深入,并且广泛 -沉默犀牛step1 从哪里开始执行,目前还不清楚,不作分析了。 step2 Bootloader(LK)LK的代码在bootable/bootloader/lk目录下在 bootab...
2018-09-07 20:34:12
1428
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人