《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.执行线程是在进程中活动的对象 每个线程拥有一个独立的计数器.进程栈. ...
随机推荐
- Appium+python的单元测试框架unittest(3)——discover(转)
(原文:https://www.cnblogs.com/fancy0158/p/10047906.html) TestSuite套件可以添加很多个用例后运行,但是每个用例都需要调用addTest()函 ...
- Unity中StopCoroutine不起作用怎么办
1,只有StartCoroutine使用一个字符串方法名时才能用StopCoroutine(string CoroutineName)停用. 2, public Coroutine coroutine ...
- leetcode13_C++罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...
- [ Continuously Update ] The Paper List of Seq2Seq Tasks ( including Attention Mechanism )
Papers Published in 2017 Convolutional Sequence to Sequence Learning - Jonas Gehring et al., CoRR 20 ...
- ASP.NET MVC - 启动创建项目,未能加载错误
VS2012以常规方式创建一ASP.NET MVC internet 项目.创建后F5启动项目,遇一错误: 未能加载文件或程序集“MySql.Web.v20, Version=6.9.4.0, Cul ...
- 4.airflow测试
1.测试sqoop任务1.1 测试全量抽取1.1.1.直接执行命令1.1.2.以shell文件方式执行sqoop或hive任务1.2 测试增量抽取2.测试hive任务3.总结 当前生产上的任务主要分为 ...
- linux-ubuntu配置通过22端口远程连接
当安装好ubuntu后获取到对应主机的ip地址,要想通过类似xshell这样的远程连接工具连接到ubuntu主机,需要在你刚刚安装好的ubuntu主机上安装openssh这个软件,才能通过远程来连接u ...
- Base64编码图片存取与前台显示
需求:将Base64编码图片以BLOB类型存入数据库,需要时取出显示 后台: String base64str=new String(log.getRequest_imgdata());//log为实 ...
- Easy ui DateBox 控件格式化显示操作
//Easy ui datebox 控件 <input class="easyui-datebox" name="StartTime" id=" ...
- Java访问控制
转自:菜鸟教程