linux读书笔记(1,2章)

标签(空格分隔): 20135328陈都


第一章 Linux内核简介

Unix的历史

Unix 虽然已经使用了40年,但计算机科学家仍然认为它是现存操作系统中最强大和最优秀的系统。从1969 年诞生以来,由Dennis
Ritchie 和Ken Thompson 的灵感火花点亮的这个Unix产物已经成为一种传奇,它历经了时间的考验依然声名不坠。

Multics 项目被终止后,贝尔实验室计算科学研究中心的人们发现自己处于一个没有交互式操作系统可用的境地。在这种情况下,1969年的夏天,贝尔实验室的程序员们设计了一个文件系统原型,而这个原型最终发展横化成了Unix.

操作系统和内核简介

由于一些现行商业操作系统日趋庞杂及其设计上的缺陆,操作系统的精确定义并没有一个统一的标准。许多用户把他们在显示器屏幕上看到的东西理所当然地认为就是操作系统。通常,当然在本书中也这么认为,操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分。这些部分应该包括内核设备驱动程序启动引导程序命令行Shell或者其他种类的用户界面、基本的文件管理工具和系统工具。

系统其他部分必须依靠内接这部分软件提供的服务,像管理硬件设备、分配系统资源等。内核有时候被称作是管理者或者是操作系统核心。通常一个内核由负责响应中断的中断服务程序,负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址空间的内存管理程序和网络、进程间通信等系统服务程序共同组成。

第二章 从内核出发

获取内核源代码

通过Git这个分布式的版本控制系统来进行:

安装内核源代码

压缩形式为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内核分析第一二章读书笔记的更多相关文章

  1. Linux内核分析第四章 读书笔记

    Linux内核分析第四章 读书笔记 第一部分--进程调度 进程调度:操作系统规定下的进程选取模式 面临问题:多任务选择问题 多任务操作系统就是能同时并发地交互执行多个进程的操作系统,在单处理器机器上这 ...

  2. linux内核分析 第4章读书笔记

    第四章 进程调度 一.抢占与非抢占 1.非抢占式进程调度 进程会一直执行直到自己主动停止运行 2.抢占式进程调度 Linux/Unix使用的是抢占式的方式,强制的挂起进程的动作就叫做抢占. 二.进程优 ...

  3. Linux内核分析第四章读书笔记

    第四章 进程调度 进程调度程序:确保进程能有效工作的一个内核子程序 决定将哪个进程投入运行,何时运行已经运行多长时间 进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统 原则:只 ...

  4. Linux内核分析第五章读书笔记

    第五章 系统调用 在操作系统中,内核提供了用户进程与内核进行交互的一组接口,这些接口在应用程序和内核之间扮演了使者的角色,保证系统稳定可靠,避免应用程序肆意妄行. 5.1 与内核通信 系统调用在用户空 ...

  5. linux内核分析 第5章读书笔记

    第五章 系统调用 一.与内核通信 系统调用在用户控件进程和硬件设备之间添加了一个中间层,作用有: 为用户空间提供了一种硬件的抽象接口 系统调用保证了系统的稳定和安全 每个进程都运行在虚拟系统中,而在用 ...

  6. linux内核分析 第3章读书笔记

    第三章 进程管理 一.进程 1.进程 进程就是处于执行期的程序. 进程就是正在执行的程序代码的实时结果. 进程是处于执行期的程序以及相关的资源的总称. 进程包括代码段和其他资源. 2.线程 执行线程, ...

  7. Linux内核分析第三章读书笔记

    第三章 进程管理 3.1 进程 进程就是处于执行期的程序 进程就是正在执行的程序代码的实时结果 线程:在进程中活动的对象.每个线程都拥有一个独立的程序计数器.进程栈和一组进程寄存器. 内核调度的对象是 ...

  8. linux内核分析 第18章读书笔记

    十八章 调试 一.内核调试概述 1.需要面对的 一个确定的bug 一个藏匿bug的内核版本 相关的内核代码的知识和运气 2.艰难的调试工作 重现bug很困难:大部分bug通常都不是行为可靠而且定义明确 ...

  9. linux内核分析 第7章读书笔记——《深入理解计算机系统》

    第七章 链接 --<深入理解计算机系统> 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行. 一.编译器 大多数编译系统提供编译驱动 ...

随机推荐

  1. Django商城项目笔记No.9用户部分-注册接口签发JWTtoken

    Django商城项目笔记No.9用户部分-注册接口签发JWTtoken 我们在验证完用户的身份后(检验用户名和密码),需要向用户签发JWT,在需要用到用户身份信息的时候,还需核验用户的JWT. 关于签 ...

  2. BZOJ3236:[AHOI2013]作业(莫队,分块)

    Description Input Output Sample Input 3 4 1 2 2 1 2 1 3 1 2 1 1 1 3 1 3 2 3 2 3 Sample Output 2 2 1 ...

  3. pycharm 取消空格,逗号 等符号的自动补全

  4. haproxy安装及日志配置

    1.yum安装 yum install haproxy -y 2.配置文件修改,经典配置 vim /etc/haproxy/haproxy.cfg #------------------------- ...

  5. 【转】H.264 SVC

    视频厂商POLYCOM,VIDYO和RADVISION等都推出H.264 SVC技术.针对H.264 SVC技术做个介绍. CISCO和POLYCOM都提供了免版税的H.264 SVC的版本. 其中o ...

  6. Kafka设计解析(二十)Apache Flink Kafka consumer

    转载自 huxihx,原文链接 Apache Flink Kafka consumer Flink提供了Kafka connector用于消费/生产Apache Kafka topic的数据.Flin ...

  7. HDU3853:LOOPS

    题意:迷宫是一个R*C的布局,每个格子中给出停留在原地,往右走一个,往下走一格的概率,起点在(1,1),终点在(R,C),每走一格消耗两点能量,求出最后所需要的能量期望   #include<i ...

  8. 虚拟机VirtualBox安装MAC OS 10.12图文教程

    VirtualBox虚拟机安装Mac OS 10.12图文教程的准备 1.VirtualBox虚拟机 下载地址:https://www.virtualbox.org/ 特别提醒:推荐官方下载,安装Vi ...

  9. Oracle 批量修改某个用户下表的表空间

    说明:一般来说要修改表的表空间需要同时修改表的表空间和其对应的索引表空间,并且在修改含有BOLB字段的表的表空间时又不一样,具体请参考末尾的链接 思路:拼凑一个满足条件的批处理查询语句,将查询的结果复 ...

  10. Json.NET序列化后包含类型,保证序列化和反序列化的对象类型相同(转载)

    This sample uses the TypeNameHandlingsetting to include type information when serializing JSON and r ...