第一章


1.Unix内核特点

  1. 十分简洁:仅提供几百个系统调用并且有明确的目的;

  2. 在Unix中,大部分东西都被(或者正致力于)被当做文件对待;

  3. Unix内核即相关系统工具软件都是用C语言编写的,这使得系统有着强大的可移植性;

  4. Unix进程创建非常迅速,目标在于一次执行保质保量地完成一个任务

2.Linux与Unix异同

  • Linux是基于Unix的类系统,比如它也实现了Unix的API;

  • 但它不同于Unix,没有利用Unix内核源代码;

  • Linux是非商业的产品,任何人都可以参与到它的开发中

  • Unix内核与Linux内核的比较

  • Unix内核是一个不可分割的静态可执行库,通常需要硬件系统提供页机制(MMU)以管理内存;
  • Linux支持动态加载内核模块,并且是可抢占的。

3.Linux系统的基础是内核、C库以及工具集和系统的基本工具。

4.操作系统&内核

  1. 操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分,包括内核;

  2. 内核是操作系统的核心,系统其它部分必须依靠内核这部分软件提供的服务;

  3. 内核的组成&功能完成

    • 内核由调度、中断服务、通信等程序组成;
    • 内核处于的系统态以及受保护的内存空间被称为内核空间;
    • 应用程序通过系统调用接口与内核通信(这种交互方式是应用程序完成其工作的基本方式之一),有以下三种情况:
      • 函数较为复杂,系统调用只是工作的一部分;
      • 函数和系统调用是一一对应的关系;
      • 函数根本不需要调用系统级的操作。

4.内核分类

  1. 单内核(比如大多数Unix及Linux)

    • 把内核整体上作为一个大的单独的过程来实现,同时运行在一个单独的地址空间上
    • 简单,性能高
  2. 微内核(比如Windows NT)

    • 微内核的功能被划分为多个独立的功能,每个过程叫做一个服务器;便于处理内核间通信,还使用了IPC机制;

第二章


1.源代码管理

  1. 使用Git内核源代码一般安装在/usr/src/linux目录下,这个源码树并不能用于开发

    • Git作为版本控制系统来管理Linux内核源代码;
  2. 源代码树

    • 有很多目录值得被注意:

      • arch:特定体系结构的源代码;
      • include:内核头文件;
      • kernel:像调度程序这样的核心子系统。

2.编译内核

  1. 目的:将自己需要的功能编译进内核

  2. 步骤:

    1. 配置内核
    2. 前提:可以配置的各种变量都以CONFIG_前缀表示。
    3. 衍生多个编译作业
      • 一般每个处理器都会衍生1——2个作业,改善处理器的利用率
      • make -j32 > /dev/null
    4. 安装新内核

3.内核开发特点

  1. 无lib库或者标准头文件,不能直接使用标准C函数库

  2. 内核编程时使用GNU C,比如内联函数、内联汇编等

  3. 没有内存保护机制

