深入理解LIINUX内核 1 绪论

1. 操作系统基本概念

与硬件部分交互, 为包含在硬件平台的所有底层可编程部件提供服务.

为运行在计算机系统上的应用程序(即用户程序)提供执行环境.

用户态与内核态

进程: 程序执行时的一个实例/执行上下文

内核体系结构

大部分Unix内核是单块结构

Unix文件系统

硬链接 1. 不允许创建目录硬链接 2. 只能在同一文件系统下创建

软连接 没有硬链接的限制

文件类型

普通文件

目录

符号链接

面向块的设备文件

面向字符的设备文件

管道和命名管道

套接字

文件描述符与索引节点

POSIX标准属性:

文件类型

与文件相关的硬链接个数

以字节为单位的文件长度

设备标识符

在文件系统中标识文件的索引节点号

文件拥有者的UID

文件的用户组ID

几个时间戳, 表示索引节点状态改变的时间, 最后访问时间及最后修改时间

访问权限和文件模式

访问权限和文件模式

文件的潜在用户分为三种类型:

作为文件所有者的用户

同组用户, 不包括所有者

所有剩下的用户(其他)

附加标记: suid, sgid, sticky

进程/内核模式

CPU即可以运行在用户态也可以运行在内核态

内核线程(特权进程)

  1. 以内核态运行在内核地址空间
  2. 不与用户直接交互
  3. 在系统启动时创建, 直到系统关闭

激活内核例程方式

进程调用系统调用.

正在执行进程的CPU发出一个异常信号.

外围设备向CPU发送一个中断信号.

内核线程被执行.

进程实现

每个进程由进程描述符标识

暂停进程: 添加几个相关处理器内容保存到进程描述符.

程序计数器(PC)和栈指针(SP)寄存器

通用寄存器

浮点寄存器

包含CPU状态信息的处理器控制寄存器

用来跟踪进程对RAM访问的内存管理寄存器

可重入内核

内核控制路径的交错执行

图!!!

进程地址空间

用户态: 数据区, 代码区, 私有栈

内核态: 数据区, 代码区, 私有栈

备注: 用户态和内核态的私有栈是独立的.

每个进程访问私有地址, 但是有时候进程间也共享部分地址空间.

一个程序多个用户使用, 程序只被内存装载内存一次, 其指令由所有哦使用它的用户共享, 每个用户独立数据.

进程间也有共享部分地址空间, 用于进程间通信.

同步和临界区

非抢占式内核

禁止中断

信号量

自旋锁

避免死锁

信号和进程间通信

进程管理

僵尸进程

进程组和登录会话

内存管理

虚拟内存

随机访问存储器(RAM)的使用

内核内存分配器

进程虚拟地址空间处理

高速缓存

设备驱动程序

版本控制

Version Action Time
1.0 Init 2019-08-25