52、Spooling系统指外围设备联机操作或假脱机系统。是用一类物理设备模拟另一类物理设备的技术,是使独占使用的设备变成多台虚拟设备的一种技术,也是一种速度匹配技术。
53、“井管理程序”控制作业和辅助存储器缓冲区域之间交换信息。输入井作业的四种状态:输入状态、收容状态、执行状态、完成状态。
54、操作系统采用一种适当的调度算法,使各进程对磁盘的平均访问(主要是寻道)时间最小。硬盘调度算法有移臂调度和旋转调度算法。
移臂调度算法又叫磁盘调度算法,根本目的在于有效利用磁盘,保证磁盘的快速访问。
1) 先来先服务算法:该算法实际上不考虑访问者要求访问的物理位置,而只是考虑访问者提出访问请求的先后次序。有可能随时改变移动臂的方向。
2) 最短寻找时间优先调度算法:从等待的访问者中挑选寻找时间最短的那个请求执行,而不管访问者的先后次序。这也有可能随时改变移动臂的方向。
3) 电梯调度算法:从移动臂当前位置沿移动方向选择最近的那个柱面的访问者来执行,若该方向上无请求访问时,就改变臂的移动方向再选择。
4) 单向扫描调度算法。不考虑访问者等待的先后次序,总是从0号柱面开始向里道扫描,按照各自所要访问的柱面位置的次序去选择访问者。在移动臂到达最后一个柱面后,立即快速返回到0号柱面,返回时不为任何的访问者提供服务,在返回到0号柱面后,再次进行扫描。
旋转调度算法:当有若干等待进程请求访问磁盘上的信息时,旋转调度应考虑如下情况:①进程请求访问的是同一磁道上的不同编号的扇区;②进程请求访问的是不同磁道上的不同编号的扇区;③进程请求访问的是不同磁道上的相同编号的扇区;情况①②,旋转调度总是让首先到达读写磁头位置下的扇区先进行传送操作;情况③旋转高度可以任选一个读写磁头位置下的扇区先进行传送操作。
55、文件系统是操作系统中负责存取和管理信息的模块,它用统一的方式管理用户和系统信息的存储、检索、更新、共享和保护,并为用户提供一整套方便有效的文件使用和操作方法。对于用户来说,可按自己的期望并遵循文件系统的规则来定义文件信息的逻辑结构,不必涉及存储结构。
55、文件的分类:按用途分成:系统文件、库文件和用户文件;按保护级别可分为:只读文件、读写文件和不保护文件;按信息流向可分为输入文件、输出文件和输入输出文件。
55、操作系统支持以下4种文件类型:普通文件(外存上的数据文件包括ASCⅡ文件和二进制文件)、目录文件(管理文件的系统文件)、块设备文件(用于磁盘、光盘等)、字符设备文件(用于终端和打印机)。
55、文件系统面向用户的功能:文件的换名存取;文件目录建立和维护;实现从逻辑文件到物理文件的转换;文件存储空间的分配和管理;提供合适的文件存取方法;实现文件的共享保护和保密;提供一组可供用户使用的文件操作。
56、文件的存取是操作系统为用户程序提供的使用文件的技术和手段。包括顺序存取(用于磁带文件机磁盘的顺序文件)、直接存取(用于磁盘文件)和索引存取。
57、文件目录是文件进行按名存取的实现的关键。文件目录结构分为一级、二级和树形目录结构三种。文件目录表项包括:有关文件存取控制的信息;有关文件结构的信息;有关文件管理的信息。 ▲一个计算机系统中的文件有成千上万,为了便于对文件进行存取和管理,计算机系统建立文件的索引,即文件名和文件物理位臵之间的映射关系,这种文件的索引称为文件目录。文件目录(file
6
directory)为每个文件设立一个表目。文件目录表目至少要包含文件名、物理地址、文件结构信息和存取控制信息,以建立文件名与物理地址的对应关系,实现按名存取文件。
58、文件的结构包括文件的逻辑结构(流式文件和记录文件)、文件的物理结构(顺序结构、连接结构、索引结果)
文件的保护:防止文件被破坏,包括两个方面:系统崩溃(定期转储是一种经常使用的方法);其他用户非法操作造成的破坏(通过操作系统的安全策略实现,建立三元组:用户、对象、权限)。
文件的保密方法:设置密码和使用密码。密码分两种:文件密码、终端密码
59、作业是用户提交给操作系统计算的一个独立任务。每个作业必须经过若干个相对独立又相互关联的顺序加工步骤才能得到结果,每一个加工步骤称为一个作业步。作业由用户组织、作业步提交给系统,直到运行结束获得结果,要经过提交、收容、执行和完成4个阶段。
作业管理可以采用联机和脱机两种方式。当一个作业被操作系统接受,就必须给创建一个作业控制块,并且这个作业在它的整个生命周期中将顺序处于以下四种状态:输入、后备、执行和完成。 60、作业的调度算法:先来先服务算法、最短作业优先算法、响应比最高优先算法(响应比=已等待时间/计算时间)和优先数法(静态优先数法和动态优先数法)。
61、操作系统引入多道程序设计,好处:一是提高CPU利用率,二是提高内存和I/O设备利用率,三是改进系统吞吐率,四是发挥系统并行性。缺点是作业周转时间延长。
基本常识:
▲汇编程序、编译程序和数据库管理系统软件都是属于系统软件,不是应用软件。
▲把源程序转换为目标代码的是编译或汇编程序;负责存取数据库中的各种数据的是数据库管理系统;负责文字格式编排和数据计算是文字处理软件和计算软件。
▲若系统中有5个进程共享若干个资源R,每个进程都需要4个资源R,那么使系统不发生死锁的资源R的最少数目是16.(系统为每个进程各分配了3个资源,即5*3,只要再有1个资源,就能保证有一个进程运行完毕)
▲运行状态:表示当一个进程在处理机上运行时,则称该进程处于运行状态。显然对于单处理机,外于运行状态的进程只有一个。
▲就绪状态:表示一个进程获得了除处理机外的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态。
▲阻塞状态:一个进程正在等待某一事件发生(如请求I/O而等等I/O完成等)而暂时停止运行,这时即使把处理机分配给进程也无法运行的状态。
▲状态改变的原因:就绪-运行状态:由于调度程序的调度引起的;运行-就绪状态:由于时间片用完;运行-阻塞状态:请求引起的,如进行P操作,由于申请的资源得不到满足进入阻塞队列;阻塞-就绪状态:I/O完成引起的,如进行V操作将信息量值减1,将进程从阻塞唤醒到就绪。
▲在操作系统的进程管理中,若系统中有10个进程使用互斥资源R,每次只允许3个进程进入互斥段(临界区),则信号量S的变化范围是______(1):若信号量S的当前值为-2,则表示系统中有______(2)个正在等待该资源的进程。
(1)A.-7~1 B.-7~3 C.-3~0 D.-3~10
7
(2)A.0 B.1 C.2 D.3
B:S<0后请求R的进程将被阻塞,此时应该有3个进程获得资源。
C:第一个分配后,S=2;第三个分配后,S=0;第四个进程请求时S=-1,等待资源;S=-2时既有两个进程在等待。(关键是要分清:先S减一,还是先分配资源)
▲分段式与分页存储的区别:段是信息的逻辑单位用户可见;各段程序的修改互不影响;无内存碎片;便于多道程序共享信息的某些段。分页存储管理系统中的每一页只是存放信息的物理单位,其本身没有完整的意义,因而不便于实现信息的共享。
▲在UNIX操作系统中,把输入输出设备看作是特殊文件。
在类UNIX操作系统中,常见的设备文件由两类:Block Device Drive和Character Device Drive两类。
Character Device Drive又被称作字符设备或者裸设备raw devices,Block Device Drive通常称为块设备;Block Device Driver是以固定的大小长度来传送转移资料,Character Device Driver是以不定长度的字元传送资料。他们所连接的Devices也有所不同,Block Device大致是可以随机存储(Random Access)资料的设备,如硬盘,光盘等,而Character Device则刚好相反,遵循先后顺序来存储资料的设备,例如终端机、键盘等。
字符设备和块设备的主要区别是:在对于字符设备发出读写请求时,实际的硬件I/O一般就紧接着发生了,而块设备则不然,它利用一块系统内存作为缓冲区,当用户进程对设备请求满足用户要求时,就返回请求的数据,如果不能就调用请求函数来进行实际的I/O操作。因此,块设备主要是针对硬盘灯慢速设备设计的,以免消耗过多的CPU时间来等待。
/dev/disk对应的为块设备,文件系统操作用到它,如mount,/dev/rdisk对应的为字符设备(裸设备,rdisk的r即为raw)。一般的来说,我们的操作习俗的各种软件都是以块的方式来进行读写硬盘的,这里的块是逻辑上的块,创建文件系统时可以选择,windows里面叫做簇。
字符设备还是块设备的定义属于操作系统的设备访问层,与实际物理设备的特性无必然联系。设备访问曾下面是驱动程序,所以操作系统能够支持的设备访问方式是驱动程序所提供的访问方式。也就是说驱动程序支持stream的方式,那么就可以用这种方式访问,驱动程序如果还支持block方式,那么你想用哪一种方式就使用哪一种方式。
块设备的一个典型的例子就是,硬盘式的裸设备,两种都支持块设备(Block Device):是一种具有一定结构的随机存储设备,对这种设备的读写是按照块来进行的,他使用缓冲区来存放暂时的数据,等到条件成熟后,从缓存一次性的写入设备或从设备中一次性读取放入到缓存区中。
在来一个字符型设备的例子,磁盘和文件系统等字符设备(Character Device):这是一个顺序的数据流设备,对于这种设备的读写是按照字符来进行的,而且这些字符是连续的形成一个数据流,它不具备缓冲区,所以对这种设备的读写是实时的,如终端、磁带机等等
两种类型的守则的根本区别在于他们是否可以被随机访问,也就是说,能否在访问设备时随意的从一个位臵跳转到另外一个位臵。举一个例子,键盘这种设备提供的是一个数据流,当敲入\这个字符串的时候,键盘驱动程序会安装和输入完全相同的顺序返回这个由三个字符组成的数据流。如果让键盘驱动程序打乱顺序来读字符串,或读取其他字符,都是没有意义的。所以键盘就是一个典型的字符设备,他提供的功能就是用户从键盘输入的字符流。对键盘进行读操作会得到一个字符流,首先是\,然后是\,最后是\,最终是文件的结束符(EOF)。当用户没有敲键盘的时候,字符流就是空的,硬盘设备的情况就不一样了,硬盘设备的驱动可能要求读取磁盘上任意一块数据,然后又转去读取别的块的内容,
8
而被读取的块在磁盘上的位臵不一定要连续,所以说硬盘可以被随机访问,而不是以流的方式被访问,显示它是一个块设备
再者,内核管理块设备要比管理字符设备细致的多,需要考虑的问题和完成的工作相比字符设备来说要复杂的多,这是因为字符设备被仅仅需要 控制一个位臵——当前位臵,而块设备访问的位臵必须能够在介质的不同区间前后移动,所以事实上内核不必提供一个专门的子系统来管理字符设备,但是对于块设备的管理则必须有一个专门提供服务的内核子系统,不仅仅是因为块设备的复杂性远远高于字符设备,更重要的原因是块设备对执行性能的要求很高;对硬盘每多一分的利用都会对整个系统性能带来提升,其效果要远远比键盘吞吐速度成倍的提升大的多。
在Linux驱动程序中字符设备和块设备的三点区别:
1、字符设备只能以字节为最小单位进行访问,而块设备以块为单位访问,如512字节,1024字节不等
2、块设备可以随机访问,但是字符设备不可以
3、字符和块没有访问量大小的限制,块也可以以字节为单位来访问
简单的来讲,块设备可以随机存储,而字符设备不能随机存取,那么裸设备这种东西又该怎么解释呢?
难道裸设备,如磁盘裸设备也不能随机读取吗?那在数据库中用裸设备创建一个2G的数据文件,为了存储最后一个数据块,难道oracle还要把前面的所有数据块都读一遍,显然这 样的操作不符合事实,如果这样解释呢,操作系统不能随机读取,并不意味着数据库也不能随机读取
块设备通过系统缓存进行读取,不是直接和物理磁盘读取,字符设备可以直接物理磁盘读取,不经过系统缓存。(如检查,直接相应中断)
在oracle中使用裸设备的好处是什么?
因为使用裸设备避免了在经过unix操作系统这一层,数据直接从disk到oracle之间进行无缝传输,所以使用裸设备对于读写频繁的数据库应用来说,可以极大的提高数据库系统的性能,当然,这是以磁盘的I/O非常大,磁盘I/O已经成为系统瓶颈的情况下才能力的,如果磁盘读写确实非常频繁,以至于磁盘读写成为系统瓶颈的情况成立,那么采用裸设备确实可以大大提高性能,最大甚至可以提高至40%,非常明显。
而且,由于使用了原始分区,没有采用文件系统的管理方式,对unix维护文件系统的开销也都没有了。比如不在需要维护i-node,空闲块等等,这也能够导致性能的提高。
▲RAID,为Redundant Arrays of Independent Disks的简称,中文为廉价冗余磁盘阵列。 磁盘阵列其实也分为软阵列 (Software Raid)和硬阵列 (Hardware Raid) 两种. 软阵列即通过软件程序并由计算机的 CPU提供运行能力所成. 由于软件程式不是一个完整系统故只能提供最基本的 RAID容错功能. 其他如热备用硬盘的设臵, 远程管理等功能均一一欠奉. 硬阵列是由独立操作的硬件提供整个磁盘阵列的控制和计算功能. 不依靠系统的CPU资源.
由于硬阵列是一个完整的系统, 所有需要的功能均可以做进去. 所以硬阵列所提供的功能和性能均比软阵列好. 而且, 如果你想把系统也做到磁盘阵列中, 硬阵列是唯一的选择. 故我们可以看市场上 RAID 5 级的磁盘阵列均为硬阵列. 软 阵列只适用于 Raid 0 和 Raid 1. 对于我们做镜像用的镜像塔, 肯定不会用 Raid 0或 Raid 1。作为高性能的存储系统,巳经得到了越来越广泛的应用。RAID的级别从RAID概念的提出到现在,巳经发展了六个级别, 其级别分别是0、1、2、3、4、5等。但是最常用的是0、1、3、5四个级别。下面就介绍这四个级别。
9
RAID 0:将多个较小的磁盘合并成一个大的磁盘,不具有冗余,并行I/O,速度最快。RAID 0亦
称为带区集。它是将多个 磁盘并列起来,成为一个大硬盘。在存放数据时,其将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中。 所以,在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有冗余功能的,如果一个磁盘(物理)损坏,则所有的数 据都无法使用。
RAID 1:两组相同的磁盘系统互作镜像,速度没有提高,但是允许单个磁盘错,可靠性最。RAID 1
就是镜像。其原理为 在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因 为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但是其磁盘的利用率却只有50%, 是所有RAID上磁盘利用率最低的一个级别。
RAID Level 3 RAID 3存放数据的原理和RAID0、RAID1不同。RAID 3是以一个硬盘来存放数据的奇偶校验位,数据则分段存储于其余硬盘 中。它象RAID 0一样以并行的方式来存放数,但速度没有RAID 0快。如果数据盘(物理)损坏,只要将坏硬盘换掉,RAID
控制系统则会根据校验盘的数据校验位在新盘中重建坏盘上的数据。不过,如果校验盘(物理)损坏的话,则全部数据都 无法使用。利用单独的校验盘来保护数据虽然没有镜像的安全性高,但是硬盘利用率得到了很大的提高,为n-1。
RAID 5:向阵列中的磁盘写数据,奇偶校验数据存放在阵列中的各个盘上,允许单个磁盘出错。RAID 5也是以数据的校验 位来保证数据的安全,但它不是以单独硬盘来存放数据的校验位,而是将数据段的校验位交互存放于各个硬盘上。这样, 任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重
建损坏的数据。硬盘的利用率为n-1。
RAID 0-1:同时具有RAID 0和RAID 1的优点。
冗余:采用多个设备同时工作,当其中一个设备失效时,其它设备能够接替失效设备继续工作的体
系。在PC服务器上,通 常在磁盘子系统、电源子系统采用冗余技术
▲虚拟存储管理系统的基础是程序的局部性理论。这个理论的基本含义是指程序执行时,往往会不均匀地访问内存储器,即有些存储区被频繁访问,有些则少有问津。程序的局部性表现在时间局部性和空间局部性上。时间局部性是指最近被访问的存储单元可能马上又要被访问。例如程序中的循环体、一些计数变量、累加变量、堆栈等都具有时间局部性特点。空间局部性是指马上被访问的存储单元,其相信或附近单元也可能马上被访问。例如一段顺序执行的程序,数组的顺序处理等都具有空间局部性的特点。
▲根据程序的局部性理论,denning提出工作集理论。工作集是指进程运行时被频繁地访问的页面集合。在进程运行时,如要能保证它的工作集页面都在主存储器内,就会大大减少进程的缺页次数,使进程高效地运行;否则将会因某些工作页面不在内存而出现频繁的页面调入调出现象,造成系统性能急剧下降,严重时会出现“抖动”现象。
▲题目:某磁盘有48个磁道,磁头从一个磁道移至另一个磁道需要5ms。文件在磁道上非连续存放,逻辑上相邻数据块的平均距离为8个磁道,每块的旋转延迟时间及传输时间分别为100ms,20ms,则读取一个50块的文件需要()A 6000msB 8000msC 10000msD 12000ms
问题补充:
访问一个数据块的时间为寻道时间+旋转延迟时间+传输时间。旋转延迟时间+传输时间
=20+100=120ms,磁头从一个磁道移到另一个磁道需要5ms,但逻辑上相邻的数据块的平均距离为8个磁道,即完成一个数据块到下一个数据块寻道时间需要40ms,所以,访问一个数据块的时间为120+40=160。所以读取一个50块的文件需要160*50=8000ms.
10