《Linux内核设计与实现》第1、2章读书笔记的更多相关文章

  1. 《Linux内核设计与分析》第四章读书笔记

    <内核设计与实现>第四章读书笔记 第四章:进程调度 进程(操作系统)程序的运行态表现形式. 进程调度程序,它是确保进程能有效工作的一个内核子系统. 调度程序负责决定将哪个进程投入运行,何时 ...

  2. 《Linux内核设计与分析》第十七章读书笔记

    设备与模块 关于设备驱动和设备管理,四种内核成分. 设备类型:在所有Unix 系统中为了统一普通设备的操作所采用的分类. 模块: Linux 内核中用于按需加载和卸载目标码的机制. 内核对象:内核数据 ...

  3. 《Linux内核设计与实现》第一二章读书笔记

    第一章 Linux内核简介 1.Unix简介 (一)概念:支持抢占式多任务.多进程.虚拟内存.换页.动态链接和TCP/IP网络的现代化操作系统. (二)Unix特点(层次化结构): Unix很简洁,仅 ...

  4. 《Linux内核设计与实现》第17章读书笔记

    第十七章  设备与模块 一.四种内核成分 设备类型:在所有 Unix 系统中为了统一普通设备的操作所采用的分类. 模块: Linux 内核中用于按需加载和卸载目标码的机制. 内核对象:内核数据结构中支 ...

  5. 《Linux内核设计与实现》第4章读书笔记

    第四章 进程调度 调度程序负责决定将哪个程序投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.调度程序是像Linux这样的多任务操作系统的基 ...

  6. 《Linux内核设计与实现》第四章读书笔记

    4.1 多任务 多任务操作系统就是能同时并发地交互执行多个进程的操作系统. 多任务系统可以划分为两类: 非抢占式多任务进程会一直执行直到自己主动停止运行 抢占式多任务Linux/Unix使用的是抢占式 ...

  7. 《Linux内核设计与实现》第三章读书笔记

    一.进程(任务)描述 1.进程是处于执行期的程序:除了可执行程序代码,还包括打开的文件.挂起的信号.内核内部数据.一个或者多个执行线程等多种资源 线程是在进程活动中的对象:内核调度的对象是线程而不是进 ...

  8. 《Linux内核设计与实现》第七章读书笔记

    第七章.中断和中断处理 7.1中断 中断使得硬件得以发出通知给处理器.中断随时可以产生,内核随时可能因为新来到的中断而被打断. 不同的设备对应的中断不同,而每个中断都通过一个唯一的数字标志.操作系统给 ...

  9. 《Linux内核设计与实现》第五章读书笔记

    第五章  系统调用 5.1与内核通信 1. 系统调用 让应用程序受限的访问硬件设备 提供创建新进程并与已有进程通信的机制 提供申请操作系统其他资源能力是用户空间进程和硬件设备之间的中间层 2. 系统调 ...

  10. 《Linux内核设计与实现》第3章读书笔记

    第三章 进程管理 一.进程 1.进程就是处于执行期的程序,但并不局限于可执行代码.实际上,进程是正在执行的程序代码的实时结果. 2.执行线程是在进程中活动的对象 每个线程拥有一个独立的计数器.进程栈. ...

随机推荐

  1. ddms+adt+jdk的安装及调试开发安卓

    _______ ddms+adt+jdk的安装及调试开发安卓 目录 阐述 1 1  jdk安装 1 2  sdk安装 3 3  Eclipse安装 6 4  ADT安装 10 5  Ddms使用 16 ...

  2. static和构造函数初始化顺序

    abstract class demo{ public demo() {} protected void a() { System.out.println("I am parents!&qu ...

  3. 使用PHP写ajax接口

    使用PHP写ajax接口 之前有学过php都是前后端没有分离的,所以也想去了解后端是怎么写出ajax接口的,可能问了别人或者上网找了很多资料都很有有点懵,或者说直接用TP或者lavarel这些后端框架 ...

  4. 使用经验风险最小化ERM方法来估计模型误差 开坑

    虽然已经学习了许多机器学习的方法,可只有我们必须知道何时何处使用哪种方法,才能将他们正确运用起来. 那不妨使用经验最小化ERM方法来估计 . 首先: 其中, δ代表训练出错的概率 k代表假设类的个数 ...

  5. Python 装饰器Decorator(一)

    (一) 装饰器基础知识 什么是Python装饰器?Python里装饰器是一个可调用的对象(函数),其参数是另一个函数(被装饰的函数) 假如有一个名字为somedecorator的装饰器,target是 ...

  6. php 中关于pdo的使用

    之前一段时间,开始了php的研究,看了关于PDO的一些资料,发现不错,整理和总结一下,作为开发笔记,留待日后使用,<PHP开发笔记系列(一)-PDO使用>. PDO是PHP Data Ob ...

  7. “Hello World!”团队第七次Scrum立会

    "Hello world!"团队召开第七次Scrum立会.博客内容: 1.会议时间 2.会议成员 3.会议地点 4.会议内容 5.Todo list 6.会议照片 7.燃尽图 一. ...

  8. P4 Runtime和p4 info

    p4runtime P4 Runtime是一套基于Protobuf以及gRPC框架上的协议,通过P4runtime,SDN控制器可以控制能够支援p4的设备. p4runtime当前由p4 API wo ...

  9. Codeforces Beta Round #14 (Div. 2) D. Two Paths 树的直径

    题目链接: http://codeforces.com/contest/14/problem/D D. Two Paths time limit per test2 secondsmemory lim ...

  10. webService —— soap

    package soupTest; import javax.jws.WebMethod; import javax.jws.WebService; import javax.xml.ws.Endpo ...