从上至下,用户——应用程序——操作系统——裸机(纯硬件)。
操作系统OS(Operating System)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配(从当前层次结构中间往两边看),提供用户和其他软件方便的接口和环境(当前层次结构从下往上看),同时它是计算机系统中最基本的系统软件(层次结构从上往下看)。
(1) 系统资源的管理者
(2)作为用户与计算机硬件之间的接口
联机命令接口又称为交互命令接口,给一句指令执行一句;脱机命令接口,给一堆命令执行一堆命令。
程序接口等于系统调用。
(1)并发
并发:两个或多个事件同一时间间隔内发生,这些事件宏观上同时发生,微观上交替发生。
(易混淆概念 并行:指两个或多个事件在同一时刻同时发生)
操作系统的并发性是指计算机系统中同时存在着多个运行着的程序。
(2)共享
共享即资源共享,是指系统中资源可供内存众多个并发执行的进程共同使用。
并发和共享关系(互为存在条件)
(3)虚拟
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体实际存在,而逻辑对应物使用户感受到的。
(4)异步
异步是指多到程序环境下,允许多个程序并发执行,但资源有限,进程的执行不是一贯到底,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
手工操作阶段:用户独占全机,人机速度矛盾导致资源利用率极低
批处理阶段:脱机输入/输出技术 (用磁带完成) 监督程序负责控制作业的输入、输出
多道批处理系统:
分时操作系统
实时操作系统
(1)两种指令
指令就是处理器(cpu)能是别的执行的最基本的命令
(2)两种处理器状态
(3)两种程序
(4)操作系统的内核
内核是计算机上配置的底层软件,是操作系统最基本最核心的部分。实现操作系统内核功能的那些程序就是内核程序。
(1) 中断机制的诞生
早期计算机个程序只能串行执行,系统资源利用率低,为了解决该问题,人们发明了操作系统,引入了中断机制,实现了多道程序并发执行。
发生中断就意味着需要操作系统介入,开展管理工作
(1)定义
程序:就是一个指令序列
早期的计算机(只支持单道程序) 程序的代码放在程序段内,程序运行过程处理的数据放在数据段内(如变量)
引入多道程序技术后:
程序段、数据段、PCB三部分组成进程实体(进程映像) 进程实体简称进程。
PCB是进程存在的唯一标志。
进程是系统进行资源分配和调度的基本单位。
(2)组成
程序段、数据段、PCB
进程的管理者(操作系统)所需要的数据都在PCB中,程序本身运行所需的数据在程序段和数据段中。
== PCB==
(3)组织
进程的组织是多个进程之间的组织方式问题
原语 运行在核心态(在操作系统内核中)
关/开中断指令的权限非常大,只允许在核心态下执行的特权指令
进程控制一定会导致进程状态的转换
(1)进程通信概念
进程通信就是进程之间的信息交换。进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为保证安全,**一个进程不能直接访问另一个进程的地址空间。**但是进程之间的信息交换又是必须实现,操作系统提供一些方法实现。
(2)共享存储
共享空间 对共享空间的访问是互斥的
(3)管道通信
半双工通信 若想双工 需要设置两个管道 各进程互斥的访问管道
(4)消息传递
进程中的数据交换以格式化的消息为单位 进程通过操作系统提供的 发送消息/接受消息 两个原语进行数据交换。
有的进程可能要同时做很多事,而传统的进程智只能串行地执行一列程序 为此引入线程来增加并发度。
传统的进程是程序执行流的最小单位
引入线程后:
(2)引入线程机制的变化
(3)线程的属性
(4)线程的实现方式
用户级线程(user-Level Thread,ULT)
2. 内核级线程(Kernel-Level Thread KLT 又称为内核支持的线程)
3. 同时指挥用户级线程和内核级线程
(5)多线程模型
挂起态与七状态模型
(3)低级调度
(4)三种调度的练习与对比
(2) 进程调度的方式
非剥夺调度方式 剥夺调度方式
(3)进程的切换与过程
(1)cpu利用率
忙碌时间/总时间=利用率
(2)系统吞吐量
单位时间内完成作业的数量 总共完成作业数/总共花的时间=系统吞吐量
(3)周转时间
从作业被提交给系统开始,到作业完成为止的时间间隔。
作业完成时间-作业提交时间=周转时间 平均周转时间=各作业周转时间之和/作业数
带权周转时间
(4)等待时间
进城作业处于等待处理机状态时间之和
(5)响应时间
用户从提交请求到首次产生响应的时间。
先来先服务 最短作业优先 最高响应比优先
(1)先来先服务(FCFS first come first serve)
(2)短作业优先(SJF Shortest Job First)
抢占式、非抢占式
(3)高响应比优先算法(HRRN Highest Response Ratio Next )
(4)总结
(1)时间片轮转调度算法(RR round-robin)
时间片太大,退化为先来先服务调度算法
时间片太小,进程切换频繁,系统花费时间更多
(2)优先级调度算法
(3)多级反馈队列调度算法
(4)总结
(1)单标志法
(2)双标志先检查法
(3)双标志后检查法
(4)Peterson算法
(1)中断屏蔽方法
不适用多处理机 关中断指令只对当前的处理机起作用
(2)TestAndSet指令(TS指令)
将检查和上锁的操作变为原子操作 防止异步带来的逻辑漏洞
(3)Swap指令
(1)信号量机制
wait和signal操作简称P、V操作(荷兰语缩写 proberen verhogen)
(1)信号量机制实现进程互斥
(2)信号量机制实现进程同步
(3)前驱关系
前操作之后执行V操作
后操作之前执行P操作
如果缓冲区大小为1,有时可以不设置互斥信号量(根据具体问题分析)
缓冲区为2或以上,如果不设置互斥信号量可能会导致数据覆盖问题
总结
(1)为什么引入管程
(2)管程的定义和基本特征
管程类似于面向对象的类
特征1、2: 类似于类中的private变量 特征3:进程访问缓冲区互斥(对共享数据的访问只能有一个)
(3)用管程解决生产者消费者问题
封装思想
(1)什么是死锁
(2)死锁 饥饿 死循环
(3)死锁产生的必要条件
(4)什么时候发生死锁
(5)死锁的处理策略
(1)破坏互斥条件
(2)破坏不可剥夺条件
(3)破坏请求和保持条件
(4)破坏循环等待条件
(1)什么是安全序列
(2)安全序列 不安全状态 死锁的联系
迪杰特斯拉算法
寻找安全序列的情况
找不到安全序列的情况
代码实现
(1)死锁的检测
不能消除所有边 发生死锁
(2)死锁的解除
1.连续分配管理方式 系统为用户分配的必须是一个连续的内存空间
(1)单一连续分配
(2)固定分区分配
(3)动态分区分配
2.非连续分配管理方式
(1)首次适应算法
(2)最佳适应算法
(3)最坏适应算法
(4)邻近适应算法
单级页表存在的问题:
问题1:需要一段较大的连续页来存储页表项,当页表很大时,需要占用多个连续的页框,又违背了离散存储的优点。
问题2:没必要让整个页表常驻内存,因为进程一段时间可能只访问特定几个页面,造成内存空间的浪费。
基本地址变换机构两次访问内存:
第一次访问内存--------查页表
第二次访问内存--------访问实际目标内存单元