Linux 内核学习的经典书籍及途径
from:http://www.zhihu.com/question/19606660 知乎
Linux 内核学习的经典书籍及途径?修改
18 个回答
内核重点关注这几个部分:进程管理及调度,内存管理,文件及文件系统,Cache,I/O,SMP(多CPU)。
Unix内核推荐很老的一本书《UNIX操作系统设计》,英文原版的叫做《The Design of The UNIX Operating System》。重点关注这些章节(我手上拿的是英文版的):
进程管理及调度:
- The Structure of Processes
- Process Control
- Precess Scheduling and Time
内存管理:
- Memory Management Policies
文件及文件系统:
- The Buffer Cache
- Internal Representation of Files
- System Calls for the File System
Linux内核就看那本经典的基于2.6版写的书《深入理解Linux内核》。这本书相当的枯燥,最好结合实际的代码看,可以了解它们是如何实现的。给几个建议先:
- 细看的时候,不用按章节的顺序去看,而是最好是从点到面,先了解一些基本的实现方法,再去结合代码把这些点穿起来。重点关注这些:进程(包括管理和调度),地址空间,内存管理,文件及VFS,Page Cache(页高速缓存),PFRA,I/O及设备驱动等等。
- 积极的去探索一些书上没有详细说明,但是内核中又实现了的;或者是那些内核代码已经有很大改变的部分。例如:电梯算法(CFQ,红黑树),通用Block层的I/O请求队列和调度,基于VFS之上的具体文件系统的实现(如ext2/3,YAFFS),页从分配到回收的整个过程,设备驱动的具体实现(如USB,存储设备)等等。
- 自己画图、作笔记,把重要知识点用自己能理解的方式全部记录下来,因为如果你不用,也许半年之后就忘的都差不多了。有一些简单的图片和笔记往往能快速的回忆起来。
这几本书作为辅助也相当的棒:《Linux设备驱动程序》,《深入理解计算机系统》,《Professional Linux Kernel Architecture》,还有相当经典的fudan_abc写的那一套Linux内核代码分析。
不过在做所有的这些之前,请把C语言学好,并且去了解一些简单的Shell的语法。推荐一本Shell的书籍:《UNIX Shells by Example, 4th Edition》。
参考:关于Linux内核学习的误区以及相关书籍介绍 http://www.hzlitai.com.cn/article/ARM9-article/system/1605.html
目前正在研究这块,有兴趣的可以一起交流: http://blog.chinaunix.net/space.php?uid=22359610
实成的避免陷入细节建议非常好:)
说说我们以前的培训经验。先看Unix内核相关的书籍,了解内核的经典实现方法,然后再结合源码去研究Linux内核。这样做的原因是避免从一开始就陷入细节。
国内的书,我还没见到有像《自己动手写操作系统》那样的快速上手的宝贝。
书楼上都很多了,建议先把C和汇编学好点(-:
简介 网上有很多他这本PDF著作,当然啦,最推荐买一本,说实话,大学里这么多本书,这本是我觉得拿起来和放下都觉得有收获的一本;话说我们做坑爹操作系统多半靠这本大书了;
歪评 参加工作了研究内核机会很少,编译、升级内核机会倒是很多。。常用系统命令掌握了似乎也够了 至于鸟哥嘛,大家都推荐,一开始看他的网站觉得他挺厉害的,可能是书的语言偏台湾风、内容也有点旧吧,可能不如内核完全剖析吸引人,看一段懂一段来得痛快。咳嗽,纯个人意见。
Linux 内核学习的经典书籍及途径的更多相关文章
- 关于Linux内核学习的误区以及相关书籍介绍
http://www.hzlitai.com.cn/article/ARM9-article/system/1605.html 写给Linux内核新手-关于Linux内核学习的误区 先说句正经的:其实 ...
- 关于Linux内核学习的一点点总结
关于Linux内核学习的一点点总结 关键词:Linux, 操作系统,内核 博客列表 由反汇编C程序来理解计算机是如何工作的 通过分析一个简化版时间片轮转多道程序内核代码来认识操作系统中的进程调度 通过 ...
- linux内核学习之二:编译内核
在linux内核学习系列的第一课中讲述了搭建学习环境的过程(http://www.cnblogs.com/xiongyuanxiong/p/3523306.html),环境搭好后,马上就进入到下一环节 ...
- linux内核学习之一:环境搭建--安装Debian7.3
本系列文章假设读者已对linux有一定的了解,其实学习linux内核不需要有很深的关于linux的知识,只需要了解以下内容:linux基础知识及基本shell命令:现代操作系统的基本概念:C语言和gc ...
- Linux内核学习笔记-2.进程管理
原创文章,转载请注明:Linux内核学习笔记-2.进程管理) By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...
- Linux内核学习笔记-1.简介和入门
原创文章,转载请注明:Linux内核学习笔记-1.简介和入门 By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...
- Linux内核学习趣谈
本文原创是freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/9304991 从大二开始学习Linux内核,到现在已经 ...
- Linux 内核学习经验总结
Linux 内核学习经验总结 学习内核,每个人都有自己的学习方法,仁者见仁智者见智.以下是我在学习过程中总结出来的东西,对自身来说,我认为比较有效率,拿出来跟大家交流一下. 内核学习,一偏之见:疏漏难 ...
- Linux内核分析——Linux内核学习总结
马悦+原创作品转载请注明出处+<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核学习总结 一 ...
随机推荐
- 巧用MySQL之Explain进行数据库优化
前记:很多东西看似简单,那是因为你并未真正了解它. Explain命令用于查看执行效果.虽然这个命令只能搭配select类型语句使用,如果你想查看update,delete类型语句中的索引效果,也不是 ...
- win32键盘记录 -- 自定义窗口类
最近学了些关于window api编程的知识,于是琢磨编写一些键盘记录器,能够把输入的按键输出到窗口内,并且实现窗口自动滚动. 封装窗口类使用了GWL_USERDATA字段来保存this指针,比较容易 ...
- 在.net Core 中像以前那样的使用HttpContext.Current
今晚在学习.net Core 的使用 拿来以前项目进行改造最简单的问题就是怎么做到让httpcontext 和以前兼容 ,折腾的很久 终于搞定,纪录一下 .net core中使用了无处不在的注入,看了 ...
- Project interpreter not specified(eclipse+pydev)
[小记] 近期由于想配置Android的开发环境,把原来的MyEclipse5.5删了,下载了最新的Eclipse3.7版本号,由于之前在进行Python开发,就下载了最新的Pydev2.4版本号,安 ...
- 关于EF中ApplyCurrentValues和ApplyOriginalValues区别
关于EF中ApplyCurrentValues和ApplyOriginalValues区别:两者都是编辑数据时使用. // // 摘要: // 将 System.D ...
- 【Android】BroadCast广播机制应用与实例
如何编写广播接收器 第一步:需要继承BroadcastReceiver类,覆写其中的onReceive()方法. class MyBroadcastReceiver extends Broadcast ...
- _blank开新窗体不符合标准?
我们要在新窗体中打开链接通常的做法是在链接后面加target="_blank",我们採用过渡型的DOCTYPE(xh tml1-transitional. dtd)时没有问题,可是 ...
- Oracle 11g client的安装和配置。
数据库和client在不同的机器之上. 在安装之前,在安装Oracle数据库的server上导航到以下的文件夹. 将listener.ora和tnsnames.ora中的host中的localhost ...
- Map的遍历方式
public class Mapper { public static void main(String[] args) { Map<String, String> map = new ...
- Android开发之自定义圆角矩形图片ImageView的实现
android中的ImageView只能显示矩形的图片,这样一来不能满足我们其他的需求,比如要显示圆角矩形的图片,这个时候,我们就需要自定义ImageView了,其原理就是首先获取到图片的Bitmap ...