一、计算机概述
1,硬件结构
硬件-----计算机核心----单硬件----裸机
操作系统-----硬件基础上工作,对硬件资源进行控制和管理。
2,基本构成
处理器---
主存储器(内存)--存储数据和程序
输入/输出模块
系统总线
3,处理器
寄存器
指令的执行
数据交换
4,存储设备(存储计算机处理的信息)
存储器的层次结构
寄存器
主存储器
高速缓存存储器
磁盘
5,IO结构
二、操作系统的概述
1,定义---系统软件(管理硬件和软件资源)
2,操作系统为用户提供服务:用户接口,程序执行,I/O操作,文件管理,错误处理
3,操作系统是一种虚拟机,资源管理器
4,进程的观点---运行的程序称为进程(操作系统保证进程的正常推进)
5,特征----并发性(同时存在多个平行的活动)
共享性
随机性(随机环境中运行,需要对不可预测事件进行响应)
三、操作系统的功能
1,处理器管理
2,存储管理
3,设备管理
4,文件管理
5,进程调度
6,用户接口
四,操作系统的发展和分类(略)
五,操作系统的结构
1,简单模块组合结构
2,层次结构
3,微内核结构(客户/服务器结构)---由运行在核心态的内核和运行在用户态的进程层。
六,LNIX操作系统
1,由UNIX内核,系统调用接口,UNIX命令和库组成。
2,内核----进程控制子系统和文件管理子系统
3,基于PC多用户,多任务的操作系统。
第二章(重要)
一,进程的概念(进程是程序在并发环境中的执行过程)
1,多道程序设计
定义:内存同时有多道程序,在管理程序的控制下交替在CPU上运行。
2,进程与程序的区别:
动态性:进程是程序的一次执行过程
并发性:进程作为资源申请和调度单位的存在。
非对应性:程序和进程不具有一一对应关系。
异步性:进程并发执行会产生相互制约,程序是静态的不会存在异步。
二,进程的状态与转换(进程基本特征动态性,并发性,调度性)
通常一个进程至少有三种基本状态:
运行状态(Running):运行状态是指当前进程已经分配到CPU,正在处理机上执行时的状态
就绪状态(Ready):就绪状态是指进程已经具备运行条件,但因其他进程正占用CPU,使其不能运行而只能处于等待CPU的状态。处于此状态的进程数目可以有多个。
阻塞状态(Blocked):又称为等待状态或封锁状态,一个进程正在等待某一事件(如等待某资源成为可用,等待输入输出完成或等待与其他进程的通信等)而暂时不能运行的状态。
1,进程的状态及其转换过程
如图所示
2,进程的描述与控制
描述:进程映像----进程的活动(CPU执行一系列程序和相对应的数据实现)--->数据是进程主体(静态)
故需数据结构记录进程的动态特性(进程控制块PCB)
进程映像一般由程序,数据,栈,和PCB组成
进程控制块的定义和作用:操作系统用于描述进程状态过程。系统对进程的控制和管理是通过PCB实现的。
进程控制块的组成(略)进程描述信息,处理器状态信息(现场保护区),进程控制信息
控制:
三,进程的组织
1,进程的组成(进程控制块,程序段,数据段)
2,PCB的组织方式
链接方式(PCB状态的不同,把具有相同状态的PCB,链接成一个队列)
索引方式(根据所有进程的状态,建立几张索引表。如就绪索引表、阻塞索引表等)
四,进程的通信
1,共享存储器系统(在存储器中划出一块共享存储区,相互通信的进程共享某些数据结构或共享存储区)
共享数据结构
共享存储区
2,消息传递系统(进程间的信息交换以消息或报文为单位,程序员直接利用系统提供的一组通信命令(原语)来实现通信)
直接通信
间接通信
3,管道通信-----基于原有文件系统形成的一种通信方式。
为了协调双方的通信,管道通信机制必须提供三方面的协调能力:
(1)互斥。当一个进程正在对pipe进行读/写操作时,另一进程必须等待。
(2)同步。当写(输入)进程把一定数据(如4kB)写入pipe后便去睡眠等待,直到读(输出)进程取走数据后再把它唤醒。当读进程读一空pipe时也应睡眠等待,直到写进程将消息写入管道后,才将它唤醒。
(3)对方是否存在。只有已确定对方存在时,方能进行通信。
线程
一,线程的概念
1,资源分配和调度分离开来------进程(资源分配的单位),线程(系统调度的单位,只含有少量资源)
线程是进程的一个实体,是系统实施调度的独立单位。
2,单线程进程和多线程进程
3,线程的状态
二,线程和进程的比较(略)
三,线程的实现与模型
- 线程的实现
内核感知进程存在,在内核的支持下进行进程切换。(进程)
依赖内核把线程分为:
用户级线程:只存在于用户级
内核级线程:线程管理的全部工作由操作系统内核在内核空间实现。内核调度以线程为单位。
混合式线程:
四,LINUX系统中的进程
1,LINUX进程的概念
处理机具有两种状态(核心态和用户态)
2,LINUX中进程的组成(正文段,用户数据段,系统数据段)
3,LINUX进程的状态
4,LINUX进程控制块的组成
(1)进程当前的状态。
(2)调度信息。
(3)进程标识符。
(4)进程通信信息。
(5)进程的家族关系。
(6)时间和定时信息。
(7)文件系统信息。
(8)存储管理信息。
(9)CPU现场信息。
二,LINUX进程的控制
三,LINUX进程的通信
第三章----处理机调度(对处理器进行分配)
功能:记住进程的状态
按算法决定哪个进程获取处理机,以及占用时间
收回处理机
一,调度类型
1,作业调度(高级调度)-----对作业分配内存,输入/输出设备等资源,并建立相应的用户进程和系统进程,程序和数据进入内存,作业进程竞争CPU,等待进程调度。
2,交换调度(中级调度)-----进程如何在主存储器中存放,即内存调度,进程挂起与对换
3,进程调度(低级调度)-----根据算法选取一个处于就绪状态的进程占用处理机。
二,进程调度
进程调度过程
(1)保存运行进程的现场信息。(保存现场)
(2)在就绪队列中选择一个最有资格运行的进程,使其占用cpu。(挑选进程)
(3)为新选中的进程恢复现场。(恢复现场)
三,引起进程调度原因-----系统的某事件导致当前进程挂起,其他进程提供抢占CPU上运行的机会。
调度时机(引起进程调度的原因):
(1)当前进程运行结束。
(2)当前运行进程因某种原因(I/O请求、P操作、阻塞原语等),从运行状态进入阻塞状态。
(3)执行完系统调用等系统程序后返回用户进程,这时可以看做系统进程执行完毕,从而可以调度一个新的用户进程。
(4)在采用抢占调度方式的系统中,一个更高优先级的进程要求使用cpu,则使当前运行进程进入就绪队列。
(5)分时系统中,分配给该进程的时间片用完。
四,进程的调度方式(重要)
1,非抢占式
2,抢占式、
五,调度准则----所有的处理机调度都由操作系统的调度程序实施。
面向系统的准则
CPU利用率
系统吞吐量
面向用户的准则
周转时间
就绪等待时间
响应时间
1,CPU的利用率=CPU有效工作t/CPU总的运行T。
CPU总运行T=CPU有效T+CPU空闲等待T。
2,系统吞吐量
3,就绪等待时间
4,响应时间
5,周转时间T = 完成时间T2 - 提交时间T1
系统中N个作业的平均周转时间为:
T=求和Ti/N
6,调度算法
先来先服务法
优点:
简单,易于理解,容易实现。
有利于长作业(进程),有利于CPU繁忙型作业(进程)。
缺点:
不利于短作业(进程),不利于I/O繁忙型作业(进程)。
效率较低。
适用于作业调度、进程调度。通常与其他算法结合起来使用
短作业优先法
优点:
对于一组给定的作业,SJF算法能给出较小的平均等待时间,提高了系统的吞吐量。
缺点:
实现上有困难,需要知道或至少需要估计每个作业/进程所需要的处理时间。
对长作业(进程)不利。
不能保证及时处理紧迫作业(进程)。
作业调度用的多,进程调度用的少。
最短时间剩余优先法
抢占式
优点:
保证新的短作业一进入系统就能很快得到服务,平均等待时间短。
缺点:
为保存进程断点现场,统计进程剩余时间增加了系统开销。
不利于长作业。
作业调度用的少,进程调度用的多
高响应比优先法
非抢占式
优点
是对FCFS和SJF调度算法的综合平衡,同时考虑每个作业的等待时间和估计需要的运行时间。
缺点
调度前需要计算作业的响应比,增加系统开销。
主要用于作业调度
优先级调度
时间片轮法
多级队列法
多级反馈队列法
六,线程调度
1.用户级线程
核心不负责线程的调度。核心只为进程提供服务,即从就绪队列中挑选一个进程(例如A),为它分配一个时间片,然后由进程A内部的线程调度程序决定让A的哪一个线程(如A1或A2)运行。
核心切换到其它进程之前,可能发生A进程的多个线程的切换。
2.核心级线程
由核心调度线程,不同进程的线程之间可能发生切换。
用户级线程调度与核心级线程调度的特点
性能
用户级线程切换可用机器指令,速度快;核心级线程切换需要全部上下文切换,速度慢。
阻塞
核心级线程方式下,一个线程因等待I/O而阻塞时,不会挂起整个进程;而用户级方式下会挂起整个进程。
七,多处理机调度
八,实时调度
算法
九,LINUX系统进程调度
第四章---进程的同步与死锁
一、进程同步的基本概念
4.1.1 并发性(一组进程执行在时间点上相互交替,在时间段上相互重叠)
4.1.2 与时间有关的错误
4.1.3 进程的同步与互斥
4.1.4 临界资源和临界区
临界区访问准则
无论使用何种方法解决进程同步问题,对临界区的访问应该遵循如下原则,违背任何一条,都将导致进程同步的错误。
(1) 空闲让进:当没有进程处于临界区,临界资源处于空闲状态时,立即可以允许一个进程进入临界区。
(2) 忙则等待:任何时候,处于临界区内的进程不可多于一个。当已有进程在临界区,其它欲进入的进程必须等待。
(3) 有限等待:进入临界区的进程要在有限时间内完成并退出临界区,以便让其它进程有机会记入临界区。
(4) 让权等待:如果进程不能进入自己的临界区,则应该停止运行,让出处理器,避免进程出现“忙等”现象。
使用信号的管程
管程由四部分组成:
管程的名称;
局部于管程的数据的说明;
对数据进行操作的一组过程;
对局部于管程内部的共享数据赋初值的语句。
死锁,就是多个进程循环等待它方占有的独占性资源而无限期的僵持下去的局面。显然,如果没有外力的作用,那么死锁涉及到的各个进程都将永远处于阻塞状态。
死锁的预防与避免
破坏互斥条件
破坏部分分配(占有且等待)条件
破坏不可抢占(非剥夺)条件
破坏循环等待条件