1.引论
计算机运行模式:内核态与用户态,操作系统作为软件中最基础的部分,运行在内核态(管态、核心态)
操作系统由硬件保护,防止用户试图对其进行修改,但在嵌入式系统(无内核态)或解释系统(解释方式而非硬件方式区分组件)中并非如此。
操作系统的定义
运行在内核态的软件
运行两个基本独立的任务:
1.为应用程序提供一个资源集合的清晰抽象
2.管理硬件资源
概念:抽象
抽象是管理复杂性的一个关键,抽象可以将几乎不可能管理的任务划分为可管理的两个部分,
第一部分是有关抽象的定义和实现,
第二部分是随时用该抽象解决问题,抽象是理解操作系统的关键
从不同的角度理解操作系统
自顶向下:操作系统向应用程序提供基本抽象
自低向上:操作系统用来管理一个复杂系统的各个部分
硬件组成:操作系统在相互竞争的程序之间有序地控制对处理器、存储器以及相关I/O接口设备等硬件资源的调度与分配
资源管理
时间复用:不同程序或用户轮流使用
空间复用:每个程序都获得资源的一部分
计算机硬件
处理器(CPU):从内存中取出指令并执行,每个CPU都有一套可执行的专门指令集,包含通用寄存器、程序计数器、堆栈指针、程序状态字寄存器
程序计数器:指向下一条指令的内存地址
堆栈指针:指向内存中当前栈的顶端
程序状态字寄存器:包含条件码位、CPU优先级等各种控制位,例如可以控制CPU处于内核态或是用户态,当处于内核态时可以执行指令集中的每一条指令,而处于用户态时仅能执行整个指令集的一个子集
存储器
磁盘
磁带
I/O设备
总线
2.进程
创建进程的4种方式
1.系统初始化
2.正在运行的进程调用系统调用创建进程
3.用户请求创建新的进程
4.一个批处理作业的初始化
进程终止的4种情况
1.正常退出
2.出错退出
3.严重错误
4.被其它进程杀死
进程的层次结构
父进程与子进程以某种形式保持关联,子进程可以创建更多的进程,组成进程的层次结构
而Windows中没有进程层次的概念,所有进程的地位相同,
唯一类似进程层次的暗示为父进程拥有一个句柄,可用于控制子进程,其有权将句柄交予某个其它进程
进程的状态
- 运行态(进程占用CPU)
- 阻塞态(除非某种外部事件发生,否则进程不能运行)
- 就绪态(可运行,因其它进程正在运行而暂时停止)
就绪态与运行态的转换由进程调度程序引起,进程调度程序是操作系统的一部分,进程甚至感觉不到调度程序的存在,如何调度由具体的调度算法决定
进程的实现
进程表(process table),每个进程占用一个进程表项(进程控制块)
中断
进程间通信
避免竞争条件:
1.任何两个进程不能同时处于其临界区
2.不对CPU的速度和数量做任何假设
3.临界区外运行的进程不得阻塞其它进程
4.不得使进程无限期等待进入临界区
忙等待的互斥:
1.屏蔽中断
2.锁变量
3.严格轮换
4.Peterson解法
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。