操作系统的目标:
-
方便:使计算机系统易用
-
有效:以更有效的方式使用计算机系统资源
-
扩展:方便用户有效开发、测试和引进新功能
操作系统的 作用:
1. 有效的管理资源
2.通过命令接口、编程接口等为用户提供各种功能服务
3.对硬件机器的扩展
操作系统的特征:
1.并发——处理多个同时性活动的能力。(同个时间段)
2.并行——指不同程序同时在多个硬件部件上执行。(同个时间点)
3.共享。
4.虚拟。——可以提高资源利用率。
5.随机。——不可预测的次序。
实时操作系统:
目标:
对外部请求在严格时间范围内作出响应
高可靠性
Linux中的中断向量表:
多到程序设计:
允许多个程序同时进入内存并行,其目的是为了提稿系统效率。
并发环境:
多个程序同时处于开始运行但尚未结束的状态,并且次序不是事先确定的
进程的定义:
进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源 分配和调度的独立单位。
又称 任务:
程序的一次执行过程。
是正在运行程序的抽象。
将一个CPU变幻成多个虚拟的CPU
系统资源以进程为单位分配,入内存、文件、.......每个具有独立的地址空间。
操作系统将CPU调度给需要的进程。
PCB(进程控制块)是系统感知进程存在的唯一标志
——》进程与PCB是一一对应的
进程的三种基本状态:
运行态、就绪态、阻塞态
运行态:
占有CPU,并在CPU上运行
就绪态:
已经具备运行条件,由于没有空闲CPU,而暂时不能运行。
阻塞态:(等待态、封锁态、睡眠态)
因等待某一事件而暂时不能运行
进程与程序的区别:
1.进程更能准确刻画并发,而程序不能。
2.程序是静态的,进程是动态的
3.进程有生命周期的,有诞生有消亡,短暂的;而程序是相对长久的。
4.一个程序可对应多个进程
5.进程具有创建其他进程的功能
线程的引入:
在进程中再派生线程的三个理由:
应用的需要
开销的考虑
性能的考虑
如果没有线程?
一个服务进程
顺序编程;性能下降
有限状态机
编程模型复杂;采用非阻塞I/O
直接开销:
内核完成切换所用的CPU时间
-
保存和恢复寄存器.......
-
切换地址空间(相关指令比较昂贵)
间接开销
-
高速缓存、缓冲区缓存和TLB失效
优先级反转问题:
影响:
系统错误
高优先级进程停滞不前,导致系统性能降低
解决方案:
设置优先级上限
优先级继承
使用中断禁止
典型系统所采用的的调度算法
-
Unix 动态优先数法
-
5.3BSD 多级反馈队列法
-
Linux 抢占式调度
-
Windows 基于优先级的抢占式多任务调度
-
Solaris 综合调度算法
信号量及P、V操作:
-
P、V操作为原语操作
-
在信号量上定义了三个操作
-
初始化(非负数)、P操作、V操作
-
最初提出的是二元信号量——解决互斥, 之后,推广到一般信号量(多值)或计数信号量(解决同步)
用PV操作解决进程间互斥(mutex)问题:
-
分析并发进程的关键活动,划定临界区
-
设置信号量mutex,初值为1
-
在临界区前实施P(mutex)
-
在临界区之后实施V(mutex)