第一章 Linux内核简介


1、1 Unix的历史

  • 它是现存操作系统中最强大最优秀的系统。
  • 设计简洁,在发布时提供原代码。
  • 所有东西都被当做文件对待。
  • Unix的内核和其他相关软件是用C语言编写而成的。
  • Unix的进程创建非常迅速,有一个frok()系统调用。
  • 提供简洁稳定的进程间的通信元语。

1、2 Linux简介

Linux系统的基础是内核、C库、工具集和系统的基本工具,Linux主要指内核。

1、3 操作系统和内核简介

  • 操作系统指:内核、设备驱动程序、启动引导程序、命令行shell、用户界面、基本的文件管理工具和设备工具。
  • 内核:操作系统的管理者和操作系统的核心。一般处于系统态,拥有被保护的内存空间和访问硬件所受的权限,统称为内核空间。
  • 当内核运行时,系统以内核态进入内核空间执行,而执行普通用户时,系统以用户态进入用户空间进行执行。
  • 应用程序通过系统调用与内核通信,应用程序调用库函数,库函数调用系统界面,让内核代其完成不同任务。
  • 内核三个特点:运行于用户空间,执行用户进程;运行于内核空间,进行进程执行;运行于内核空间,处理特定中断。
  • 应用程序完成其工作的基本行为方式:应用程序通过系统调用界面陷入内核

1、4 单内核与微内核

  • 单内核运行在一个单独的地址空间上。内核通常以单个静态二进制文件的形式存放在磁盘中。内核间通信、内核调用函数等与用户空间应用程序无异。
  • 微内核的功能被划分为多个独立过程,每个过程称为服务器。微内核通信通过消息传递处理,即采用了进程间通信机制(IPM)。

1、5 内核的版本

Linux内核有两种:稳定的和处于开发中的。如果数字为偶数,即是稳定版内核;若是奇数,则是开发版内核。
         


第二章 从内核出发


2、1 内核源码树

2、2 编译内核

1、配置内核:

  • make config:逐一遍历所有配置项
  • make defconfig:容易找到内核项,并直接修改它
  • make oldconfig:编译内核之前都应该这样做
  • $zcat/proc/config.gz>.config  $make oldconfig 复制配置文件并编译新内核

2、减少编译垃圾信息:

  • $make >../dev/null

2、3 衍生多个编译作业:

  • $make -jn 衍生多个作业,n是作业数。
  • 每个处理器一般衍生出一两个作业,16核可输入:$make -j32 >/dev/null
  • 安装新内核 make modules_install

2、4 内核开发的特点

  • 内核编程时既不能访问C库,也不能访问标准的C开头的文件(包含<linux/string.h>头文件就可以使用)
  • 内核编程时必须使用GUN C(gcc是多种GUN编译器的集合,在偏近体系结构的底层或对执行时间严格的时候一般用汇编语言,内核其他大部分代码用C语言编写。)
  • 内核编程时缺乏保护机制(内核中的内存不分页)
  • 内核编程时难以执行浮点计算
  • 内核给每个进程一个很小的定长的堆栈(容积小固定的栈)
  • 同步和并发(内核容易产生竞争条件,许多特性要求共享数据,需要同步机制保证不出现竞争条件)
  • 可移植性的重要性(保持字节、64位对齐、不假定字长和页面长度由李玉移植性)

Linux第一章第二章学习笔记的更多相关文章

  1. Linux内核分析第二周学习笔记

    linux内核分析第二周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.co ...

  2. Linux内核分析——第二周学习笔记20135308

    第二周 操作系统是如何工作的 第一节 函数调用堆栈 存储程序计算机:是所有计算机基础的框架 堆栈:计算机中基础的部分,在计算机只有机器语言.汇编语言时,就有了堆栈.堆栈机制是高级语言可以运行的基础. ...

  3. 三20135320赵瀚青LINUX内核分析第二周学习笔记

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.计算机的三个法宝 存储程 ...

  4. Linux内核分析——第二周学习笔记

    20135313吴子怡.北京电子科技学院 chapter 1 知识点梳理 (一)计算机是如何工作的?(总结)——三个法宝 ①存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: ②函数调用堆栈,高 ...

  5. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  6. 《Linux内核分析》第二周学习笔记

    <Linux内核分析>第二周学习笔记 操作系统是如何工作的 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/ ...

  7. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥

    1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...

  8. 《细说PHP》第四版 样章 第二章 PHP的应用与发展 1

    <细说PHP>第四版 样章 第二章 PHP的应用与发展 1 学习任何编程语言之前,先了解一下它的应用与发展是很有必要的.从Web开发的历史看来,PHP.Python和Ruby几乎是同时出现 ...

  9. Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver

    1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...

  10. LINUX内核分析第二周学习总结——操作系统是如何工作的

    LINUX内核分析第二周学习总结——操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...

随机推荐

  1. poi 创建excel数据

    public static void main(String[] args) throws Exception { // TODO 设置excel的标题 List<String> exce ...

  2. Nginx HTTPS功能部署实践

    本文出处:http://oldboy.blog.51cto.com/2561410/1889346 30.1 文档目的 本文目的提高自己文档的写作能力及排版能力,加强上课所讲的内容得以锻炼也方便自己以 ...

  3. Sql注入测试--Sqlmap

    慕课网sqlmap学习笔记: 一.SQL注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 例如 (1)在url上 ...

  4. jq中each的中断

    最近在做项目中,遇到jq的each方法中的回调函数里面的break不生效,即通过 jquery 的循环方法进行数组遍历,但是当不符合条件时,怎么跳出当前循环,我们经常会习惯JS中的break和cont ...

  5. Android 绘图时实现双缓冲

    一.双缓冲技术原理: 在内存中创建一片内存区域,把将要绘制的图片预先绘制到内存中,在绘制显示的时候直接获取缓冲区的图片进行绘制.更具体一点来说:先通过setBitmap方法将要绘制的所有的图形绘制到一 ...

  6. Python3.2-re模块之常用正则记录

    python的re模块是个很好的模块,这里简单记录下自己编写的几个有用的正则: 1:邮箱匹配: gReMailbox = re.compile(r'([\w\.\-+]+@[\w\-]+(?:\.[\ ...

  7. Vim2.1-Vim简明教程【CoolShell】【非原创】

    vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...

  8. MVC 全局拦截aciton

    上篇:MVC 拦截指定的action 有时,我们需要对所有aciton在执行前/后做一些(预)处理,如何实现呢? 1.定义一个action筛选类.继承至System.Web.Mvc.IActionFi ...

  9. php操作oracle查询时中文乱码

    putenv("LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib"); putenv("ORACLE_HOME=/usr ...

  10. 添加mysqld、apache服务到windows服务

    mysqld --install   “d:\apache\bin\httpd.exe” -k install