linux的内核设计:

第一章

1.1Linux历史:

历经时间的考验,今天Unix已经发展成一个支持抢占式多任务、多线程、虚拟内存、换页、动态链接、TCP/Ip网络的现代化操作系统。

1.2追寻Linux的足迹:

Linux是类Unix系统,但不是Unix系统;

Linux是个非商业化的产品;

Linux系统的基础是:内核、C库、工具集和系统的基本工具;

1.3操作系统和内核:

上下文代表着内核的活动范围。

1.4Linux内核与传统的Unix内核比较:

操作系统内核可以分为:单内核和双内核;

不能忽视Unix的API;

Linux支持加载动态模块;

Linux支持对称多处理(SMP)机制;

Linux可以抢占;

Linux对线程实现更有意思;

Linux体现了自由这个词的精髓;

1.5Linux内核版本:

稳定和出于开发中的;

1.6Linux开发者社区:

成为社区中的一员:

1.7小结:

去书中寻找快乐吧!

第二章:

从内核出发

2.1获取内核源码:

登陆Linux内核官网:HTTP:// kernel.org.

2.1.1使用Git:

一个副本:

git clone  git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

下载代码,新的分支:

git pull

2.1.2安装内核源代码:

如果压缩是bzip2:

tar xvjf linux-x.y.z.tar.bz2

如果是GNU的zip:

tar xvzf linux-x.y.z.tar.gz

注意:/usr/src/linux应该原封不动

2.1.3使用补丁:

patch -p1 < ../patch-x.y.z

2.2内核源码树:

2.3编译内核

2.3.1内核配置:

字符界面工具:

make config

图形界面工具:
make menuconfig

基于gtk的图形工具:

make defconfig

验证更新配置:

make oldconfig

最后:

make

2.3.2减少编译的垃圾信息:
重定向:

make > .. /detritus

无返回值的黑洞:
make > /dev/null

2.3.3衍生多个编译作业:

多作业编译内核:

make jn

2.3.4安装新内核:

make modules_install

2.4内核开发的特点:

1.内核开发时既不能访问C库也不能访问标准的C头文件

2.内核编程时必须使用GNU C

3.内核编程时缺乏像用户空间那样的内存保护机制

4.内核编程时难以执行浮点运算

5.内核给每个进程只有一个很小的定长堆栈

6.由于内核支持异步中断、抢占和SMP,必须时刻注意同步和并发

7.要考虑可移植性的重要性

2.5小结:
内核有独一无二的气质,只有通过实际的理解和阅读才能理解内核。

Linux读书笔记1/2章的更多相关文章

  1. # linux读书笔记(3章)

    linux读书笔记(3章) 标签(空格分隔): 20135328陈都 第三章 进程管理 3.1 进程 进程就是处于执行期的程序(目标码存放在某种存储介质上).但进程并不仅仅局限于一段可执行程序代码( ...

  2. linux读书笔记(5章)

    linux读书笔记(5章) 标签(空格分隔): 20135328陈都 第五章 系统调用 5.1 与内核通信 系统调用 让应用程序受限的访问硬件设备 提供创建新进程并与已有进程通信的机制 提供申请操作系 ...

  3. linux读书笔记第三章

    第3章 进程管理20 3.1 进程20 进程就是处于执行期的程序(目标码存放在某种存储介质上),但进程并不仅仅局限于一段可执行程序代码.通常进程还要包含其他资源,像打开的文件,挂起的信号,内核内部数据 ...

  4. Linux读书笔记第五章

    主要内容: 什么是系统调用 Linux上的系统调用实现原理 一个简单的系统调用的实现 1. 什么是系统调用 简单来说,系统调用就是用户程序和硬件设备之间的桥梁. 用户程序在需要的时候,通过系统调用来使 ...

  5. 《Linux内核设计与实现》第八周读书笔记——第四章 进程调度

    <Linux内核设计与实现>第八周读书笔记——第四章 进程调度 第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配 ...

  6. 《Linux内核设计与分析》第六周读书笔记——第三章

    <Linux内核设计与实现>第六周读书笔记——第三章 20135301张忻估算学习时间:共2.5小时读书:2.0代码:0作业:0博客:0.5实际学习时间:共3.0小时读书:2.0代码:0作 ...

  7. 《Linux内核设计与实现》 第八周读书笔记 第四章 进程调度

    20135307 张嘉琪 第八周读书笔记 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有 ...

  8. 《Linux内核分析》读书笔记(四章)

    <Linux内核分析>读书笔记(四章) 标签(空格分隔): 20135328陈都 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行 ...

  9. 《LINUX内核设计与实现》第三周读书笔记——第一二章

    <Linux内核设计与实现>读书笔记--第一二章 20135301张忻 估算学习时间:共2小时 读书:1.5 代码:0 作业:0 博客:0.5 实际学习时间:共2.5小时 读书:2.0 代 ...

随机推荐

  1. LeetCode 笔记系列八 Longest Valid Parentheses [lich你又想多了]

    题目:Given a string containing just the characters '(' and ')', find the length of the longest valid ( ...

  2. Sass之二(进阶篇)

    源码链接:http://pan.baidu.com/s/1o8M51hC 1. 数据类型 1.1 Number 数字类型,小数类型,带有像素单位的数字类型,全部都属于Number类型 Number类型 ...

  3. Educational Codeforces Round 25 E. Minimal Labels&&hdu1258

    这两道题都需要用到拓扑排序,所以先介绍一下什么叫做拓扑排序. 这里说一下我是怎么理解的,拓扑排序实在DAG中进行的,根据图中的有向边的方向决定大小关系,具体可以下面的题目中理解其含义 Educatio ...

  4. BSSID,SSID,ESSID区别

    SSID(Service Set Identifier)   SSID,AP唯一的ID码,许多人认为可以将SSID写成ESSID,其实不然,SSID是个笼统的概念,包含了ESSID和BSSID,用来区 ...

  5. Uncaught TypeError: Cannot set property 'value' of null

    w拼写多一个空格导致. document.getElementById(winput_id).value = value; http://stackoverflow.com/questions/161 ...

  6. 前端开发 - JQuery&Bootstrap - 总结

    一.JavaScript和Jquery的区别 1.javascript的缺点: 1.书写繁琐,代码量大 2.代码复杂 3.动画效果,很难实现.使用定时器 各种操作和处理 2.定义: 1.Javascr ...

  7. 在Win10上,Android Studio检测不到设备的解决方案

    下载ADB驱动程序安装器 运行ADBDriverInstaller.exe,可以看到设备状态不正常,点击Install 可能会弹出这样的对话框,点击Got it, Restart Now,按照提示完成 ...

  8. HDFS基本工作机制

  9. Swift学习——A Swift Tour 枚举和结构体

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhenyu5211314/article/details/28588095 Enumerations ...

  10. SVM支持向量机总结

    一.拉格朗日乘子法 一般,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件.这里我们先介绍拉格朗日乘子法,后面再介绍KKT条件. 比如考虑下面的组合优化的问题, 这是一个带等式约束的优化 ...