【深入理解Linux内核】《第一章 绪论》笔记

1.商用Unix操作系统包括:

- AT&T公司开发的(System V Release 4) SVR4、

- 加州伯克利分校发布的4.4BSD

- Dec公司(现属于HP)的Digital Unix

- IBM公司的AIX

- HP公司的HP-UX

- Sun公司的Solaris   - Apple公司的Mac OS X

所有商业版本都是SVR4或4.4BSD的变体,并且都趋向于遵循某些通用标准:如IEEE的POSIX(Portable Operating Systems based on Unix)和X/Open的CAE(Common Application Environment)。

2.除了Linux外,还有一些其他的类Unix也是开放源码的,如FreeBSD,NetBSD, OpenBSD.

3.Linux可以运行的平台,处x86外,还有HP的Alpha,Intel的Itanium,AMD的AMD64,Power PC以及IBM的zSeries.

4.用户态和内核态:

当一个应用程序在用户态下执行时,它不能直接访问内核数据结构或内核的程序。然而,当应用程序在内核态下运行时,这些限制不再有效。有以下几种方式激活内核例程:

  • 进程调用系统调用。
  • 正在执行进程的CPU发出一个异常(exception),内核代表产生异常的进程处理异常。
  • 中断信号
  • 内核线程被执行。

5.当内核暂停一个进程的执行时,就把几个相关处理器寄存器的内容保存在进程描述符中。

  • 程序计数器(PC)和栈指针(SP)寄存器
  • 通用寄存器
  • 浮点寄存器
  • 包含CPU状态信息的处理器控制寄存器(处理器状态字,Processor Status Word)
  • 用来跟踪进程对RAM访问的内存管理寄存器。

6.可重入内核:如果一个硬件中断发生,可重入内核能挂起当前正在执行的进程,即使这个进程处于内核态。

提供可重入的一种方式是编写函数,以便这些函数只能修改局部变量,而不能改变全局数据结构,这样的函数叫可重入函数。但是可重入内核不仅仅局限于这样的可重入函数,可重入内核可以包含非重入函数,并且利用锁机制保证一次只有一个进程执行一个非重入函数。

我的理解:所谓可重入,指的就是在内核态执行了一半,被打断,完了又可以继续执行。

7.单块结构内核和微内核

大部分Unix内核是单块结构:每一个内核层都被集成到整个内核程序中,并代表当前进程在内核态下运行。

相反,微内核操作系统只需要内核有一个很小的函数集,通常包括几个同步原语、一个简单的调度程序和进程间通信机制。运行在微内核之上的几个系统进程实现从前操作系统级实现的功能,如内存分配程序、设备驱动程序、系统调用处理程序等等。

【深入理解Linux内核】《第一章 绪论》笔记

时间: 2024-10-25 12:52:24

【深入理解Linux内核】《第一章 绪论》笔记的相关文章

深入理解Linux内核 第一章 绪论

Unix 文件系统概述 Unix的每个进程都有一个当前工作目录. 为标识一个特定的文件,进程使用路径名.如果路径名第一个字符是斜杠,那么这个路径是绝对路径,其起点是根目录:如果第一项是目录名或者文件名,那么这个路径就是相对路径,其起点是进程的当前目录. 硬链接的限制 1)不允许用户给目录创建硬链接,因为这可能把目录的树形结构变成环形结构. 2)只有在同一文件系统中的文件之间才能创建硬链接.此限制较大,因为现代Unix系统可能包含多种文件系统,这些文件系统位于不同的磁盘和/或分区,用户也无法知道他

深入理解Linux内核 - 第二章 内存寻址 04

问题:段描述符中的字段含义? 段首地址的线性地址/偏移/粒度/特权限制等信息. 1,快速访问段描述符 在加载段选择符时,相应的段描述符被自动由内存装入对应的非编程CPU寄存器.装入后就不再访问主存中的GDT或LDT. 2,段选择符的字段 index:指定了放在GDT或LDT中相应段描述符的入口 TI:0 GDT 1 LDT RPL:特权级,特指装入CS段中当前CPU的特权级. 3,段描述符地址换算 GDT地址:0x00020000 index:2 地址:0x00020000+(2*8))0x00

