阅读代码从来就是不可行的方法,有篇文章详细讲了这个事,很多人都觉得应该多读代码, 读好的代码,比如Donald Knuth。 但事实上, 只要简单让你描述一下最近读了什么代码,绝大多数人都说不上。文章在此Code is not literature

忍不住再说几句这篇文章,写得极好,它的一个核心观点:代码不是写给人看的,虽然无数人这么认为,也这么主张。事实仍然是,代码不是给人看的,而是交给机器运行的。当我们在理解他人代码时,并不能像阅读小说一样去阅读代码,而是像自然学家研究一块化石一样去调查它,解密它。有时往往需要把对方的代码亲手实现一遍,才真正理解。

基于以上的观点,所以我认为“耐住寂寞,阅读代码”不是一个可行的办法。大多数情况下,半途而废, 或是你通过阅读, 记住好多“内核代码”,一个月之后,全都忘记。

我认为“阅读代码”不是你的目的,学习才是你的目的,至于你要学习什么?从你的问题里,我无法得知,也可能你并不是很清楚。猜测一下可能是结合Linux内核代码学习操作系统原理, 又或者是学习C语言?目的不同,方法自然千差万别,所以希望能够修改问题。明确目的之后,再来谈方法。

--------------------------更新的分割线--------------------------------------------

如果是“通过内核代码的阅读,来理解这样一个操作系统各个部分是如何运作的”, 我想首先,你至少需要了解操作系统的基本概念,比如进程,中断,文件系统等。如果你上过类似的课程或者看过操作系统原理相关的书,应该不是太大问题。

然后,可以看Linux相关的原理介绍,比如《Understanding Linux Kernel 3》,但Linux内核变动很快,连表示进程的task_struct 这么核心数据结构也几乎每个小版本都变。所以,如果你任意挑选一个内核版本,比如你下载的3.11.6,书上内容可能与你手上的代码对应不上。建议下载一个与书匹配的版本,来结合书看代码。书不厚,但内容不少,也挺枯燥。如果能坚持把全书浏览一遍,应该说干得不错,但不提倡,因为即便如此也只是隔靴搔痒。

最好玩的部分当然是动手修改内核了。首先要学会编译内核,调试内核。 于是就可以找自己感兴趣的内容动手修改了。比如可以写个系统调用, 或者编个rootkit, 甚至对调度算法感兴趣,都可以尝试修改。你说怎么编译内核,调试内核?内容不少, 工具就可以说一大堆,这里说不下了,自行google吧。

最后祝你学得开心,玩得开心。

linux 内核编号含义_如何阅读linux内核代码?相关推荐

  1. linux 内核编号含义_linux内核(kernel)版本号的意义

    转自:http://www.cnblogs.com/jsjliuxing/archive/2011/12/01/2271182.html 在linux下有一个目录,即/usr/src/kernels/ ...

  2. linux 内核编号含义_Linux kernel内核源代码代号:mainline、longterm的含义

    mainline .longterm.stable.linux-next.snapshot这些名词,都是linux kernel source的标记名称,可以理解为代号. mainline mainl ...

  3. linux 修改内核源码,Source Insight阅读linux内核源代码——根据其他文章修改

    由于Source Insight实质上是一个支持多种开发语言(java,c ,c++等等)的编辑器,只不过由于其查找.定位.彩色显示等功能的强大,而被我们当成源代码阅读工具使用. Step 2:新建项 ...

  4. linux主设备编号从0到多少,Linux驱动开发之主设备号找驱动,次设备号找设备

    一.引言 很久前接触linux驱动就知道主设备号找驱动,次设备号找设备.这句到底怎么理解呢,如何在驱动中实现呢,在介绍该实现之前先看下内核中主次设备号的管理: 二.Linux内核主次设备号的管理 Li ...

  5. linux漏洞知乎_安装 Manjaro Linux 后必做的 6 件事 | Linux 中国

    你刚刚全新安装了 Manjaro Linux,那么现在该做什么呢? 作者:Dimitrios Savvopoulos 译者:Hilton Chain (本文字数:1579,阅读时长大约:2 分钟) 下 ...

  6. linux设置环境变量_什么是linux环境变量

    本来这篇文章好几天之前就写好了,但是媳妇儿跟我说工作日就不要发了,大家都在上班,哪有闲心思看你的文章.哎,可能大家用头条都是在放松刷娱乐,看小姐姐.所以就一直拖到现在.周末了,更是放松的好时候,葛优躺 ...

  7. linux用户名是什么_什么是Linux用户?

    linux用户名是什么 编者注:本文于2019年6月11日下午1:15:19更新,以更准确地反映作者对Linux社区开放,包容的实践社区的观点. 在短短两年内,Linux内核将使用30年. 考虑一下! ...

  8. linux mint 图标主题_如何在 Linux Mint 中更换主题

    一直以来,使用 Cinnamon 桌面环境的 Linux Mint 都是一种卓越的体验.这也是为何我喜爱 Linux Mint的主要原因之一. -- It's Foss(作者) 一直以来,使用 Cin ...

  9. linux删除用户所有信息_如何在Linux上删除用户(以及删除所有跟踪)

    linux删除用户所有信息 Fatmawati Achmad Zaenuri/ShutterstockFatmawati Achmad Zaenuri / Shutterstock Deleting ...

最新文章

  1. COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控件大小(上)
  2. 填充路径时使用的非零环绕规则
  3. postfix本机测试本机时,telnet连接出错
  4. 深入理解Java中的逃逸分析
  5. 【渝粤题库】陕西师范大学700005 遗传学
  6. python-循环控制-continue
  7. Owner PID: 7948 Our PID: 7064
  8. python导入上级目录下文件_python import 上级目录的导入
  9. C++学习笔记——opencv2模块(图像处理)
  10. Microsoft Visual Studio .NET 2003 编译xvidcore-1.1.3
  11. Mirth Connect 互联互通 第四章 通用资格服务实现
  12. imresize函数进行图像缩放及利用imrotate进行图像旋转
  13. springboot接入微信,支付宝支付
  14. java 调用odi_[转]ODI定时任务
  15. 计算机不能再U盘新建文件夹,如何让你的U盘永不中毒?新建一个文件夹就搞定!-u盘文件夹变成exe...
  16. 通过经纬度坐标计算距离
  17. 有关weka的相关问题
  18. node安装node-pre-gyp报错的解决方案
  19. 苹果手机解压缩软件_360压缩大师360 推出的免费 macOS 解压缩软件
  20. 解决远程连接服务器的最大连接数

热门文章

  1. C#GDI画圆及填充
  2. vc++ 项目里External dependencies 的文件存放内容和各个文件的存放内容
  3. uni-app-微信小程序实现输入卡号 每四个为一组中间为空格(也可以取消空格)
  4. IOS开发基础之使用XCode12快速生成代码段
  5. 调用系统相机和相册,并且裁剪成圆形图片(解决6.0,7.0,8.0版本问题)
  6. pythonexpect后怎么循环_python 装饰器从放弃到玩转(初级)
  7. typescript get方法_使用 Typescript 构建类型安全的 Websocket 应用
  8. 下拉框的value值怎么设置为变量_自绘制HT For Web ComboBox下拉框组件
  9. mysql忘记命令后半部分_Mysql 5 易忘的命令
  10. 计算机课讲什么学生爱学,学生党“最喜欢”的4门课程,尤其是最后1门,学渣:我们的最爱...