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章读书笔记——《深入理解计算机系统》
第七章 链接 --<深入理解计算机系统> 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行. 一.编译器 大多数编译系统提供编译驱动 ...
随机推荐
- 使用PhotoShop将视频转为gif格式
由于文档中不方便上传视频,尤其是一些短视频,将其制作成gif格式更便于浏览,刚好PhotoShop中有这种功能,笔者在这里分享一下. 在PS中打开需要转换格式的视频文件,选择文件选项导出中的导出为We ...
- Vue那些事儿之用visual stuido code编写vue报的错误Elements in iteration expect to have 'v-bind:key' directives.
当用vsc打开我们的vue代码时,在其他编辑器里面本来没有错误,到这个编辑器里面 v-for就出毛病了.如下图所示, 那是因为我们打开了对vue进行Eslint的检查. 搜索vetur.validat ...
- BZOJ4810:[YNOI2017]由乃的玉米田(莫队,bitset)
Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题 这个题是这样的: 给你一 ...
- tomcat 启动,停止,查看端口,日志位置
1.启动之前先看看是否已经启动tomcat ,避免端口被占用 ps -ef|grep tomcat 2.启动:进入tomcat下的“bin”目录 输入命令:./startup.sh 3.查看tomca ...
- clock gating check
在 sta 分析时,经常会碰到 clock gating cell (一般是 ICG cell 或者 latch)引起的 violation,这种 violation 很常见,而且往往很难修. 为什么 ...
- JS时间轴效果(类似于qq空间时间轴效果)
在上一家公司写了一个时间轴效果,今天整理了下,感觉有必要写一篇博客出来 给大家分享分享 当然代码还有很多不足的地方,希望大家多指点指点下,此效果类似于QQ空间或者人人网空间时间轴效果,当时也是为了需求 ...
- PAT B1013 数素数 (20 分)
令 Pi 表示第 i 个素数.现任给两个正整数 M≤N≤104,请输出 PM 到 PN 的所有素数. 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔. 输出格式: 输 ...
- 树莓派学习笔记(3):利用VNC远程控制树莓派
转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 等了一个十一假期,新买的B+终于到了.按照前两节的方法,重新安装了操作系统. 一.添加国内软件源 Rasp ...
- 腾讯笔试题 构造回文(LCS问题)
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串.如何删除才能使得回文串最长呢? 输出需要删除的字符个数. 输入描述: 输入数据有多组,每组包含一个字符串s,且保证:1<=s. ...
- 第17章 EXTI—外部中断/事件控制器
第17章 EXTI—外部中断/事件控制器 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...