Linux内核分析第一二章读书笔记
linux读书笔记(1,2章)
标签(空格分隔): 20135328陈都
第一章 Linux内核简介
Unix的历史
Unix 虽然已经使用了40年,但计算机科学家仍然认为它是现存操作系统中最强大和最优秀的系统。从1969 年诞生以来,由Dennis
Ritchie 和Ken Thompson 的灵感火花点亮的这个Unix产物已经成为一种传奇,它历经了时间的考验依然声名不坠。
Multics 项目被终止后,贝尔实验室计算科学研究中心的人们发现自己处于一个没有交互式操作系统可用的境地。在这种情况下,1969年的夏天,贝尔实验室的程序员们设计了一个文件系统原型,而这个原型最终发展横化成了Unix.
操作系统和内核简介
由于一些现行商业操作系统日趋庞杂及其设计上的缺陆,操作系统的精确定义并没有一个统一的标准。许多用户把他们在显示器屏幕上看到的东西理所当然地认为就是操作系统。通常,当然在本书中也这么认为,操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分。这些部分应该包括内核、设备驱动程序、启动引导程序、命令行Shell或者其他种类的用户界面、基本的文件管理工具和系统工具。
系统其他部分必须依靠内接这部分软件提供的服务,像管理硬件设备、分配系统资源等。内核有时候被称作是管理者或者是操作系统核心。通常一个内核由负责响应中断的中断服务程序,负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址空间的内存管理程序和网络、进程间通信等系统服务程序共同组成。
第二章 从内核出发
获取内核源代码
通过Git这个分布式的版本控制系统来进行:
- 获取最新提交到版本树的一个副本
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git - 下载代码后,更新自己的分支到最新分支
git pull
安装内核源代码
压缩形式为bzip2:tar xvjf linux-x.y.z.tar.bz2
压缩形式为zip:tar xvzf linux-x.y.z.tar.gz
补丁:从内部源码树开始,运行:patch - pl< .. /patch -x .y.z
一般来说,一个给定版本的内核补丁总是打在前一个版本上。
内核源码结构
内核源码树由很多目录组成,而大多数目录叉包含更多的子目录。源码树的根目录及其子目录如下表所示。
|目 录 |描 述|
|:---:|:---:|
|arch |特定体系结构的代码|
|block |块设备I/O层|
|crypo| 加密API|
|Documentation |内核源码文档|
|drivers |设备驱动程序|
|firmware| 使用某些驱动程序而需要的设备固件|
|fs| VFS和各种文件系统|
|include| 内核头文件|
|init| 内核引导和初始化|
|ipc| 进程间通信代码|
|kernel| 像调度程序这样的核心子系统|
|lib| 同样内核函数|
|mm |内存管理子系统和VM|
|net |网络子系统|
|samples |示例,示范代码|
|scripts| 编译内核所用的脚本|
|security| Linux 安全模块|
|sound |语音子系统|
|usr |早期用户空间代码(所谓的initramfs)|
|tools| 在Linux开发中有用的工具|
|virt| 虚拟化基础结构|
配置内核
内核提供了各种不同的工具来简化内核配置。最简单的一种是一个字符界面下的命令行工具:
$ make config
配置选项CONFlG_lKCONFIG_PROC把完整的压缩过的内核配置文件存放在/proc/con且g.gz 下,这样当你编译一个新内棋的时候就可以方便地克隆当前的配置。如果你目前的内核已经启用了此选项,就可以从/proc下复制出配置文件并且使用它来编译一个新内核:
zcat /proc/con且.g.gz > .config
make oldconfig
- config:用户用来存放内核配置后结果的文件。
- 可以配置的各种选项:用CONFIG_FEATURE形式表示,其前缀为CONFIG。
一旦内核配置好了(不论你是如何配置的),就可以使用一个简单的命令来编译它了:
$ make
安装新内核
make modules_install
把所有已编译的模块安装到正确的主目录/lib/modules下
2.4 内核开发的特点
最重要的差异包括以下几种:
- 内核编程时既不能访问 C库也不能访问标准的 C头文件。
- 内核编程时缺乏像用户空间那样的内存保护机制。
- 内核编程时难以执行浮点运算。
- 内核给每个进程只有一个很小的定长堆钱。
- 由于内核支持异步中断、抢占和 SMP,因此必须时刻注意同步和并发。
要考虑可移植性的重要性。
第 一章将带我们从 Unix 的历史视角来认识 Linux 内核与 Linux 操作系统的前世今生。今天Unix 系统业已愤化成一个具有相似应用程序编程接口(API),并且基于相似设计理念的操作 系统家族。但它又是一个别具特色的操作系统,从萌芽到现在已经有 40余年的历史。若要了解 Linux,我们必须首先认识 Unix 系统。
小结
第二章主要介绍Linux内核的一些基本常识:从何处在取源码,如何编译它,又如何 安装新内核。那么,让我们考察一下内核程序与用户空间程序的差异,以及内核中所使用的通 用编程结构。虽然内核在很多方面有其独特性,但从现在来看,它和其他大型软件项目并无多大差别。
Linux内核分析第一二章读书笔记的更多相关文章
- Linux内核分析第四章 读书笔记
Linux内核分析第四章 读书笔记 第一部分--进程调度 进程调度:操作系统规定下的进程选取模式 面临问题:多任务选择问题 多任务操作系统就是能同时并发地交互执行多个进程的操作系统,在单处理器机器上这 ...
- linux内核分析 第4章读书笔记
第四章 进程调度 一.抢占与非抢占 1.非抢占式进程调度 进程会一直执行直到自己主动停止运行 2.抢占式进程调度 Linux/Unix使用的是抢占式的方式,强制的挂起进程的动作就叫做抢占. 二.进程优 ...
- Linux内核分析第四章读书笔记
第四章 进程调度 进程调度程序:确保进程能有效工作的一个内核子程序 决定将哪个进程投入运行,何时运行已经运行多长时间 进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统 原则:只 ...
- Linux内核分析第五章读书笔记
第五章 系统调用 在操作系统中,内核提供了用户进程与内核进行交互的一组接口,这些接口在应用程序和内核之间扮演了使者的角色,保证系统稳定可靠,避免应用程序肆意妄行. 5.1 与内核通信 系统调用在用户空 ...
- linux内核分析 第5章读书笔记
第五章 系统调用 一.与内核通信 系统调用在用户控件进程和硬件设备之间添加了一个中间层,作用有: 为用户空间提供了一种硬件的抽象接口 系统调用保证了系统的稳定和安全 每个进程都运行在虚拟系统中,而在用 ...
- linux内核分析 第3章读书笔记
第三章 进程管理 一.进程 1.进程 进程就是处于执行期的程序. 进程就是正在执行的程序代码的实时结果. 进程是处于执行期的程序以及相关的资源的总称. 进程包括代码段和其他资源. 2.线程 执行线程, ...
- Linux内核分析第三章读书笔记
第三章 进程管理 3.1 进程 进程就是处于执行期的程序 进程就是正在执行的程序代码的实时结果 线程:在进程中活动的对象.每个线程都拥有一个独立的程序计数器.进程栈和一组进程寄存器. 内核调度的对象是 ...
- linux内核分析 第18章读书笔记
十八章 调试 一.内核调试概述 1.需要面对的 一个确定的bug 一个藏匿bug的内核版本 相关的内核代码的知识和运气 2.艰难的调试工作 重现bug很困难:大部分bug通常都不是行为可靠而且定义明确 ...
- linux内核分析 第7章读书笔记——《深入理解计算机系统》
第七章 链接 --<深入理解计算机系统> 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行. 一.编译器 大多数编译系统提供编译驱动 ...
随机推荐
- 【Alpha 冲刺】 11/12
今日任务总结 人员 今日原定任务 完成情况 遇到问题 贡献值 胡武成 完成app端api编写 未完成 文件上传api还没完成 孙浩楷 1. 与后端交接, 2. 完成图片在线编辑插件引入 未完成 陷入僵 ...
- 解决PC有道云笔记卸载重装后无法数据同步问题
将客户端内容成功同步后,按键盘win键选择文件资源管理器,将以下路径一次粘贴到搜索框按回车搜索,将搜索到的所有内容(文件,文件夹)全部删除,再重启软件登录账户同步试试看 配置目录:%USERPROFI ...
- Nginx反向代理及简单负载均衡配置
nginx配置文件主要分为六个区域:main section.events section.http section.sever section.location section.upstream s ...
- app的描述-软件的描述
app的描述=需求文档+接口文档+程序架构+工程结构. 程序架构:类结构图: 需求文档:业务逻辑-->时序图.
- 利用ngx_python模块嵌入到Python脚本
导读 Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. ...
- JAVA框架:hibernate(四)
一.绑定本地session 原理:之前connection实现事务一个道理,2种方法:1.变量下传.2.因为servlet是单线程,和本地当前线程绑定. 配置: 1)配置核心配置文件hibernate ...
- 浅谈 MVC 和 MTV
浅谈 MVC 和 MTV 一.MVC M:model,模型,就是数据模型,负责数据的存取: V:view,视图,负责页面的展示逻辑: C:controller,控制器,负责业务逻辑的处理: 二.MTV ...
- 转自《https安全链接的配置教程:startSSl免费证书申请与nginx的https支持配置》
一.什么是 SSL 证书,什么是 HTTPS 网站? SSL证书是数字证书的一种,类似于驾驶证.护照和营业执照的电子副本.SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secu ...
- Mapnik初学笔记
前言:夏天总是感觉想要睡觉,一心想颓废的我却要一周六天都要处于工作状态,但有些事虽然麻烦,但还是要去做,不由得想起火影忍者里面鹿丸这一个角色,有时候真能理解他的心理状态,或许我应该向他学习:善于思考的 ...
- 20155216 Exp2 后门原理与实践
后门原理与实践 实验内容: 常用后门工具 NC 或 netcat netcat是一个底层工具,进行基本的TCP UDP数据收发.常被与其他工具结合使用,起到后门的作用. Linux: 一般自带netc ...