《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.执行线程是在进程中活动的对象 每个线程拥有一个独立的计数器.进程栈. ...
随机推荐
- oss上传文件0字节
最近使用oss上传文件,不同项目中使用的版本也不同,之前的都能正常上传,最近因需要添加ObjectMetaData属性,扩展了一个方法,发现上传的文件始终是0字节的,最终跟源码发现conntentLe ...
- Linux大全
Linux 基本指令介紹 一定要先學會的指令:ls, more, cd, pwd, rpm, ifconfig, find 登入與登出(開機與關機):telnet, login, exit, sh ...
- tendermint 跟tikv结合
import ( "fmt" "github.com/allegro/bigcache" "github.com/kooksee/usmint/cmn ...
- 笔试题:C++打印队列
题目:打印队列 题目介绍:现在用打印机打印队列,已知打印任务有9个优先级(1-9),现在给出一系列任务,求输出打印顺序(任务下标,从0开始). 例: 输入:9,3,5,4,7,1 输出:0,4,2,3 ...
- AngularJS学习之MVC模式
AngularJS是谷歌开发维护的前端MVC框架,克服了HTML在构建应用上的不足,从而降低了开发的成本. 在学习AngularJS之前,有必要和之前学过的jQuery进行对比.jQuery是java ...
- HDU 5875 Function 优先队列+离线
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5875 Function Time Limit: 7000/3500 MS (Java/Others) ...
- J2EE面试常见试题
一.基础问答 1.下面哪些类可以被继承? java.lang.Thread (T) java.lang.Number (T) java.lang.Double (F) java.lang.Math ...
- cobbler-web 网络安装服务器套件 Cobbler(补鞋匠)
Cobbler作为一个预备工具,使部署RedHat/Centos/Fedora系统更容易,同时也支持Suse和Debian系统的部署. 它提供以下服务集成: * PXE服务支持 * DHCP服务管 ...
- 2."结对项目"的心得体会
上个星期,老师给我们布置了个课堂小作业: 某公司程序员二柱的小孩上了小学二年级,老师让家长每天出30道(100以内)四则运算题目给小学生做.二柱立马就想到写一个小程序来做这件事. 这个事情可以用很 ...
- 奇异值分解(SVD)原理详解及推导 (转载)
转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/43053513 在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有 ...