这是我第三次阅读linux内核代码完全注释了,当然前两次也没有读完,第一次读到第五章,第二次第七章。

所以说,赵炯博士对我最大的帮助时介绍了intel386的结构,以及内核编程的方法。

至于真正的内核源代码,我还真没看多少。

前几天,就是上周周日,我终于完成我梦想的一小段的了,我的梦想是什么呢?

不妨贴一贴一年前发的微博。

我想做自己的计算机系统,本来这应该是一个简单的梦想,但是随着人们对效率的追求,如今的CPU再也不是典型的

架构,超流水线,寄存器重命名,乱序,预测。

如今,指令集作为软件和硬件之间的接口这句话太对了,整个计算机系统就像一个沙漏。

沙漏的下面是复杂的硬件实现,片上并行,SIMD,多核,多级缓存,提供了那样的一个接口-指令集。

而沙漏上面是汇编器,链接器,加载器,动态库,目标文件格式,可执行文件格式,使用指令集提供的服务。

如今想要对整个计算机有一个全景式的描述就很难了,更何况计算机要用在工厂上,多台计算机相互合作,来完成一个工作。

为什么我们需要全景式的描述:

在学数据结构和算法的时候,我们希望我们能看到算法的执行过程,很多时候讲不明白的,一看就明白了。

这就是我们希望数据可视化的原因,

所以,其实我希望的是,打造一个可视化的计算机系统。

它会有不同层级的可视化,操作系统级别的可视化,你会看到进程之间飞速切换,以及进程管理是怎么回事。一个可执行文件怎么样从磁盘里

被加载到内存里,映射又是怎么建立的,然后创建表,以及free,malloc在整个内存上是怎么操作的。

指令级的可视化,你将会看到一个指令从内存加载到指令寄存器,被译码,被执行,整个cpu的寄存器都随之而变。

最后是逻辑门级的可视化,我们看到电子真在这样的汪洋大海里遨游。

太好了,为什么只做图片呢?

千言万语比不上一张图,而千万张图比不上动态图,而千万张动态图,不如我们写一个这样的可视化软件。

当时用vhdl写cpu的时候,设计了这样一个图:

爱因斯坦说我思考问题时不是语音思考,而是用一幅幅能动的跳跃的图像来思考,思考完后我还要费很大力气用语言表述出来。

这样看来是合情合理的。

第三次阅读赵炯博士的《linux内核代码完全注释》:序的更多相关文章

  1. 赵炯博士《Linux内核完全注释》

    赵炯:男,1963年10月5日出生,江苏苏州人,汉族. 同济大学机械工程学院机械电子教研室副教授,从事教学和科研工作. 现在主要为硕士和博士研究生开设<计算机通信技术>.<计算机控制 ...

  2. linux内核代码注释 赵炯 第三章引导启动程序

    linux内核代码注释 第三章引导启动程序 boot目录中的三个汇编代码文件   bootsect.s和setup.s采用近似intel的汇编语法,需要8086汇编器连接器as86和ld86 head ...

  3. Linux内核分析第三周学习博客——跟踪分析Linux内核的启动过程

    Linux内核分析第三周学习博客--跟踪分析Linux内核的启动过程 实验过程截图: 过程分析: 在Linux内核的启动过程中,一共经历了start_kernel,rest_init,kernel_t ...

  4. 阅读linux内核代码的工具-- Source Insight

    http://blog.csdn.net/luckyaslan/article/details/7869235 Step 1:安装Source Insight并启动程序 可以进入图1界面,在工具条上有 ...

  5. Linux内核0.11代码阅读(转)

    最近决定开始阅读Linux 0.11的源代码. 学习Linux操作系统的核心概念最好的方法莫过于阅读源代码.而Linux当前最新的源代码包已经有70MB左右,代码十分庞大,要想深入阅读十分困难.而Li ...

  6. Linux内核分析——第三周学习笔记20135308

    第三周 构造一个简单的Linux系统MenuOS 计算机三个法宝: 1.存储程序计算机 2.函数调用堆栈 3.中断 操作系统两把宝剑: 1.中断上下文的切换:保存现场和恢复现场 2.进程上下文的切换 ...

  7. Linux内核分析第三周——构造一个简单的Linux系统MenuOS

    构造一个简单的Linux系统MenuOS 李雪琦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/UST ...

  8. Linux内核完全注释阅读笔记1:O(1)时间复杂度查找timeout定时器

    前言 一直有Linux kernel情节,之前也一直在看Linux kernel相关的书和代码,但是每次到最后又由于兴趣转变而荒废了.这次终于静下心来想把Linux内核相关的代码好好看看,算是对自己的 ...

  9. linux内核分析第三周

    20135103王海宁 linux内核分析第三周 http://mooc.study.163.com/course/USTC-1000029000  按照课堂提供的方法,命令行一行行敲上去,我是手机缓 ...

随机推荐

  1. 【原创】通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 ‘incorrect string value: '\xF0...

    这篇blog重点在解决问题,如果你对字符编码并不是特别了解,建议先看看 < [原创]通俗易懂地解决中文乱码问题(1) --- 跨平台乱码 >. 当然,如果只是针对解决这个Mysql插入报错 ...

  2. js学习之道:表单验证公共js

    /** 文件名称:CommonUtil.js 作者  : Yuce 编制时间: 2010-03-24 文件内容:一些常用的js公用类.工具类 包括方法: g_FormFieldIsNull    判断 ...

  3. 深入理解Java内存模型(四)——volatile

    volatile的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别.理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这 ...

  4. MySQL —— 程序连接时的驱动名称和URL

    CONNECTION_DRIVER :  com.mysql.jdbc.Driver  CONNECTION_URL :    jdbc:mysql://localhost/DB_NAME 

  5. U3D NGUI改变GameObject Activity闪烁的问题

    不是关闭再激活GameObject会闪烁,而是再激活时,NGUI渲染步骤不一致导致的闪烁. 并且文字激活后渲染要慢一帧,如果延迟一帧处理,又会导致精灵图片快一帧,图片重叠.这个测试结果不一定准确,先记 ...

  6. JavaScript判断浏览器类型及版本

    JavaScript是前端开发的主要语言,我们可以通过编写JavaScript程序来判断浏览器的类型及版本.JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另一 ...

  7. HDU 1513 Palindrome

    题目就是给一个字符串问最少插入多少个字符能让原字符串变为回文字符串. 算法: 用原串的长度减去原串与翻转后的串的最大公共字串的长度,就是所求答案. //#define LOCAL #include & ...

  8. Java 动态写轮眼 SharinganJPanel (整理)

      /** * Java 动态写轮眼 SharingganJPanel (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * 设计声明: * 1.虽然岸本是日本人,而我个人作为其模仿者,依 ...

  9. hibernate中使用fetch来决策性能方案

    什么时候用子查询,或者连接查询 一般多个数据的对应用子查询,单一行的数据用连接 (若要查询每个学生分别学了什么课程 ,若要fetch=join.fetch=select) 则是这种情况 Hiberna ...

  10. 深入学习Heritrix---解析CrawlController(转)

    当我们以Web UI方式使用Heritrix时,点击任务开始(start)按钮时,Heritrix就开始了它的爬取工作.但它的内部 执行流程是怎样的呢?别急,下面将慢慢道来. (一)CrawlJobH ...