《深入理解计算机系统》 第一章读书笔记

最近开始啃CSAPP,买了英文版,看得比较慢.只有先理解系统才能在更多方面学的更明其实质 Chapter1: * 一份hello.c代码的编译分为四个阶段:1.Pre-processor:编译预处理,就是把#include后面的库代码加入到程序中,生成hello.i的文件. 2.Complier:用编译器把hello.i的C代码翻译成汇编语言,并生成:hello.s文件.(汇编语言是高级语言转为机器码的一个中间过程) 3.Assembler:汇编机把汇编语言翻译成机器二进制代码,生成hello.

《深入理解计算机系统》第一章学习笔记

信息就是位+上下文 源程序:就是一个由0和1组合的位(bit)序列,8位组成一字(byte),每个字节表示某个文本字符. 系统中所有的信息--包括磁盘文件.存储器中的程序.存储器中存放的用户数据以及网络上传送的数据,都是由一串位表示的.区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文. C语言的起源: 由Dennis Ritchie在1969年~1973年创建的. 美国国家标准学会(American National Standards Institute,ANSI)在1989年颁布了

深入理解Linux内核 - 第二章 内存寻址 03

问题:1,逻辑地址怎么求?2,段描述符的base字段怎么求? 逻辑地址:由16位段选择符和32位偏移量组成,并不是说这个地址就是段选择符偏移32位再和偏移量相加. 段选择符:或叫段标识符,是一个16位长的字段.顾名思义,用于选择段的.为了快速找到段选择符,处理器提供段寄存器. 15~3bit,段索引号,2bit TI位, 1 0 位,特权级别. 由于段选择符仅仅在转换成线性地址中发挥作用,则通常认为32位偏移量就是逻辑地址.也即c语言中用&求得一个变量的地址就是逻辑地址. 段描述符:段选择符中,

深入理解Linux内核 - 第二章 内存寻址 01

1,三个地址 逻辑地址,机器语言指令中用来指定一个操作数或一条指令的地址. 线性地址:32位无符号整数,高达4GB.64位的cpu就是64位的线性地址 物理地址:内存芯片级内存单元寻址.老式x86由32位或36位无符号整数表示. 2,MMU内存控制单元 存在一个分段单元的硬件电路将一个逻辑地址转换为线性地址 存在一个分页单元的硬件电路将线性地址转换成一个物理地址. 问题: 1,为什么物理地址能够用36位的地址来表示? 2,为什么是逻辑地址转换成线性地址,再由线性地址转换为物理地址,这3个地址是什

深入理解Linux内核 第二章 内存寻址

内存地址 当使用80x86微处理器时,必须区分以下三种不同的地址: 1)逻辑地址(logical address),每一个逻辑地址都由一个段(segment)和偏移量(offset或者displacement)组成,偏移量指明了从段开始的地方到实际地址之间的距离. 2)线性地址(linear address),也称虚拟地址(virtual address),是一个32bit无符整数,可以用来表示4G的地址,通常由16制数字表示. 3)物理地址(physical address),用于内存芯片级内

【深入理解Linux内核】《第二章 内存寻址》笔记 (2014-06-28 12:38)

2.1 内存地址 逻辑地址:段+偏移 线性地址(虚拟地址) 物理地址 2.2硬件中的分段 2.2.1 段选择符和段寄存器 15                                                3  2  1   0 ------------------------------------------------|                                                    |TI |RPL  ||         索引号 

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

<内核设计与实现>第一章读书笔记 第一章:Linux内核简介 1.1 Unix的历史 Unix强大的特点 A.简洁,几百个系统调用,明确的设计目的 B.文件对待所有东西 C.移植性强(C语言) D.进程创建快,使用fork()系统调用. E.进程间通信元语,进程间通信机制 1.2 linux的简介 Linux系统的基础是内核.C库.工具库和系统的基本工具. 1.3 操作系统和内核简介 内核:管理者,操作系统的核心 通常一个内核由负责响应中断的中断服务程序和网络.进程间通信等系统服务共同组成.