第三次阅读赵炯博士的《linux内核代码完全注释》:序
这是我第三次阅读linux内核代码完全注释了,当然前两次也没有读完,第一次读到第五章,第二次第七章。
所以说,赵炯博士对我最大的帮助时介绍了intel386的结构,以及内核编程的方法。
至于真正的内核源代码,我还真没看多少。
前几天,就是上周周日,我终于完成我梦想的一小段的了,我的梦想是什么呢?
不妨贴一贴一年前发的微博。

我想做自己的计算机系统,本来这应该是一个简单的梦想,但是随着人们对效率的追求,如今的CPU再也不是典型的
架构,超流水线,寄存器重命名,乱序,预测。
如今,指令集作为软件和硬件之间的接口这句话太对了,整个计算机系统就像一个沙漏。
沙漏的下面是复杂的硬件实现,片上并行,SIMD,多核,多级缓存,提供了那样的一个接口-指令集。
而沙漏上面是汇编器,链接器,加载器,动态库,目标文件格式,可执行文件格式,使用指令集提供的服务。
如今想要对整个计算机有一个全景式的描述就很难了,更何况计算机要用在工厂上,多台计算机相互合作,来完成一个工作。
为什么我们需要全景式的描述:
在学数据结构和算法的时候,我们希望我们能看到算法的执行过程,很多时候讲不明白的,一看就明白了。
这就是我们希望数据可视化的原因,
所以,其实我希望的是,打造一个可视化的计算机系统。
它会有不同层级的可视化,操作系统级别的可视化,你会看到进程之间飞速切换,以及进程管理是怎么回事。一个可执行文件怎么样从磁盘里
被加载到内存里,映射又是怎么建立的,然后创建表,以及free,malloc在整个内存上是怎么操作的。
指令级的可视化,你将会看到一个指令从内存加载到指令寄存器,被译码,被执行,整个cpu的寄存器都随之而变。
最后是逻辑门级的可视化,我们看到电子真在这样的汪洋大海里遨游。
太好了,为什么只做图片呢?
千言万语比不上一张图,而千万张图比不上动态图,而千万张动态图,不如我们写一个这样的可视化软件。
当时用vhdl写cpu的时候,设计了这样一个图:

爱因斯坦说我思考问题时不是语音思考,而是用一幅幅能动的跳跃的图像来思考,思考完后我还要费很大力气用语言表述出来。
这样看来是合情合理的。
第三次阅读赵炯博士的《linux内核代码完全注释》:序的更多相关文章
- 赵炯博士《Linux内核完全注释》
赵炯:男,1963年10月5日出生,江苏苏州人,汉族. 同济大学机械工程学院机械电子教研室副教授,从事教学和科研工作. 现在主要为硕士和博士研究生开设<计算机通信技术>.<计算机控制 ...
- linux内核代码注释 赵炯 第三章引导启动程序
linux内核代码注释 第三章引导启动程序 boot目录中的三个汇编代码文件 bootsect.s和setup.s采用近似intel的汇编语法,需要8086汇编器连接器as86和ld86 head ...
- Linux内核分析第三周学习博客——跟踪分析Linux内核的启动过程
Linux内核分析第三周学习博客--跟踪分析Linux内核的启动过程 实验过程截图: 过程分析: 在Linux内核的启动过程中,一共经历了start_kernel,rest_init,kernel_t ...
- 阅读linux内核代码的工具-- Source Insight
http://blog.csdn.net/luckyaslan/article/details/7869235 Step 1:安装Source Insight并启动程序 可以进入图1界面,在工具条上有 ...
- Linux内核0.11代码阅读(转)
最近决定开始阅读Linux 0.11的源代码. 学习Linux操作系统的核心概念最好的方法莫过于阅读源代码.而Linux当前最新的源代码包已经有70MB左右,代码十分庞大,要想深入阅读十分困难.而Li ...
- Linux内核分析——第三周学习笔记20135308
第三周 构造一个简单的Linux系统MenuOS 计算机三个法宝: 1.存储程序计算机 2.函数调用堆栈 3.中断 操作系统两把宝剑: 1.中断上下文的切换:保存现场和恢复现场 2.进程上下文的切换 ...
- Linux内核分析第三周——构造一个简单的Linux系统MenuOS
构造一个简单的Linux系统MenuOS 李雪琦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/UST ...
- Linux内核完全注释阅读笔记1:O(1)时间复杂度查找timeout定时器
前言 一直有Linux kernel情节,之前也一直在看Linux kernel相关的书和代码,但是每次到最后又由于兴趣转变而荒废了.这次终于静下心来想把Linux内核相关的代码好好看看,算是对自己的 ...
- linux内核分析第三周
20135103王海宁 linux内核分析第三周 http://mooc.study.163.com/course/USTC-1000029000 按照课堂提供的方法,命令行一行行敲上去,我是手机缓 ...
随机推荐
- spring mvc 中文乱码 post与get的方法解决
spring mvc表单提交中文参数乱码问题 今天测试spring mvc ,中文乱码,在web.xml中加上 <filter> <filter-name>encodingF ...
- Linux守护进程详解(init.d和xinetd) [转]
一 Linux守护进程 Linux 服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台 的守护进程来执行的 ...
- django 外键 ,django __
data sqlite> select * from author; id name age 1 jim 12 2 tom 11 sqlite> select * from book; i ...
- [转]深入hibernate的三种状态
学过hibernate的人都可能都知道hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别 ...
- Cookie操作类 实现记住用户名和密码的功能
import java.util.Hashtable;import java.util.Iterator;import java.util.Set;import javax.servlet.http. ...
- Qt之透明提示框
简述 经常使用企鹅的小伙伴一定对登录失败的提示框很熟悉,主要涉及窗口透明并添加图标.提示信息.关闭按钮的显示等. 我们可以利用QWidget创建一个提示框,然后通过样式设置我们想要的效果. 简述 效果 ...
- hdu 4614 pieces 状态DP
题意:给你一个长度小于等于16的字符串,每次可以删除一个回文传,问你最少删除干净的字数. 状态+dp dp[i] = min(dp[i],dp[j]+dp[j^i]);(j是i的字串): 连接:htt ...
- [Web前端系列之_Firebug_00_序]
[因] 以前一直把Firebug当做参考他人网站界面结构的工具,看看css,js等,没有深挖.这段时间在项目组里主要充当前台工作,也有空,就准备把前端给精通点,firebug作为入手点. [参考资料] ...
- 20160123.CCPP详解体系(0002天)
程序片段(01):字符.c 内容概要: 转义字符 #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <stdi ...
- 【英语】Bingo口语笔记(71) - shit系列