《Linux内核设计与实现》第1、2章读书笔记
第一章
1.Unix内核特点
十分简洁:仅提供几百个系统调用并且有明确的目的;
在Unix中,大部分东西都被(或者正致力于)被当做文件对待;
Unix内核即相关系统工具软件都是用C语言编写的,这使得系统有着强大的可移植性;
Unix进程创建非常迅速,目标在于一次执行保质保量地完成一个任务
2.Linux与Unix异同
Linux是基于Unix的类系统,比如它也实现了Unix的API;
但它不同于Unix,没有利用Unix内核源代码;
Linux是非商业的产品,任何人都可以参与到它的开发中
Unix内核与Linux内核的比较
- Unix内核是一个不可分割的静态可执行库,通常需要硬件系统提供页机制(MMU)以管理内存;
- Linux支持动态加载内核模块,并且是可抢占的。
3.Linux系统的基础是内核、C库以及工具集和系统的基本工具。
4.操作系统&内核
操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分,包括内核;
内核是操作系统的核心,系统其它部分必须依靠内核这部分软件提供的服务;
内核的组成&功能完成
- 内核由调度、中断服务、通信等程序组成;
- 内核处于的系统态以及受保护的内存空间被称为内核空间;
- 应用程序通过系统调用接口与内核通信(这种交互方式是应用程序完成其工作的基本方式之一),有以下三种情况:
- 函数较为复杂,系统调用只是工作的一部分;
- 函数和系统调用是一一对应的关系;
- 函数根本不需要调用系统级的操作。
4.内核分类
单内核(比如大多数Unix及Linux)
- 把内核整体上作为一个大的单独的过程来实现,同时运行在一个单独的地址空间上
- 简单,性能高
微内核(比如Windows NT)
- 微内核的功能被划分为多个独立的功能,每个过程叫做一个服务器;便于处理内核间通信,还使用了IPC机制;
第二章
1.源代码管理
使用Git内核源代码一般安装在/usr/src/linux目录下,这个源码树并不能用于开发
- Git作为版本控制系统来管理Linux内核源代码;
源代码树
- 有很多目录值得被注意:
- arch:特定体系结构的源代码;
- include:内核头文件;
- kernel:像调度程序这样的核心子系统。
- 有很多目录值得被注意:
2.编译内核
目的:将自己需要的功能编译进内核
步骤:
- 配置内核
- 前提:可以配置的各种变量都以CONFIG_前缀表示。
- 衍生多个编译作业
- 一般每个处理器都会衍生1——2个作业,改善处理器的利用率
- make -j32 > /dev/null
- 安装新内核
3.内核开发特点
无lib库或者标准头文件,不能直接使用标准C函数库
内核编程时使用GNU C,比如内联函数、内联汇编等
没有内存保护机制
《Linux内核设计与实现》第1、2章读书笔记的更多相关文章
- 《Linux内核设计与分析》第四章读书笔记
<内核设计与实现>第四章读书笔记 第四章:进程调度 进程(操作系统)程序的运行态表现形式. 进程调度程序,它是确保进程能有效工作的一个内核子系统. 调度程序负责决定将哪个进程投入运行,何时 ...
- 《Linux内核设计与分析》第十七章读书笔记
设备与模块 关于设备驱动和设备管理,四种内核成分. 设备类型:在所有Unix 系统中为了统一普通设备的操作所采用的分类. 模块: Linux 内核中用于按需加载和卸载目标码的机制. 内核对象:内核数据 ...
- 《Linux内核设计与实现》第一二章读书笔记
第一章 Linux内核简介 1.Unix简介 (一)概念:支持抢占式多任务.多进程.虚拟内存.换页.动态链接和TCP/IP网络的现代化操作系统. (二)Unix特点(层次化结构): Unix很简洁,仅 ...
- 《Linux内核设计与实现》第17章读书笔记
第十七章 设备与模块 一.四种内核成分 设备类型:在所有 Unix 系统中为了统一普通设备的操作所采用的分类. 模块: Linux 内核中用于按需加载和卸载目标码的机制. 内核对象:内核数据结构中支 ...
- 《Linux内核设计与实现》第4章读书笔记
第四章 进程调度 调度程序负责决定将哪个程序投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.调度程序是像Linux这样的多任务操作系统的基 ...
- 《Linux内核设计与实现》第四章读书笔记
4.1 多任务 多任务操作系统就是能同时并发地交互执行多个进程的操作系统. 多任务系统可以划分为两类: 非抢占式多任务进程会一直执行直到自己主动停止运行 抢占式多任务Linux/Unix使用的是抢占式 ...
- 《Linux内核设计与实现》第三章读书笔记
一.进程(任务)描述 1.进程是处于执行期的程序:除了可执行程序代码,还包括打开的文件.挂起的信号.内核内部数据.一个或者多个执行线程等多种资源 线程是在进程活动中的对象:内核调度的对象是线程而不是进 ...
- 《Linux内核设计与实现》第七章读书笔记
第七章.中断和中断处理 7.1中断 中断使得硬件得以发出通知给处理器.中断随时可以产生,内核随时可能因为新来到的中断而被打断. 不同的设备对应的中断不同,而每个中断都通过一个唯一的数字标志.操作系统给 ...
- 《Linux内核设计与实现》第五章读书笔记
第五章 系统调用 5.1与内核通信 1. 系统调用 让应用程序受限的访问硬件设备 提供创建新进程并与已有进程通信的机制 提供申请操作系统其他资源能力是用户空间进程和硬件设备之间的中间层 2. 系统调 ...
- 《Linux内核设计与实现》第3章读书笔记
第三章 进程管理 一.进程 1.进程就是处于执行期的程序,但并不局限于可执行代码.实际上,进程是正在执行的程序代码的实时结果. 2.执行线程是在进程中活动的对象 每个线程拥有一个独立的计数器.进程栈. ...
随机推荐
- 三边定位 c#
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分. 项目中用到三 ...
- Linux权限管理命令
查询linux命令用法网址:cht.sh 1.chmod——改变文件/目录的权限 用法: ① chmod [{ugoa}{+-=}{rwx}] [文件/目录] ---给文件的(用户.所属组.其他人 ...
- Jenkins配置 管理
Jenkins配置 你可能已经看了前面几次练习了,其中我们不得不在Jenkins配置选项.下表列出了Jenkins 的各种配置选项. 因此,可以通过点击左侧菜单侧的 “Manage Jenkins”选 ...
- 虚拟货币——比特币行情价格分析
最近挖以太币的朋友们在关注以太坊行情时,一定会发现以太币的价格对比之前上涨了不少.肯定有部分朋友想了解这次上涨的原因,我们特地为此查询了一番.因为比特币相当于虚拟货币中的黄金,它的价格波动会波及到其他 ...
- [network]数字签名
数字签名(又称公钥数字签名.电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法.一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证. ...
- CSP201612-2:工资计算
引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试, ...
- Red Hat Enterprise Linux / CentOS 7 yum安装zabbix4.0
添加Zabbix存储库安装存储库配置包. 该软件包包含yum(软件包管理器)配置文件. rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_6 ...
- Python科学计算库灬numpy
Numpy NumPy是一个功能强大的Python库,主要用于对多维数组执行计算.Numpy许多底层函数实际上是用C编写的,因此它的矩阵向量计算速度是原生Python中无法比拟的. numpy属性 维 ...
- NO.1:自学python之路------Hello world、判断、循环
引言 人工智能如今越来越贴近生活,在这里将记录我自学python与tensorflow的过程.编程使用IDE:visual studio 2017,python版本3.6.4,tensorflow版本 ...
- AJAX请求.net controller数据交互过程
AJAX发出请求 $.ajax({ url: "/Common/CancelTaskDeal", //CommonController下的CancelTaskDeal方法 type ...