读书笔记(chapter1-2)
一、linux内核简介
1.1unix的历史
1、unix强大的根本原因:1.unix很简洁,仅仅提供几百个系统调用并且有一个非常明确的设计目的;2.在unix中,所有的东西都被当作文件对待;3.unix的内核和相关的系统工具软件是用C语言编写而成,在各种硬件体系架构面前都具备令人惊异的移植力;4.unix的进程创建非常迅速,并且有一个非常独特的fork()系统调用。
2、unix已经发展成一个支持抢占式多任务、多线程、虚拟内存、换页、动态链接和TCP/IP网络的现代化操作系统。
1.2linux简介
1、linux内核也是自由(公开)软件
1.3操作系统和内核简介
1、内核被称作是管理者或者是操作系统核心,它一般处于系统态,拥有受保护的内存空间和访问硬件设施的所有权限。这种系统态和被保护起来的内存空间,统称为内核空间。
2、在系统中运行的应用程序通过系统调用来和内核通信:
运行于用户空间,执行用户进程
运行于内核空间,处于进程上下文,代表某个特定的进程执行
运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断
1.4linux内核和传统unix内核的比较
1、linux支持动态加载内核模块
2、linux支持对称多处理的(SMP)机制
3、linux内核可以抢占
4、linux不区分线程和其他一般进程,所以进程都一样
1.5linux内核版本
二、从内核出发
2.1获取内核源码
1、使用git
git是分布式的的系统
2、安装内核源代码
内核压缩以GUN zip(gzip)和bzip2两种形式发布
3、使用补丁
2.2内核源码树
1、arch:特定体系结构的源码
kernel:像调度程序这样的核心子系统
lib:通用内核函数
2.3编译内核
1、配置内核
配置选项也可以是字符串或整数
$ make config
$ make menuconfig
$ make gconfig
2、减少编译的垃圾信息
$ make > /detritus
$ make > /dev/null
3、衍生多个编译作业
4、安装新内核
% make modules_install
2.4内核开发的特点
1、不能访问C库也不能访问标准的C头文件
内核不能链接使用标准C函数库;
基本的头文件位于内核源代码树顶级目录下的include目录中;
体系结构相关的头文件位于内核源代码树的arch/<architecture>/include/asm目录中;
内核提供的printk()函数几乎与printf()函数相同,唯一区别在于,printk()允许你通过指定一个标志来设置优先级。sysslogd会根据这个优先级标志来决定在什么地方显示这条系统消息;
2、内核编程时候必须使用GUN C
1.内联函数:定义一个内联函数时候,需要使用static作为关键字,并且用inline限定它
2.内嵌汇编:通常使用asm()指令嵌入汇编代码
3.分支声明
3、内核编程时缺乏像用户空间那样的内存保护机制
内核中内存都不分页
4、内核编程难以执行浮点运算
5、内核给每个进程只有一个很小的定长堆栈
32位 8KB
6、内核支持异步中断、抢占和SMP,因此必须时刻注意同步和并发
7、可移植性很重要
读书笔记(chapter1-2)的更多相关文章
- 《深入PHP与jQuery开发》读书笔记——Chapter1
由于去实习过后,发现真正的后台也要懂前端啊,感觉javascript不懂,但是之前用过jQuery感觉不错,很方便,省去了一些内部函数的实现. 看了这一本<深入PHP与jQuery开发>, ...
- 读书笔记-Coding faster(英文版)
读书笔记-Coding faster(英文版) Getting More Productive with Microsoft visual Studio Author: Zain Naboulsi S ...
- 读书笔记-实用单元测试(英文版) Pragmatic Unit Testing in C# with NUnit
读书笔记-实用单元测试(英文版) Pragmatic Unit Testing in C# with NUnit Author: Andrew Hunt ,David Thomas with Matt ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
- LOMA280保险原理读书笔记
LOMA是国际金融保险管理学院(Life Office Management Association)的英文简称.国际金融保险管理学院是一个保险和金融服务机构的国际组织,它的创建目的是为了促进信息交流 ...
随机推荐
- Alpha冲刺报告(3/12)(麻瓜制造者)
今日已完成情况: 肖小强: 解决了之前的部署demo问题,学习了基本需要的api 江郑: 进行发布需求数据库的增删改查 邓弘立: 完成了轮播图的设计 刘双玉: 编码发布商品的接口,数据库表的修改 汪志 ...
- 2879: [Noi2012]美食节
Description CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节.作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴.他很快就尝遍了美食节所有的美食.然而,尝鲜的欲望是难以满足的.尽 ...
- gcd以及exgcd入门讲解
gcd就是最大公约数,gcd(x, y)一般用(x, y)表示.与此相对的是lcm,最小公倍数,lcm(x, y)一般用[x, y]表示. 人人都知道:lcm(x, y) = x * y / gcd( ...
- [luogu3980] 志愿者招募
题面 又一次考试网络流爆零...... 这一题一看就是网络流, 但是要怎么构图呢? 考虑到途中的一些因素, 首先, 每一种志愿者控制的区间范围为\(S_{i}\)到\(T_{i}\), 所以, ...
- Arthas开源项目
本文主要围绕着Arthas是什么.能做什么.安装和使用等三个方面内容来讲解,希望对初学者和对此有兴趣的朋友有帮助. 一. Arthas是什么 文档地址: https://alibaba.github. ...
- Springmvc常见问题
问题一:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userCont ...
- jenkins报错;自定义工作目录;
[1]no such file 报错: 如果jdk配置路径错误,有可能会报这样的错误: 其实只要在/etc/profile中配置好JAVA_HOME就足够了: 对应的系统配置框,留空不新加即可: [2 ...
- 图解:图形下控制台中weblogic9.2多池配置为oracle集群RAC
update: 这个东西如果配置不顺利的话:应用请求数据库的时候,会打印类似这样的错误: :open connection err Pool connect failed : weblogic.com ...
- Arduino入门笔记(9):蓝牙模块及第一辆蓝牙遥控小车
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.Arduino UNO板 https://item.t ...
- Arduino入门笔记(8):利用12864和ADXL345学习重力感应控制
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.Arduino UNO板 https://item.t ...