Linux与其它类Unix内核的比较
- 宏内核: 基于模块,弥补了部分宏内核的劣势
- 模块按需装载
- 内核线程
- 多线程支持: 轻量级进程
- 抢占式
- 多处理器支持
- 文件系统
操作系统基本概念
功能
- 与硬件交互
- 为应用程序提供执行环境
多用户系统
- 并发
- 独立
进程
- 程序执行的一个实例
内核体系结构
- 宏内核+模块
- 模块: 一个目标文件,代码可在运行时链接到内核或从内核解除链接
Unix文件系统
硬链接和软链接
- 作用:文件共享使用
- 硬链接
- 一个inode号对应多个文件名
- 不能给目录创建硬连接
- 同一文件系统中的文件才能创建硬链接
- 软连接
- 文件数据块中存放的内容是另一文件路径名的指向
文件类型
- 普通文件
- 目录
- 符号链接
- 面向块的设备文件
- 面向字符的设备文件
- 管道和命名管道
- 套接字
文件描述符和索引节点
- 索引节点:标示文件
- 包含的内容
- 文件类型
- 与文件相关的硬链接个数
- 文件长度
- 设备标示符
- 索引节点号
- 文件拥有者的UID
- 文件的用户组ID
- 时间戳(索引节点状态改变时间,文件最后访问时间,文件最后修改时间)
- 访问权限和文件模式
访问权限和文件模式
- 文件用户
- 文件所有者
- 同组用户
- 其他用户
- 三种权限
- 读
- 写
- 执行
Unix内核概述
用户态和内核态
- 用户态切换到内核态的几种方式
- 系统调用
- 正在执行进程的CPU发出异常信号(除0,内存缺页)
- 外围设备向CPU发出中断信号(键盘输入,I/O操作完成)
- 内核线程被执行
进程实现
- 进程描述符
- 程序计数器(PC):下一条指令的地址
- 栈指针(SP)寄存器:进程上下文
- 通用寄存器
- 浮点寄存器
- 处理器控制寄存器
- 内存管理寄存器
可重入内核
- 可重入函数:只能修改局部变量
- 可重入内核:可重入函数,非可重入函数+锁机制
同步和临界区
- 非抢占式内核
- 禁止中断
- 信号量
- 自旋锁
信号和进程间通信
进程管理
- 僵死进程: 父进程执行完wait调用前,子进程结束后,成为僵死进程
- 进程组和会话
内存管理
- 虚拟内存
- 内存分配
- 告诉缓存