一 认识汇编语言
汇编的本质是机器语言的助记符号,汇编语言本质就是机器语言.
二 CPU的基本组成
PC 程序计数器,记录将要执行的指令的地址
Registers 暂时存储CPU计算需要用到的数据
ALU 寄存器中取到数据,进行运算然后将结果输出到另一个寄存器,然后通过指令将寄存器的内容返回给内存就完成了一次运算
CU 控制单元 响应中断信号等
MMU 内存管理单元
cache 缓存
https://www.zhihu.com/question/21981280(为什么CPU需要时钟这个概念)
三 初识OS
OS的目标
方便性 方便用户
有效性 提高资源利用率和系统的吞吐量
可扩充性 很好的适应计算机硬件的发展
开放性 指OS可以遵循世界规范,方便彼此互联(计算机网络)
OS的作用
作为用户和计算机硬件之间的接口(命令,系统调用,桌面)
作为计算机系统资源的管理者
实现了对计算机资源的抽象
OS的基本特征
并发:并行是指多个事件在同一时刻发生,并行是指多个事件在同一个事件间隔内发生。
共享:指系统中的资源可供内存中多个并发执行的进程共同使用。
虚拟:时分复用技术(时间片)和空分复用技术(虚拟内存)
异步:程序中执行的进程是以不可预知的速度前进的,此即进程的异步性
OS的主要功能
处理机功能 控制进程,进程同步 , 进程通信 调度
存储器功能 内存分配,内存保护,地址映射,内存扩充
设备管理功能 缓冲管理 设备分配,设备驱动
文件管理功能 文件存储空间的管理,目录管理,读写管理和保护
网络和安全功能
四 进程和线程
进程的定义
为了能使程序并发执行,并且可以对并发执行的程序加以描述和控制,人们引入了进程的概念
所谓进程,是指在OS中能够独立运行并作为资源分配的基本单位,它是由一组机器指令,数据和堆栈组成的,是一个能独立运行的活动实体。
进程是系统进行资源分配和调度的一个独立单位。
为了使参与并发执行的程序都能独立的运行,在OS中配置了PCB(进程控制块),系统利用PCB来描述进程的基本情况和活动过程,从而管理和控制进程
进程的五种基本状态
创建状态 向进程申请一个PCB,并向PCB中填写用于控制和管理进程的信息。,然后为该进程分配资源。
就绪状态 指进程以及处于准备好的状态,获得了除CPU外的一切资源,存在于就绪队列中
执行状态 已经获得CPU,正处于执行中
阻塞状态 正在执行的进程由于发生某种事件(I/O请求)等暂时无法继续执行的状态。此时引起进程调度,而让受阻进程处于暂停状态,插入阻塞队列。
终止状态 终止要经过两个步骤,首先是等OS善后处理,最后将其PCB清零,并将PCB返回给系统。
PCB的作用
作为独立运行基本单位的标志
能实现间断性的运行(可以保留自己运行时的cpu信息)
提供进程管理所需要的信息
提供进程调度所需要的信息(PCB中存储了进程的状态)
实现进程的同步
进程控制一般是由OS的内核中的原语来实现的(可以类比为事务)
OS内核
通常将一些与硬件紧密相关的模块,各种常用设备的驱动程序以及运行频率比较高的模块都安排在靠近硬件的层次中,将他们常驻内存,我们称为内核。
为了防止OS本身以及关键数据遭受到应用程序的破坏,通常也将处理机的执行状态分为系统态和用户态。
一般情况下,应用程序只能在用户态下运行,不能执行访问内核区域。
内核的功能
在计算机中,内核是一个计算机程序,它是操作系统的核心,可以控制操作系统中所有的内容。内核通
常是在boot loader装载程序之前加载的第一个程序 。
这里还需要了解一下什么是boot loader 。
boot loader又被称为引导加载程序,它是一个程序,能够将计算机的操作系统放入内存中。在电
源通电或者计算机重启时,BIOS会执行一些初始测试,然后将控制权转移到引导加载程序所在
的主引导记录(MBR)
支撑功能
1 中断处理 系统调用,键盘输入,进程调度,设备驱动无不依赖中断
2 时钟管理 如时间片轮转调度
3 原语操作 原语由若干条指令组成,用于完成一定功能的一个过程,在系统态下运行。要么全做,要么不做
资源管理功能
1 进程管理
2 存储器管理
3 设备管理
进程之间的通信
共享存储器系统 相互通信的进程共享某些数据结构或共享存储区,进程之间能够通过这些空间进行通信
在内存中划出一块共享内存区域,需要通信的进程在通信前,先申请一个分区,将其附加到自己的空间,然后可以对其中的数据进行正常的读写。
pipe通信系统
所谓管道,是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,有名pipe文件
注意点
当一个进程正在对pipe执行读或者写的操作时,其他线程必须等待
当写进程写完piep后,就会睡眠等待,直到读进程取走再唤醒
确定双方必须存在
消息传递系统
进程不必借助任何共享存储区,而是将消息格式化,并利用os提供了通信原语在进程间进行消息传递。
网络中进程的通信
socket
RPC 远程函数调用RPC,是一个通信协议,用于通过网络连接的系统。该协议允许于一台主机上的进程调用另一台主机上的进程,而对于程序员表现为常规的过程调用,无需额外的编程。
线程的基本概念和实现方式
线程的出现是用于提高程序并发执行的速度,以进一步改善系统的服务质量。
线程能更好的提高程序的并行执行速度。
线程的引入是为了减少程序再并发执行时所付出的时空开销,使得OS具有更高的并发性
线程作为调度和分派的基本单位,进程作为资源分配的基本单位。
同一个进程中线程的切换不会引起进程的切换,只需要保存和设置少量寄存器的内容
在引入线程的OS中,不仅进程之间可以并发执行,而且在一个进程中的多个线程也可以并发执行,使得OS具有更好的并发性
线程本身不拥有资源,只有TCB,少量寄存器和程序计数器
同一个进程中的线程共享内存地址空间和资源
在一些中,线程的切换,同步和通信不需要OS内核的干预。
五 常见的调度算法
先来先服务
最简单的调度算法,OS按照作业到达的先后次序来进行调度,而不管作业或者进程的执行时间的长短,每次调度是从就绪队列中选择一个最先进入的进程,分配CPU。
短作业优先
以作业的长短来计算优先级
缺点:
必须要求预知作业的运行时间。
对长作业不利
未考虑作业的紧迫程度
优先级调度算法
由外部赋予进程优先级,调度的时候从后备队列中选择若干优先级高的装入内存
高响应比优先调度算法
优先级= 等待时间+要求服务时间/要求服务时间
此算法既考虑了进程或者作业在OS中等待的时间,也考虑了它们要求服务时间
好处
不会引发进程饥饿问题
轮转调度算法(RR)
OS首先根据先来先服务的策略,将所有的就绪进程排成一个队列,并可以设置每隔一段时间即产生一次中断,激活OS中的进程调度程序,完成一次调度,将CPU分配给队首进程
进程切换时机分为两种情况
1 如果时间片没用完,正在运行的进程已经完成,就立即激活调度程序,将它从就绪队列中删除,再调度就绪队列中队首进程运行
2 如果时间片用完 ,中断程序被激活,如果进程未运行完毕,调度程序把他送往就绪队列的队尾
时间片大小的确定
如果选择很小的时间片,将有利于短作业,因为它能在短时间内完成,但是会频繁的执行进程调度和进程上下文的切换,增加系统的开销,反之如果时间片过长,使得每个进程都在时间片内完成,就退化成了先来先执行。
六 死锁概述
死锁的起因起源于资源问题,如果资源是无限的,也就不存在死锁了。
当多个进程对不可抢占资源或者可消耗资源争夺时。会引起死锁。
死锁的定义
在一组进程发生死锁的情况下,这组死锁进程中的每一个进程,都在等待另一个死锁进程所占有的资源。
如果一组进程中的每一个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么这组进程就是死锁的。
死锁产生的必要条件
互斥条件 资源必须是互斥资源
请求和保持条件 进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已经被占用,但对自己获得的资源不放
不可抢占条件 进程已经获得的资源在未使用完之前不可抢占
循环等待条件 发生死锁时,必然存在一个进程-资源的循环链
处理死锁的办法
预防死锁
1 规定所有的进程在运行之前,必须一次性的申请其在整个运行过程中所需要的资源。
2 当一个已经保持了某些不可抢占资源的进程,提出新的申请而不能被满足时,它必须释放已经保持的所有资源
3 银行家算法
在此算法中,系统分为安全状态和不安全状态。在系统处于安全状态时,可避免发生死锁,反之就有可能发生死锁。
在该方法中,允许进程动态的申请资源,但是在资源进行分配之前,应该计算资源分配的安全性。若此次分配不会导致系统进入不安全状态
才可以将资源分配给该进程,否则进程进入等待。
所谓安全状态,是指系统能够按照某种进程推进顺序为每个进程分配资源,直到满足进程的最大资源要求
为实现银行家算法,每一个新进程在进入系统时,它必须申明在允许过程中可能需要的每种资源类型的最大数目,其数目不能超过系统资源总量。
当进程请求一组资源时,系统必须首先确定是否有足够的资源分配给该进程。若有,在进一步计算把资源分配给进程后,是否会使系统处于不安全状态。
如果不会,就将资源分配给进程,否则让进程等待。
七 多层结构的存储器系统
对于通用计算机而言,存储层次至少应具有三级:最高层为CPU寄存器,中间为主存,最底层是辅存磁盘
一般寄存器和主存之间有高速缓存,主存和磁盘之间有磁盘缓存
可执行存储器
寄存器和主存一般称为可执行存储器。对于存放在其中的信息,与辅存相比,访问机制是不同的,所耗费的时间也是不同的。
进程可以在很少的时钟周期内使用一条load指令或者store指令对可执行存储器访问,而对于辅存来说则需要I/O,访问中将涉及中断,设备驱动程序已经物理设备的运行,所耗费的时间远远高于可执行存储器。
八 程序的装入和链接
装入有三种方式
1 绝对装入方式
用于计算机系统很小时,完全有可能知道程序将驻留在内存的什么位置。
此时可以采用绝对装入方式
2 可重定位装入方式
在多道程序环境下,编译程序不可能预知目标模块应放在内存的何处。因此,对于用户程序编译所形成的目标模块,它们的地址都是从0开始的
在装入程序以后,会将逻辑地址改为真实的地址
3 动态运行时的装入方式
实际情况是,在运行过程中目标模块在内存中的位置经常会改变,每次换出换入之后的位置通常是不同的。在这种情况下采用动态运行时的装入方式
再把装入模块装入内存时,并不立即把装入模块中的逻辑地址转换为物理地址,而是把地址转换推迟到程序真正执行的时候再进行
链接有三种方式
1 静态链接方式
在程序运行之前,先把目标模块及它们所需要的库函数链接成一个完整的装配模块,以后不在拆开。
2 装入时动态链接
这是指将编译得到的目标模块在装入内存时,采用变装入变链接的方式。即在装入一个模块时,若发生一个外部模块调用,将引起装入程序区寻找相应的模块并装入到内存。
3 运行时动态链接
将对某些模块的链接推迟到程序执行时才进行,即在执行过程中而不是装入过程中
九 动态分区分配和动态分区分配算法
动态分区分配属于连续分配存储,即为一个用户程序分配一个连续的内存空间。
动态分区分配又称为可变分区分配,它是根据进程的实际需要,动态的为进程分配内存空间。在实际操作中,将涉及到分区分配中所用的数据结构,动态分区算法和分配与回收操作三方面的问题。
动态分区分配中的数据结构
为了实现动态分区分配,系统中必须配置相应的数据结构,用以描述空闲分区表和已分配分区的情况。
具体有两种:空闲分区表和空闲链结构。
空闲分区表结构如下
分区号 分区大小 分区首址 状态
1 50KB 85 空闲
2 32KB 135 空闲
。。。。。。。。
动态分区算法
分为传统的顺序式搜索算法和比较新的索引式搜索算法
顺序式搜索算法
1 首次适应算法(FF算法)
我们以空闲分区链为例,FF算法要求分区链以地址递增的次序链接。再分配内存时,从链首开始寻找,直到找到一个大小能满足要求的空闲分区为止。然后再按照进程的大小,从该分区中划出一块内存空间分配给进程,如果未找到,则内存访问失败。
优点是优先利用低地址的空闲分区,保留了高地址部分的大空闲区,为以后到达的大作业创造了条件。
缺点是低地址部分不断被划分,会留下许多难以利用的碎片,每次都从低地址开始查找,增加时间开销
2 循环首次适应算法(NF算法)
为了避免低地址部分留下许多很小的空闲分区,以及减少查找可用分区的开销
NF再分配内存空间时,不是每次都从链首开始查找,而是从上次找到空闲分区的下一个空闲分区开始查找,直到找到一个满足的空闲分区。
为了实现应该设置一个起始查找指针,用于标识查找的位置,如果指到了最后一个位置,就从头开始。
优点 减少了时间开销
缺点 缺乏大的空闲分区
3 最佳适应算法(BF算法)
所谓最佳,指每次为进程分配内存时,总是能把满足要求的,又是最小的空闲分区分配给作业,避免大材小用。为了加速寻找,该算法要求将所有的空闲分区按其容量从大到小排列。这样第一次找到的就是最佳的。
缺点 会留下难以利用的碎片
4 最坏适应算法(WF算法)
与最佳相反,再扫描的时候,总是挑选一个最大的空闲区进行分配
优点 可以使剩下的空闲分区不至于太小,查找效率很高。
索引式搜索算法
基于顺序式的动态分区算法比较适用于不太大的系统。当系统很大的时候,空闲分区链就很长,采用顺序的搜索就很慢
在大中型OS中一般采用索引搜索的动态分区分配算法
1 快速适应算法(QF算法)
又称为快速分类算法,是将空闲分区根据大小容量进行分类,对于每一类具有相同容量的所有空闲分区,单独设立一个空闲分区表,这样就有了多个空闲分区链。同时在内存中设计一个管理索引表,其中的每一个索引项对应了一种空闲分区表类型。
该算法在搜索可分配的空闲分区时分为两步:第一步是根据进程的长度,从索引表中找到索引项,第二步是从空闲分区链中取下第一块进行分配即可。
优点 不会产生分割,查找效率高
2 伙伴系统(BS算法)
该算法规定,无论已分配分区或者空闲分区,其大小均为2的K次幂(1<= k <= m)通常2的m次方是整个可分配内存的大小。
系统开始运行的时候,整个内存是一个大小为2的m次方大小的空闲区。在系统运行过程中,由于不断的划分,将会形成若干个不连续的空闲分区,由于不断的划分,将会形成若干个不连续的空闲分区,将这个空闲分区按分区大小进行分类,对于具有相同大小的所有空闲分区,单独设立一个空闲分区双向链表,这样,不同大小的空闲分区形成了k个空闲分区链表
当需要为进程分配一个长度为n的存储空间的时候,首先计算一个i置,比如n=256 则i=8
然后再空闲分区为2的i次方的空闲分区链表中查找,若找到,即把该空闲分区分配给进程,否则即表明此分区已经耗尽,则在2的i+1次方的空闲分区中寻找,若存在2的i+1次方这个分区,则把该空闲分区分为两半,一个用于分配,而把另一个加入到空闲分区链表中。此为伙伴系统。
3 哈希算法
哈希算法就是利用哈希快速查找的优点,以及空闲分区再可利用空闲分区表中的分布规律,建立哈希函数,构造一张以空闲分区大小为关键字的哈希表,该表的每一个表项记录了一个对应的空闲分区链表表头指针
分区分配操作
1 分配内存
OS利用某种算法,从空闲分区表(链)中找到所需大小的分区
找到以后从分区中划出一块内存空间。然后将分配区的首地址返回给调用者
2 回收内存
当进程运行完毕释放内存时,系统会根据回收区的首址,从空闲分区表中找到相应的插入点。
十 对换技术
由于以前的内存都非常小,为了能使系统能分时运行多个用户程序而引入了对换技术。
最早的分时技术就是系统把所有的用户作业放在磁盘上,每次只能调入一个作业进入内存,当该作业的一个时间片用完后,将它调至外存的后备队列上等待,再从后备队列上将另一个作业调入内存。
多道程序环境下的对换环境
1 对换的引入
在多道程序环境下,在内存中的某些进程由于出现某事件尚未发生而被阻塞运行,但它却占用了大量的内存空间。显然是对系统资源的浪费。
为了解决这一问题,在系统中又增设了对换设施。
所谓对换,就是把内存中暂时不能运行的进程或者暂时不用的程序和数据都换出到外存去,以腾出足够的内存空间。
对换的实现
即在系统中设置一个对换进程,由它将内存中暂时不能运行的进程调出到磁盘的对换区,然后将磁盘上已具备运行条件的进程调入内存。
2 对换的类型
整体对换 就是进程对换。
页面对换(分段) 对换是以一个页面或者分段为单位进行的,其目的是为来支持虚拟存储系统
十一 内存离散分配方式
连续分配方式会产生很多碎片,虽然可以通过紧凑来消除碎片,但需要为之付出很大的开销。如果允许将一个进程直接分散的装入到不相邻的分区中,便可以充分的利用空间,而无须再进行紧凑。基于这一思想产生了离散分配。
分页存储管理方式
将用户程序的地址空间分为若干个大小固定的区域,称为页。相应的,也将内存空间分为若干个物理块或者页框(frame)
页和块的大小相同,这样就可以将用户程序的任一页放入任一物理块。实现了离散分配。
分页管理的基本方法
1 页面和物理块
将进程的逻辑空间划分为若干个页,并从0开始加以编号
相应的把内存的物理地址空间分为若干个块,也加以编号
页面大小通常为1KB到8KB
2 地址结构
分页地址中的地址结构如下
页号 + 位偏移量
3 页表
为了能保证进程仍然能正确执行,即能再内存中找到每个页面对应的物理块,系统又为每个进程建立了一张页表,其中记录了相应页再内存中对应的物理块号。
快表
由于页表是存放在内存中的,这使得CPU在没存取一个数据时,都要访问两次内存。
第一次是访问内存中的页表,找到指定的物理块号,再将块号与偏移量拼接,以形成物理地址
第二次才是从第一次的地址中获取数据
为了提高地址变换速度,出现了快表(TLB)
一种缓存机制,当cpu给出有效地址时,由地址变换机构自动的将页号p送入快表,如果从快表中找到,就可以直接得到物理块号,不需要从内存中读取。如果没找到就还需要从内存中读取。
据统计快表的命中率大概由百分之九十。
分段存储管理方式
这是为了满足用户要求而出现的,它把用户程序的地址空间分为了若干个大小不同的段,每段可定义一组相对完整的信息。在存储器分配时,以段为单位,这些段再内存中可以不连接,也实现了离散分配。
分段的引入
主要是为了满足程序员在编程和使用方面的要求
分段有利于信息共享
分段有利于信息保护,
动态连接的要求的基本单位就是程序段
分段系统的基本原理
作业的地址空间分为若干个段,每个段定义了一组逻辑信息
段号 + 段内地址组成分段中的地址
通常用一个段号来标识一个段
然后使用段表建立与段号的联系
实现地址的映射
分段和分页的主要区别
1 页是信息的物理单位,分页仅仅是系统行为,用户是不可见的。
段是信息的逻辑单位,它通常包括一组相对完整的信息。
2 页的大小固定且由系统决定,段的长度不固定,取决于用户编写的程序
段页式存储管理方式
结合了两种存储方式,是目前应用较为广泛的一种存储管理方式。
地址由 段号 + 段内页号 + 页内地址 组成
为了实现逻辑地址到物理地址的转换,系统需要配置段表和页表
地址变换过程,首先通过段号得到页表始址,然后利用段内页号得到对应的页的位置,从中读取出物理块号
再利用页内地址和块号构成物理地址
十二 虚拟存储器简介
出现原因
当作业很大的时候,内存装不下
我们可以考虑增加内存容量,但是会增加成本
另一个办法是从逻辑上扩充内存容量,这就是虚拟存储技术要解决的问题。
局部性原理
程序运行是存在局部性现象:在一较短时间内,程序的执行仅局限于某个部分,相应的,它所访问的存储空间也局限于某个区域。
时间局部性:如果程序中的某条指令被执行,则不久后该指令可能再次执行。
空间局部性:一旦某个程序访问了某个存储单元,在不久后,其附近的存储单元也会被访问。
虚假存储器的基本工作情况
基于局部性原理可知,应用程序在运行之前没必要全部调入内存,而仅仅需要将那些当前要运行的少数页面或段放入内存变可以运行,其余部分暂留在磁盘上。如果程序运行时要访问的段不在内存,就会发出缺页中断请求,此时OS将利用请求调页或段功能调入内存,以便进程可以继续执行下去,如果内存已满,OS还需利用页面置换功能。
虚拟存储器的定义和特征
所谓虚拟存储器,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统,其运行速度接近于内存速度。
特征
多次性 允许作业被分成多次调入内存
对换性 相比于传统存储器的常驻性,指作业无需常驻内存
虚拟性 能够从逻辑上扩充内存
十三 虚拟存储器的实现
虚拟存储器的实现是建立在离散分配的基础上,有两种实现方式
分页请求系统
就是在分页系统的基础上加入了请求调页功能和页面置换算法所形成的页式虚拟存储系统
为了实现请求调页和页面置换功能,OS必须提供必要的硬件支持和实现请求分页的条件
硬件支持
1 请求分页的页表机制:在页表机制上增加若干项构成的。
2 缺页中断机构。每当用户程序要访问的页面未调入内存时,便产生缺页中断,以请求OS将所缺页调入
软件支持
实现请求调页的软件和实现页面置换的软件。
分段请求系统
就是在分段系统的基础上,增加了请求调段和分段置换功能后形成的虚拟存储系统。它
硬件支持
请求分段的段表机制,在纯分段的段表上加入若干项形成的。
缺段中断机构
软件支持
同上
十四 页面调换算法
最佳置换算法
其所选择的被淘汰页面将是以后永不使用的,或许是最长时间不再被访问的页面。采用最佳置换算法通常可以保证最低的缺页率。但由于目前人们无法预知,究竟哪一个页面是未来最长时间不再被访问的。
先进先出算法
该算法总是淘汰最先进入内存的页面。
只需要把一个进程已调入的页面按次序排成队列,并设置一个指针,称为替换指针,使他总是指向最老的页面。
最近最少使用算法
LRU算法是选择最近最久未使用的页面予以淘汰,该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t
放需要淘汰一个页面时,选择时间最长的。
十五 抖动和工作集
发生抖动的根本原因时同时在系统中运行的进程太多,由此分配给每一个进程的物理块太少,不能满足进程正常运行的基本要求,使得每个进程在运行时频繁的出现缺页中断,必须请求系统将所缺页调入内存。对磁盘的有效访问时间急剧上升,造成每个进程的大部分时间都处于页面的换入换出。
所谓工作集是指在某段时间间隔中,进程实际上访问的页面的集合。
十六 I/O系统的功能,模型和接口
I/O系统的基本任务
完成用户提出的I/O请求
隐藏物理设备的细节,仅向上层提供少量的读写命令 read和write
提高处理及和I/O设备的利用率,尽可能的让CPU和I/O设备并行操作,提高它们的利用率,尽量减少CPU对I/O设备的干预时间
对I/O设备进行控制
保证对设备的正确共享
错误处理
I/O设备的分类
块设备接口
是块设备与高层之间的接口
所谓块设备是数据的存取和传输都是以数据块为单位,比如磁盘
特征是传输速率高,且可以寻址
流设备接口
是流设备和高层之间的接口,用于控制字符设备的输入输出
字符设备是指数据的存取和传输是以字符为单位,键盘和打印机
特征是传输速率低
网络设备接口
socket
十七 I/O设备和设备管理器到I/O通道、
I/O设备一般是由执行I/O操作的机械部分和控制I/O的电子部件组成(我们称为设备控制器)
通常,设备并不是与CPU直接通信,而是与设备控制器通信
设备控制器的主要功能是,控制一个或者多个I/O设备,已实现I/O设备和计算机之间的数据交互
它接收cpu发送的指令,去控制I/O设备,减轻cpu的压力
I/O通道的引入
虽然在cpu和I/O设备之间增加了设备控制器后,可以大大减少cpu的干预,但是当外设很多时,cpu的负担依然很重
所以在cpu和设备控制器之间增加了I/O通道
cpu只需要向通道发出一条指令,通道收到该指令后,就从内存中取出要执行的通道程序,然后执行,仅当执行完成后,才想CPU发中断信号。
I/O通道其实时一种特殊的处理机,它具有执行I/O命令的能力。
与一般的处理机不同的是 、
1 指令单一
2 没有自己的内存,与CPU共享内存
十八 中断相关问题
中断在OS中由特殊的地位,它是多道程序得以实现的基础,没有中断,就不可能实现多道程序。因为进程之间的切换需要中断来完成。
中断简介
中断是CPU对I/O设备发来的中断信号的一种相应,CPU暂停当前执行的程序,保留CPU环境后,自动区执行I/O设备的中断处理程序。
由于中断时外部设备引起的,也称为外中断
另外还有一种由CPU内部事件引起的中断,如程序出错,指令非法
通常把这类中断称为内中断。即信号来自cpu内部
十九 对I/O设备的控制方式
使用轮询的可编程I/O方式
cpu不断的询问控制器是否完成输入工作
如果完成了就开始下一次输入
缺点 绝大多数时间处于等待I/O设备完成数据I/O的循环检测中
造成对CPU的极大浪费
就是因为无中断机构,I/O设备无法向CPU报告它完成了字符的输入
使用中断的可编程I/O方式
cpu向相应的设备控制器发出I/O命令后,立即返回执行原来的任务
此时 cpu与I/O设备并行工作
等待I/O完成后产生中断,cpu取走数据。
直接存储器访问方式
虽然中断驱动I/O比轮询I/O更有效,但是他还是以字节为单位,每当完成一个字节的I/O,就发出一次中断
所以引出了DMA
特点如下
数据传输的基本单位是数据块
所传送的数据是从设备直接送入内存的,或者相反(上面两种都需要读入cpu,然后cpu再到内存)
二十 RAID的不同级别
RAID称为磁盘冗余阵列 ,简称磁盘阵列 。利用虛拟化技术把多个硬盘结合在一起,成为一个或多个
磁盘阵列组,目的是提升性能或数据冗余。
RAID有不同的级别
●RAID0 -无容错的条带化磁盘阵列
●RAID 1 -镜像和双工
●RAID2 -内存式纠错码
●RAID3 -比特交错奇偶校验
●RAID 4-块交错奇偶校验
●RAID5-块交错分布式奇偶校验
●RAID6-P+ Q冗余