一计算机系统概述
操作系统的基本概念
操作系统的特征
基本特征:并发和共享(最基本),虚拟,异步
并发:多个事件同一个时间间隔内发生(分时实现)
共享:1)互斥共享 2)同时访问
虚拟:把物理上的实体变为若干逻辑上的对应物,通过多道程序设计技术,采用让多道程序并发执行的方法,来分时使用一个处理器(时分复用:处理器分时共享 空分复用:虚拟存储器)
异步:由于资源有限,进程的执行并不是一贯到底,它以不可预知的速度向前推进
操作系统的功能
处理机管理+存储器管理+设备管理+文件管理
操作系统为用户与计算算计间的接口
1.命令接口:联机命令接口(交互式命令接口)适用于分时或实时系统接口
脱机命令接口(批处理命令接口)脱机用户不能直接干预作业的运行,而事先用相应的作业控制命令写成衣服呢作业操作说明书同作业一起提交给系统
2.程序接口:一组系统调用(广义指令)组成
操作系统运行环境
处理器运行模式
1)特权指令:不允许用户直接使用的指令(I/O指令,置中断指令)
2)非特权指令:允许用户直接使用,它不能直接访问系统中的软硬件资源
CPU的运行模式:用户态(目态)核心态(管态,内核态)
应用程序运行在用户态,操作系统运行在核心态,应用程序向操作系统请求服务时通过使用访管指令(用户态执行),从而产生一个中断事件将操作系统转为核心态
中断机制:操作系统各项操作的基础
原语:操作一气呵成,操作系统的最底层,运行时间短,调用频繁
系统调用
用户在程序中调用操作系统所提供的一些子功能,系统调用的处理需要操作系统内核程序负责,要运行在核心态
中断处理保存断点+状态字寄存器,子程序调用只保存断点
操作系统结构
分层法:合理定义各层比较困难,依赖关系确定后就显得不灵活,效率较差
模块化:模块间的接口规定很难满足对接口的实际需求
宏内核:将系统的主要功能模块都作为一个紧密联系的整体运行在核心态
微内核:将内核中最基本的功能保存在内核,将那些不需要在核心态执行的功能移到用户态执行,从而降低内核设计的复杂性,移出内核的操作系统代码根据分层原则被划分为若干服务程序(只有微内核运行在内核态,其余模块都运行在用户态)
高可靠性,高安全性,较强的可扩展性
操作系统引导
1)激活CPU:CPU读取ROM中boot程序,开始执行BIOS的指令
2)硬件自检:
3)加载带有操作系统的硬盘BIOS读取Boot Sequence,后CPU将该存储设备(启动顺序第一位)引导扇区的内容加载到内存
4)加载主引导记录MBR:MBR告诉CPU去硬盘的哪个分区去找操作系统
5)扫描硬盘分区表,并加载硬盘活动分区:找到硬盘活动房分区,开始加载硬盘活动分区,将控制权交给活动分区
6)加载分区引导记录PBR:读取活动分区第一个扇区(寻找并激活分区根目录下用于引导操作系统的程序)
7)加载启动管理器
8)加载操作系统
二 进程与线程
进程与线程
进程的概念和特征
数据段+程序段+PCB构成进程映像
创建进程实质是创建进程实体中的PCB,撤销进程即撤销进程的PCB,进程映像是静态的,而进程是动态的(PCB是进程存在的唯一标志)
1)进程是程序的一次执行过程
2)进程是一个程序及其数据在处理机上顺序执行所发生的活动
3)进程是具有独立功能的程序在一个数据集合上运行过程,是系统资源调度的独立的单元
进程的特征:动态性(最基本特征),并发性,独立性,异步性
进程的状态与转换
1)运行态:每时刻只有一个进程可处于运行态
2)就绪态:进程获得了除处理机外的一切资源,一旦得到处理机,便可立即执行
3)阻塞态:进程等待某一事件而暂停
4)创建态:1.申请PCB 2.向PCB中填写信息 3.分配资源 4.插入就绪队列
5)终止态:进程正从系统消失
运行态可以转到就绪态和阻塞态,就绪态只能转到运行态,阻塞态到运行态必须经过就绪态
运行到阻塞是主动行为,阻塞到就绪是被动行为
进程控制
一般把进程控制用的程序段成为原语
进程的创建:子进程可以继承父进程所拥有的资源,被撤销时,归还父进程资源,撤销子进程通常也会同时撤销其所有子进程
进程的阻塞和唤醒
进程主动调用阻塞原语进入阻塞态,相关进程调用唤醒原语将该进程唤醒
阻塞原语与唤醒原语必须成对使用
进程间的通信
1.共享存储:进程共享存储空间(通过它特殊系统调用实现)
2.消息传递:进程通过系统提供的发送消息和接收消息原语进行数据交换
3.管道通信:生产者-消费者模式进行通信(必须具有的能力:互斥,同步,确定对方存在 大小:通常为内存的一页)
线程和多线程模型
线程:基本的CPU执行的单元,也是程序流执行的最小单元(处理机的分配单元)
线程与进程的比较
1)独立调度的基本单位 2)提高系统资源的利用率和系统的吞吐量
3)线程不拥有系统资源,但可访问其隶属进程的系统资源,同属于一个进程的线程都具有相同的地址空间
4)进程切换涉及上下文的切换,线程切换只需要保存和设置少量寄存器内容
5)对于多线程进程,可将进程中的多个线程分配发到多个处理机上执行
线程的终止:线程被终止后并不立即释放它所占有的资源,只有当进程中的其他线程执行了分离函数,被终止线程才与资源分离,此时的资源才能被其他线程利用
被终止但未释放资源的线程仍可被其他线程调用,以便重新恢复运行
线程的实现方式:用户级线程,内核级线程
用户级线程中,有关线程的管理都应有应用程序完后,无需内核的干涉,内核意识不到用户级线程的存在
无论是系统进程还是用户进程都是在操作系统内核的支持下运行的,内核级线程的管理工作也是在内核空间实现的
多线程模型
用户级线程与内核级线程的映射(多对一,一对一,多对多)
处理机调度
调度的概念
高级调度(作业调度)中级调度(内存调度)低级调度(进程调度)
调度的目标
1)CPU利用率=CPU有效工作时间/(CPU有效工作时间+CPU空闲等待时间)
2)系统吞吐量:单位时间内CPU完成作业也的数量
3)周转时间:作业提交到作业完成所经历的时间
平均周转时间:多个作业周转时间的平均值
带权周转时间:作业周转时间/作业实际运行时间
平均带权周转时间:多个作业带权周转时间的平均值
进程调度的方式:抢占与非抢占
两种线程的调度
1)用户级线程:内核并不知道线程的存在,选择一个进程,给予时间控制,由进程中的调度程序决定哪个线程运行
2)内核级线程:内核选择一个特定线程运行,超过时间片,挂起该线程
用户级线程的切换在同一进程内,仅需少量机器指令,内核级线程切换需要完整的上下文,修改内存映像,使高速缓存失效
典型调度算法
1.先来先服务(FCFS)
有利于CPU繁忙型作业,不利于I/O繁忙型作业
2.短作业优先(SJF)
作业的长短是估计是执行时间,不一定真正短作业优先
3.优先级调度
系统进程>用户进程,交互型进程>非交互型进程,I/O型进程>计算型进程
4.高相应比优先
相应比=(等待时间+要求服务时间)/要求服务时间
5.时间片轮转(适用于分时系统)
6.多级队列调度
7.多级反馈队列调度
进程切换
同步与互斥
实现临界区互斥的基本方法
1.软件方法
Peterson's Algorithm
Flag申请进入,turn让别人进入(当别人进入,且你允许别人进入,则自身被阻塞)
2.硬件方法
1)中断屏蔽:关中断
2)硬件指令方法(TestAndSet指令,Swap指令):原子操作
互斥锁
进入临界区获得锁,退出临界区释放锁(忙等待)
信号量
记录型信号量
wait(申请资源)signal(释放资源)
P(申请资源)V(释放资源)
管程
利用共享数据结构抽象地表示系统中的共享资源
经典同步问题
1.生产者-消费者问题
1)缓冲区互斥访问(mutex)
2)缓冲区未满,生产者才能放资源(empty)
3)缓冲区有资源,消费者才能消费(full)
4)首先获得缓冲区的所有权,才能进行之后的操作(资源要有地方放,资源要有地方拿)
2.读者-写着问题
1)对文件的读写互斥(rw)
2)读者对读者数量(count)的修改要互斥(mutex)
3)第一个读者要限制写者对文件的写操作
4)最后一个读者要释放对文件的所有权
3.哲学家进餐问题
1)对筷子要互斥访问(mutex)
2)获得访问筷子的权利,就要拿到两根筷子
4.吸烟者问题
1)三种资源的两两组合(offer)
2)桌子上有对应的资源 ,对应的吸烟者才能拿
3)吸烟者吸完烟,供应者才能往桌子上放资源组合(finish)
死锁
死锁的概念
死锁产生的原因:系统资源的竞争,进程推进顺序非法
死锁产生的必要条件
1)互斥条件 2)不剥夺条件 3)请求并保持条件 4)循环等待体条件
死锁处理策略
1)死锁预防:破坏死锁产生的必要条件
2)死锁避免:资源分配过程中,防止系统进入不安全状态
3)死锁的检测与解除:及时检测死锁的发生,采取某种措施解除死锁
死锁预防
共享+剥夺+预静态分配+顺序资源分配
死锁避免
银行家算法
死锁的检测与解除
1.资源分配图
1)⚪表示进程,⬜表示一类资源
2)从进程到资源的有向边称为请求边,从资源到进程有向边称为分配边
2.死锁解除:资源剥夺+撤销进程+进程回退
三、内存管理
连续分配管理方式
1.单一连续分配:只能用于单用户,单任务操作系统,无外部碎片,有内部碎片
2.固定分区分配:有内部碎片
3.可变分区分配:
1)首次适应:低地址出现很多小的空闲分区
2)邻近适应:内存空间尾部小碎片多
3)最佳适应:最多的外部碎片
4)最坏适应:导致没可用的大内存块
基本分页存储管理
基本地址变换机构
在系统设置一个页表寄存器(PTR)进程执行时将进程PCB中页表始址与长度装入页表寄存器
多级页表(顶级页表最多只能有一个页面)
基本分段存储管理
页式系统中,逻辑页号和页内偏移量对用户是透明的,但在段式系统中,段号和段内偏移量必须由用户显式提供,在高级程序设计语言中,这个工作由编译程序完成(逻辑段的划分实在用户编程时进行的)
段页式管理
段号+页号+页内偏移量
在一个进程中段表只有一个1,而页表可能有多个
虚拟内存管理
1)多次性 2)对换性 3)虚拟性
页框分配
1.内存分配策略
1)固定分配局部置换: 为每个进程分配一定数目的物理块,缺页时从分配给该进程的页面中选出一页换出
2)可变分配全局置换:为每个进程分配一定数目的物理块,缺页时取出空闲物理块分配给该进程
3)可变分配局部置换,为每个进程分配一定数目的物理块,频繁缺页时取出空闲物理块分配给该进程,缺页率较低时适当减少分配
2.调入页面的时机
1)预调页策略:根据局部性原理,一次性调入若干相邻页
2)请求调页策略:进程在运行中需要访问的页面不在内存便提出请求,由系统将所需页面调入内存
3.从何处调入页面
1)系统拥有足够的对换区空间:全部从对换区调入所需页面
2)系统缺乏足够的对换区空间:不会被修改的从文件区调入,可能被修改的部分,换出时调到对换区,以后有需要从对换区调入
3)UNIX方式:与进程有关的文件放在文件区,曾经运行过被换出的放在对换区
页面置换算法
1.最佳置换算法(OPT)
根据后面讲要访问的页面,淘汰短时间内没有访问的页面
2.先进先出置换算法(FIFO)
会出现Belagy异常
3.最近最久未使用置换算法(LRU)
根据前面访问过的页面,淘汰最近没有访问过的页面
4.时钟置换算法(CLOCK)
1)选择一页淘汰时直到遇到标志为0的换出该页面,否则指针下移,置访问过的页面标志为0
2)只有发生缺页时才移动指针,命中的情况,只将对应页面标志置1,不移动指针
5.改进型CLOCK算法
增加修改位
抖动和工作集
抖动:频繁同一个页面的调度行为
工作集:分配给进程的物理块数要大于工作集大小
内存映射文件
将磁盘文件的全部或部分内容与进程虚拟地址空间的某个区域建立映射关系(便可直接访问被映射文件)
虚拟存储器性能的影响因素
地址翻译
1)根据虚拟地址和虚拟地址结构得到TLB标记(组索引等)信息去快表查找是否存在对应物理页
存在则获取对应物理页号拼接页内地址获得物理地址,不存在则产生缺页中断,调入对应页面
2)得到物理地址后,根据物理地址结构得到主存标记Tag(Cache组号,Cache块号)去Cache查找是否该块在Cache中,不存在则直接用该物理地址去主存找对应内容
四、文件管理
文件系统基础
文件的基本概念
文件是以硬盘为载体的存储在计算机上的信息集合
文件控制块和索引节点
文件控制块(FCB)
存放控制文件需要的各种信息的数据结构
索引结点
1)磁盘索引结点
2)内存索引结点:当文件被打开时,要将磁盘索引结点复制到内存索引结点,以便后续使用
文件的操作
1.文件的基本操作
1)创建文件:为新文件分配必要的外存空间,在目录中为之创建一个目录项
2)读写文件:执行系统调用,系统为该文件维护一个读(写)指针
2.文件的打开与关闭
1)调用open在文件打开表中增加一个条目,当用户再次发出文件操作请求时可通过索引在文件打开表获取文件信息,当文件不在被使用时利用系统调用close关闭文件,操作系统将会从文件打开表删除这一条目
2)系统文件打开表为每个文件关联一个打开计数器,以记录多少进程打开了该文件,系统在删除文件条目时,必须等最后一个进程关闭文件
文件保护
口令保护+加密保护+访问控制
访问控制
根据用户身份进行控制,为每个文件和目录增加一个访问控制列表(ACL),以规定每个用户允许访问类型(长度无法预计)
口令:建立文件时提供一个口令,系统为其建立的FCB附上相应口令(口令在系统内部不安全)
密码:用户对文件进行加密,访问需要使用密码
文件的逻辑结构
1.无结构文件
最简单的文件结构有序相关信息项的集合,只能通过穷举方式访问记录(源程序文件,目标代码文件)
2.有结构文件
1)顺序文件
串结构:记录顺序与关键字无关
顺序结构:文件中所有记录按关键字排列
2)索引文件
3)索引顺序文件
N条记录分组,组间查找
次,组内查找
次,共
次
4)直接文件或散列文件
由给定记录的键值或通过散列函数转换的键值直接决定记录的物理地址
文件的物理结构
文件分配对应于文件的物理结构,指如何为文件分配磁盘块
1.连续分配:支持顺序访问和直接访问,只适用于长度固定的文件
2.链接分配
1)隐式链接:目录项中有文件第一块的指针和最后一块的指针,处最后一块盘块,其余盘块均有指向下一盘块的指针(只能顺序访问)
2)显式链接:用于链接文件各物理块的指针显式的放在内存的一张链接表中(文件分配表)
3.索引分配
4.混合索引分配
直接地址+一次间接地址+多次间接地址
假设有10个直接地址项,每个盘块4kB,一次间接地址块可放1024个盘块号
直接寻址则可寻址40KB
一次间接寻址:4MB,二次间接:4GB,三次间接:4TB
目录
目录的基本概念
FCB的有序集合成为文件目录,一个FCB就是一个文件目录项
目录结构
1.单级目录结构
只建立一个目录表,每个文件占一个目录项
2.两级目录结构
将文件目录分成主文件目录和用户文件目录(解决了多用户文件重名问题,可以在目录上实现访问控制,缺乏灵活性,不能对文件分类)
3.树形目录结构
方便的对文件进行分类,层次结构清晰,也能更有效地进行文件的管理与保护(不便于文件共享)
4.无环图目录结构
在树形基础上增加指向同一节点的有向边
实现文件共享,但使系统的管理更复杂
文件共享
1.基于索引结点(硬链接)
文件属性信息不放在目录项中,而是放在索引结点中,同时索引结点还应有链接计数(计数为0才能被删除)
2.利用符号链实现(软链接)
由系统创建一个LINK类型的新文件,放入用户目录,当要访问该文件,操作系统看到要访问的是LINK类型文件,根据文件路径名找到该文件(只有文件主才有指向其索引结点的指针,不会出现删除文件,空指针现象)
文件系统
文件系统布局
文件系统在磁盘中的结构
1)主引导记录:位于磁盘0号扇区,用来引导在计算机
2)引导块:负责启动该分区中的操作系统
3)超级块:包含文件系统的所有关键信息
4)文件系统中空闲块的信息:(位示图或指针链接形式)
外存空闲空间管理
1.空闲表法(连续分配方式)
记录第一个空闲盘块号,及连续的空闲盘块数量
2.空闲链表法
1)空闲链表法:以盘块为单位拉成一条链
2)空闲盘区法:以空闲盘区法拉成一体条链
3.位示图法(二维表)
利用二进制的一位表示一个盘块使用情况
4.成组链接法
把顺序的n个盘块号保存在第一个成组链块中,链块中最后一块盘块用于存储另一组成组链块盘号
虚拟文件系统
VFS位用户程序提供了文件操作系统的统一接口,屏蔽了不同文件系统的差异和操作细节
文件打开过程描述
1)检索目录,要求打开的文件应该是已经创建的文件,它应该登记在文件目录中,检索成功后,将其磁盘iNode复制到活动iNode表中
2)权限比对:把参数mode所给的打开方式与活动iNode表中所创建文件时的文件访问权限相比较,如果合法,则打开成功
3)打开合法时,为文件分配用户文件打开表表项和系统打开文件表表项,通过指针建立表项与活动iNode之间的联系,再把文件描述符返回给调用者
五、出入输出管理
I/O管理概述
I/O设备
1.设备的分类
1)块设备:信息交换以数据块为单位,有结构设备(磁盘:随机读写任一块)
2)字符设备:信息交换以字符为单位,无结构设备(打印机:不可寻址,常采用I/O中断方式)
2.I/O接口
1)设备控制器与CPU的接口:数据线+控制线+地址线
2)设备控制器与设备的接口:数据+控制+状态信号
3)I/O逻辑:实现对设备的控制
3.I/O端口
指可被CPU直接访问的寄存器:数据+状态+控制
CPU与I/O端口的通信:独立编址+统一编址
I/O控制方式
程序直接控制+中断驱动+DMA方式
I/O软件层次结构
自底向上为:硬件,中断处理程序,设备驱动程序,设备独立性软件,用户层I/O软件
1)用户层I/O软件:实现与用户交互的接口,通过系统调用获取操作系统服务
2)设备独立性软件:实现用户程序与设备驱动器的统一接口(逻辑设备映射物理设备)
3)设备驱动程序:负责具体实现操作系统对设备发出的操作命令(I/O进程与设备控制间的通信程序)
4)中断处理程序:保存被中断进程的CPU环境,进行上下文的切换,对中断信号源进行测试,读取设备状态和修改进程状态
设备独立性软件
高速缓存与缓冲区
1.磁盘高速缓存
逻辑上属于磁盘,物理上是驻留在内存中的盘块
两种形式:1)内存中开辟独立空间,大小固定 2)把未利用的内存空间作为缓冲池,供请求分页系统和磁盘I/O实时共享
2.缓冲区
假设磁盘将一块数据输入到缓冲区的时间为T,操作系统将缓冲区的数据送到用户区的时间为M,CPU对这一块数据的处理时间为C
1)单缓冲
T>C时:操作系统将数据送到用户区用时M,CPU开始对数据处理,同时缓冲区为空,磁盘将数据送到缓冲区,CPU用时C处理完,等待缓冲区充满
T<C时:操作系统将数据送到用户区用时M,CPU开始对数据处理,同时缓冲区为空,磁盘将数据送到缓冲区用时T,等待CPU处理完数据
综上单缓冲处理一块数据用时:max(C,T)+M
2)双缓冲
T<C+M时:操作系统将数据送到用户区用时M,CPU开始对数据处理用时C,此时另一个缓冲区已充满,重复操作
T>C+M时:操作系统将数据送到用户区用时M,CPU开始对数据处理用时C,此时另一个缓冲区还未充满,等待另一个缓冲区充满,后重复操作
综上双缓冲处理一块数据用时:max(C+M,T)
3)循环缓冲:多个缓冲区构成环形
4)缓冲池:空缓冲队列+装满输入数据的缓冲队列+装满输出数据的缓冲队列
设备分配与回收
1.设备分配概述
1)独占式
2)分时共享式
3)以SPOOLing方式使用外部设备:实现了虚拟设备功能,可将设备同时分配给多个进程,实现了对设备I/O操作的批处理
2.设备分配的数据结构
1)设备控制表(DCT):表征一个设备
2)控制器控制表(COCT):设备控制器控制设备与内存交换数据,有需要请求通道为其服务
3)通道控制表(CHCT):存放为其提供服务的几个设备控制器
4)系统设备表(SDT):整个系统只有一张,记录连接到系统的所有物理设备的情况
3.设备分配的策略
4.设备分配的安全性
5.逻辑设备名到物理设备名的映射
应用程序独立与具体使用的物理设备
1)整个系统设置一张LUT,所有进程的设备分配情况都记录在同一张LUT中(单用户系统)
2)为每个用户建立一张LUT,每当用户登录,系统变为该用户建立一个进程,同时为之建立一张LUT,并将该表放入进程的PCB中
SPOOLing技术(假脱机技术)
SPOOLing系统组成:预输入程序+井管理程序+缓输出程序
将独占设备改造成共享设备的技术(实现虚拟设备功能)
1)输入井和输出井
在磁盘上开辟出两个存储区域,输入井模拟脱机输入时的磁盘,收容I/O设备输入数据,输出井模拟脱机输出时的磁盘,收容用户程序的输出数据
2)输入输出缓冲区
内存中开辟两个缓冲区,暂存输入设备数据,传送到输入井,输出缓冲区用于暂存从输出井送来的数据,在传送到输出设备
3)假脱机进程的两项任务(以共享打印机为例)
在磁盘缓冲区为之申请一个空闲盘块,将要打印的数据送入其中暂存
为用户进程申请空白用户请求打印表,将用户的打印要求填入其中,再将该表挂到假脱机文件队列上
磁盘和固态硬盘
磁盘的管理
1.磁盘初始化
划分扇区+使用特殊结构填充磁盘(低级格式化)
2.分区
将操作系统的数据结构记录到磁盘上
1)磁盘(按柱面)分区,每个分区的起始扇区和大小都记录在磁盘主引导记录的分区表中(低级格式化)
2)对物理分区进行逻辑格式化(创建文件系统),操作系统将初始的文件系统结构存储到磁盘上
3.引导块
包含操作系统和设备驱动程序
磁盘调度算法
1)先来先服务(FCFS):适合I/O较少场合,不会磁臂黏着
2)最短寻找时间优先(SSTF):会导致饥饿
3)电梯调度(SCAN):不利于远离磁头一端请求
4)循环扫描(C-SCAN)
磁盘寻块:寻道时间+延迟时间+传输时间
固态硬盘(SSD)
1.固态硬盘特性:由一个或多个闪存芯片和闪存翻译层组成
2.磨损均衡