计算机操作系统基础知识大全
操作系统(OperatingSystem,简称OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石;操作系统本质上是运行在计算机上的软件程序;操作系统为用户提供一个与系统交互的操作界面 。下面就让小编带你去看看计算机操作系统基础知识吧,希望能帮助到大家!
操作系统基础 - LFS和SSD
Log-Structured File System
设计思路
LFS的设计思路来自于以下几点观察:
内存变得越来越大,能够缓存越来越多的东西,因此写入性能渐渐地主宰了文件系统的性能
磁盘的随机I/O和顺序I/O的性能相差巨大,如果能把大部分I/O都转换成顺序I/O,将能极大地提高性能
现有的文件系统在许多常见的工作负载下表现都不如意:它们的元数据和数据块是分开的,文件系统写入一个数据块要多次寻道和旋转,虽然FFS通过块组缓解了这个问题,但是依然避免不了大量短距离的寻道和旋转。
文件系统感知不到RAID,难以避免RAID-4/RAID-5的small write问题,即一个小块的数据写入会导致4次物理I/O。
因此,LFS尝试优化磁盘写入性能,尽可能地使用连续I/O,对于磁盘的读取性能则寄希望于内存能缓存更多内容。这个出发点导致了它的数据结构不同与常见的文件系统。
连续写入
LFS所尝试的第一个优化就是在写入数据块的时候,同时在后面写入数据块的inode,比如下图在磁盘地址A0写入一个数据块之后再把它的inode写到后面:
然后对于大量小块的I/O,这样是不行的,因此LFS采用了写缓存技术,先在内存中缓存一定的大小写请求,直到达到一个足够大的值(LFS中称为segment),然后再一次性写入磁盘中。因此LFS的一次I/O通常会包含多个数据块和inode:
那么,多大的segment是合适的呢,这跟磁盘性能有关系,假如说我们希望磁盘95%的时间都在写入,只有5%的时间再寻道,对于一个写入速度为100MiB/s的磁盘来说,这个segment约为9MiB。这里忽略了计算公式,有兴趣请参考43Log-structured File System (LFS)。
inode
读者们肯定能注意到,数据块和inode混在一起之后,LFS要怎么找到这些inode?我们可以用一个map结构来存储inode,其key是文件的inodenumber,value是inode再磁盘上的地址,称之为inodemap(或imap)。考虑到LFS的设计,imap不应该存储在磁盘的某个特定位置,这会引起来回寻道的问题,因此LFS在一个写I/O的最后把最新的imap也一起写进来了。
下一个问题是,LFS怎么知道最新的imap在什么地方?它必须得把最新imap的地址写在磁盘上一个固定的地方,这就是checkpointregion(CR)。出于写入性能的考虑,CR一般30秒左右才更新一次,因此对性能的影响可以忽略。
目录
前面的讨论仅涉及了文件,其实目录也是类似的,假如在某个目录/dir下面创建了一个叫foo的文件:
LFS首先写入foo的内容和inode
然后写入目录D的内容,即inode number和磁盘地址的映射关系,如下图中的(foo,K),以及这个目录新的inode
最后写入写的imap
文件读取
LFS挂载后,会先读入CR,再根据CR的内容把imap缓存到内存中,之后这两个数据结构的更新就按照上面的描述进行更新,imap在每次写I/O后追加到尾部,CR则定期写入。
从LFS读取一个文件如/dir/foo时,首先从imap缓存中找到根目录/的inode地址(比如根据约定的inode number2),读取其内容找到dir目录对应的inode number,再根据inode number从imap中找到dir对应的inodenumber,如此类推直到读入foo的inode,这之后的过程就跟普通uni__文件系统没太大区别了,inode里面有direct pointer,indirect pointer... LFS没有对读取做什么优化,而是寄希望于越来越大的内存能够缓存更多的inode和数据块。
垃圾回收
LFS写入新的数据块时,总是寻找一片连续的空闲磁盘空间,然后写入整个segment,因此磁盘中其实充满了过时的数据。比如下面的i节点号为K的文件一开始保存在磁盘地址A0,当这个文件的内容更新的时候,LFS在磁盘地址A4写入了新的数据块和inode,此时A0和A1的数据就是过时的:
另一个例子,假设用户往文件中追加了一个块(A4),这种情况下过时的数据只有老的inode(A1):
在ZFS,btrfs等吸收了LFS设计思路的文件系统中,允许用户保留这些老版本的文件作为snapshot,并把这个feature作为了一个买点,这种方法就是著名的copyon write。而在LFS中,只保留最新版本的文件。
不论如何,这些文件系统最终都需要回收这些不再使用的、过时的数据。一个简单的实现是扫描这些数据,发现过时的数据就标记为空闲,但是这样会造成大量的磁盘碎片。在LFS的实现中,定期启动一个cleaner线程,读出几个segment的数据,其中过时的数据会被直接丢弃,剩余的块则会合并到新的segment中写入磁盘。这个方式保证了磁盘的数据大致是连续的,方便在写入时找到大片的空闲空间。
Solid State Drive
这里的Solid state disk(简称SSD)特指基于NAND Flash的存储设备,SSD不一定需要基于Flash,但是目前NANDFlash是SSD事实的标准,在深入SSD之前我们先了解Flash的特性。
Flash芯片组成
跟磁盘相比,它没有任何机械组件。。Flash芯片最底层的存储单元叫做cell,一个cell可以存储一个或者多个bit:
只存储一个bit的cell叫做single-levle cell(SLC)
存储两个bit的call叫做multi-level cell(MLC)
存储三个bit的call叫做triple-level cell(TLC)
……
总体来说SLC的性能最好成本最高,每个cell的存储的bit数量越多性能就越差,成本也越低。
多个cell组成一个page,这是flash存取数据的最小单元,它的大小通常是几KiB,比如4KiB
多个page组成一个block,它的大小一般是128KiB或256KiB
多个block组成一个bank或者叫(plane),一个flash芯片一般会包含若干个bank
下图是一个缩小了规模的Flash芯片
Flash芯片的基本操作
Flash芯片的物理特性比较特殊,它最基本的底层操作有三种.
读取(read)一个page:flash芯片可以读取任意一个page,只要给出page号即可。不像磁盘,ssd是一种随机存取设备,它没有机械部件,存取任意一个位置的速度都是一样的,读操作通常只要10微秒(10^-5)左右。
擦除(erase)一个block:flash的物理特性要求在写入一个page之前,先擦除改page所在的整个block,整个个操作很慢,一般需要几毫秒(10^-3)。这个操作会把整个block里面每一个比特都设置成1,因此在擦除前需要复制出里面有价值的数据。block擦除完成之后就能够进行编码(或者说写入)。
编码(Program)一个page:在擦除一个block之后,flask可以把里面的一些比特从1改成0,因此把想要的内容写入page中。编码操作通常需要100微秒左右(10^-4)。
总的来说,读取的速度远快于编码的速度,而编码的速度又快于擦除的速度。
Flash磨损
由于没有机械部件,flash的可靠性比磁盘要高很多,不会出现类似磁头划碰的问题,但是flash也有它的弱点,即磨损(wearout):每次擦除一个block或编码一个page时,都会造成一些轻微的损耗,这些损耗积累下来后最终会导致无法区分0和1,这时候这个block就变得不可用了。一般一个基于MLC的芯片生命周期大约是10,000P/E(Program/Erase),也就是说每个block在失效前可以反复擦除和写入10,000次,而基于SLC的芯片生命周期大概是100,000P/E。
从Flash芯片到SSD
前面我们描述了Flash芯片的组成,而一块SSD中会包含多个Flash芯片,它们连接到一个Flash控制器上,Flash控制器对外提供了一个磁盘设备的接口,更有趣的是Flash控制器还连着一小块内存。这片内存可以用来作为I/O的缓存,同时还保存了物理块到Flash芯片的page的映射关系。
为什么SSD中需要这样一个映射关系?假设我们采用一种最简单的映射关系,把物理块0映射到第0个Flash芯片上第0个page,把物理块1映射到第0个Flash芯片上第个page……这种简单的映射有两个问题,主要出现在更新的场景:
一是性能上的,我们直到page在写入前需要先擦除,这种原地更新导致了三次I/O操作:
读出整个block,并在内存中更新对应的内容
擦除整个block,而flash擦除的速度很慢,跟磁盘基本是一个量级的
重新写入block
第二个问题是,经常更新的磁盘区域(比如swap和/tmp分区)会严重磨损,成为SSD寿命的短板
Flash Translation Layer
因此,Flash控制器最核心的功能就是,在主机发起I/O请求时,动态地完成物理块到SSD内部page的转换,这就是Flash TranslationLayer(FTL),它的目标有几个:
并行地利用多个Flash芯片
减少写放大
使得Flash的磨损尽可能的平均
太阳底下无新事,第一个问题可以借鉴RAID,后两者可以从LFS中得到启发。大多数FTL的实现都类似于log-structured filesystem,当主机往SSD写入内容的时候,先在SSD的内存中缓存一定的大小,然后找到一片空闲的区域一次性的写入;同时SSD的内存和Flash中维护一个物理块和SSD内部page的映射表,即mappingtable。假设主机进行了这一系列的操作:
往物理块100写入内容a1
往物理块101写入内容a2
往物理块2000写入内容b1
往物理块2001写入内容b2
这一系列的操作会由FTL合并写入到一片临近的区域中,如下图所示,图上Table部分即mapping table。
垃圾回收
假设主机接下来需要修改物理块100和101的内容,分别改成了c1和c2,FTL不会原地修改,而是直接写入到后续的空闲page中,同时在mappingtable中修改物理块100和101对应的page为4和5:
此时page0和1中的数据是过时的,如果需要回收这两个page,FTL必须先把同一个block中有效的数据(page2和3)读取出来,写入到后续的空闲空间中,这个时候整个block0都是过时的数据,FTL才能擦除这个block。
mapping table 大小
按照上面的方式把一个物理块映射到ssd的一个page,如果这两者的大小都为4KiB,对于一个1TiB的SSD来说,mappingtable需要有1TiB/4KiB个条目,假设每个条目的大小大小为4字节的话,整个mappingtable的大小需要1GiB,对于SSD的内存来说,这实在太大了。一种解决方案是只在SSD中缓存部分活跃的mapping,其余部分持久化到Flash中,如果工作集能满足局部性原理的话,这个方式能保持不错的性能。
另一种方案是把一大块物理块映射到SSD的一个block中,这样mappingtable可以非常小,但是它有一个严重的问题,如果只修改block中一个或几个page时,FTL必须把整块内容读取出来,在内存中完成对应page的修改后,再把整个block的内容写到一个新的空闲block中。因此,实践中更常见的做法叫混合mapping,FTL中有两个mappingtable,基于page的映射叫log table,基于block的映射叫data table,如果物理块能连续的映射到一个block中则保存到datatable,否则保存到log table中。
DCS系统操作基础知识
熟读DCS操作手册
一、规程术语含义
注意:表示涉及的事物或操作可能引起不可预测的危险后果。
警告:表示涉及的事物或操作能引起可预见的系统运行故障。
危险:表示涉及的事物或操作将引起系统停运,甚至设备损坏及人身伤害。
二、操作员操作职责
1、监视DCS系统运行,预防可能产生的危险。
2、随时干预系统运行,确保安全、正常生产。
3、系统授权运行参数的更改。
三、系统异常情况处理
1、DCS操作界面数据不刷新(正常情况数据每秒刷新一次),手自动切换无法操作等情况,应联系DCS 维护人员进行维护,同时立即到现场操作。
2、出现变送器故障,自动控制过程应立即切回手动。
3、出现阀门执行机构,回路输出卡件等故障现象,应改为现场操作。
4、出现DCS系统回路输入卡件故障时应把相应控制回路切回手动,并更换故障卡件,检查确认故障 消除后方可再次投入自动。
5、DCS系统出现异常断电,应改为现场操作。重新上电后,要求工程师检查系统情况,检查回路参数等系统数据是否正常,确认各调节阀的开度。若有异常应重新下传组态,一切正常后方可再次投入自动。
6、其他异常情况请参照岗位操作规程执行。
四、报警处理
工艺指标产生报警时会有声音提示,报警信息在报警信息栏和报警一览画面中指示,报警情况了解后,用消音按钮关闭当前的报警声音,分析报警原因后采取相应的操作。
五、检测控制点
随时密切监视与控制息息相关温度、压力、液位、电流、阀位等。
六、调节阀控制
系统工程师(工程师以上)职责
1、系统软、硬件维护。
2、 DCS系统的启动和停止。
3、操作员口令的设臵与修改。
4、系统重要运行参数的维护与修改。
5、其它涉及系统的职责。
6、注意事项:
▼当系统出现停电时,应立即将系统中投入自动控制的回路切到手动。当供电正常时,首先检查系统运行及系统数据是否正常,如果有异常现象,重新下传组态,并检查核对系统参数。一切正常后方可再次投入自动。(参数表参见相关资料)
▼统启动运行上电顺序:UPS、控制站、显示器、操作站计算机。
▼停机次序:控制站计算机、显示器、控制站、UPS。
▼操作员口令维护:每台操作站上的操作员口令之间无任何关系,必须单独建立。口令是保证系 统安全正常运行的前提,必须严格执行。
▼历史数据保存在操作站硬盘上,与系统停电等因素无关。历史数据是追查事故责任的重要手段。
▼操作站计算机是系统的重要组成部分,必须保持其正常运行和整洁。
▼当系统卡件故障时应把相应控制回路立即切回手动,并通知DCS系统维护人员立即更换故障卡件,检查确认故障消除时方可再次将系统投入自动。
七、操作员职责
1、监视DCS系统运行,预防可能产生的危险。
2、随时干预系统运行,确保安全、正常生产。
3、系统授权运行参数的更改。
4、自动控制投运方法:将画面中的回路仪表的手/自动开关打到自动即可。
5、报警处理:工艺指标产生报警时会有声音提示,报警信息在报警信息栏和报警一览画面中指示,报警情况了解后,用消音按钮关闭当前的报警声音,并在报警一览中确认。
6、异常情况处理:
▼自动控制过程中,出现变送器故障,应立即切回手动。
▼如果出现阀门故障现象,此时应切回手动,改为现场操作。
▼系统出现断电,此时应立即切回手动,并要求工程师检查系统情况,确认完好后方可再次投 入自动。
▼DCS操作界面数据不刷新(正常情况数据每秒刷新一次),手自动切换无法操作等情况,应联 系仪表人员进行维护。同时立即到现场操作。
▼出现系统卡件故障时应把相应控制回路切回手动,并由仪表人员更换故障卡件,检查确认故 障消除后方可再次投入自动。
▼DCS系统出现异常断电,应改为手动操作。重新上电后,要求工程师检查系统情况,检查回路参数等系统数据是否正常,确认各调节阀的开度。一切正常后方可再次投入自动。
DCS系统一旦出现故障,如何用最短时间准确诊断故障?
看工经典案例
Q1:哪些情况是控制系统问题还是工艺问题?
A:出现以下情况时,说明控制系统发生问题,应立即通知微机维修人员维修,同时操作工到现场进行处理。
1、 经常变化的数据长时间不变,且几个数据或所有数据都不变。
2、 控制分组画面中,手动自动无法切换,或手动输入数据后,一经确认,又恢复为原来的数据,修改不过来。
3、 趋势图画面中,几条趋势都为直线不变。
4、 监控画面中,多个数据同时波动较大。
判断波动数据是否为工艺上相关参数,若是相关参数则通知仪表及微机人员检查,看是否某调节系统波动引起相关参数变化,同时将相关调节系统打到手动状态,必要时到现场进行调节。
若波动数据工艺上彼此并无直接影响,则可能为微机某卡件发生故障,立即将相关自调系统打到手动调节,必要时到现场进行调节,同时,通知微机及仪表人员检查。
Q2:大修后DCS系统如何上电,如何对DCS供电检查?
A:DCS系统对供电质量有一定要求,大修后DCS上电应注意:
1、确认外部供电是否平稳,如检修期间电压不稳不要上电。
2、测试外部供电电压是否符合198V-242V要求。
3、上电时按先总电源,再操作站,控制柜,外配柜顺序上电(断电则相反)。
4、上电后对DCS卡件故障报警、电压故障报警、交换机和网络检查,对供电电压测试。
5、用万用表可检查DCS每个机笼的5V、24V电压,如低于5V、24V则不正常。如需对供电质量深入检查,需用示波器或电能质量分析仪检测分析。
专家建议:系统维护负责人确认条件具备方可上电。应严格遵照上电步骤进行。
Q3:中控室日常管理应注意些什么?
A:控制室的日常管理对系统稳定运行和维护很重要,日常管理应注意:
1)、控制室门窗位置布置合理,操作站、控制柜、UPS放置规范,标识清楚。
2)、控制室保持日常清洁,维持适当的温度和湿度,检查照明、空调运行情况。
3)、检查系统防水、防尘、防腐蚀和防振情况,日常发现有漏洞的地方及时整改。
4)、规范管理,不允许无关人员触碰控制柜卡件,对操作站设置密码,加强保密安全管理。
5)、对控制柜内开关、端子、外配等部件标识检查,使之标识清晰方便维护。
专家建议:控制室温度范围0-50摄氏度,20度左右适宜;湿度范围:10%-90%RH,无凝露。
Q4:DCS系统在日常维护时如何能了解到系统当前故障情况?
A:日常维护时注意观察很重要,重点观察了解的地方为:
1、控制站卡件指示等显示是否异常(fail灯是否亮红灯),
2、进入监控“故障诊断”画面查看是否有卡件运行故障提示、通讯网络异常提示,
3、检查系统供电是否正常。
4、检查控制站电源风扇是否运行,交换机指示灯是否正常,是否有腐蚀现象(接线头或机柜铜条处是否发黑等现象)。
Q5:如何简单检查DCS系统接地?
DCS系统的接地示意图
A:DCS接地是一个很复杂的问题,涉及到接地地点,接地方式,接地电阻大小等从现场到DCS机柜的诸多节点和环节。但日常对DCS的常规检查主要有几个方面:
1、DCS机柜应采用单点接地方式,检查是否有可能导致多点接地的地方出现,比如机柜与槽钢的接触,接地点是否为单条引下线(线径大于16mm2,长度小于30米)到地桩或地网,部件连接(或焊接)点是否良好(锈蚀)等。
2、检查DCS接地点与电气地或避雷针引下线接地是否共用,距离是否符合要求,一般情况要求DCS接地与电气地距离15米以上,与避雷针接地点15米以上。
3、测量DCS系统接地电阻是否小于4欧姆。接地电阻的大小与很多因素相关,如接触良好,土壤湿度,导电率等,测量接地电阻可选用的仪器有摇表、钳形表等。
Q6:日常维护时如何检查DCS系统网络?
A:1、用网络测试仪测试网线硬件是否正常,检查交换机指示灯是否正常。
2、检查监控“故障诊断”画面是否有故障提示。
3、对每台计算机使用“ping”命令检查网络是否正常,IP设置是否正确。
4、检查网卡流控制是否关闭,网卡驱动安装是否正常。
5、使用组态软件自带SCDIAGNOSE软件检测网络情况。
Q7:DCS系统维护如何做好防静电?
A:如果维护不注意,静电可能对DCS卡件或通讯带来不小影响,DCS维护过程中特别是在触碰硬件卡件或通讯部件时应采取如下措施做好防静电。
1、保持环境有一定的湿度。特别北方地区或在干燥的冬季,因静电产生故障的事例要远远大于在东南沿海地区或其他季节,所以在一些重要场所,如计算机机房、实验室、电子仪器的装调车间应考虑保持一定湿度的问题,特别是对那些封闭形的空调房间,更应有一定控制湿度的设备。
2、铺设防静电地板,控制室和操作室均需铺设防静电地板。
3、在维护插扒卡件时或用手拿捏卡件时一定注意先对手释放静电,注意尽量避免用手直接触碰卡件电子元件、面板电路和焊点。
4、卡件应存放在防静电塑料盛放器或防静电塑料袋中,并存放在卡件盒中。
5、系统维护时还应注意佩带DCS防静电手腕。
Q8:DCS日常维护时需要对哪些数据进行备份?
A:需要对组态、PID参数、工艺参数(设定值)、系统安装软件、电脑驱动以及认为重要的趋势、报表等数据进行备份。
Q9:DCS系统某测点信号(温度、压力或流量等)显示故障应如何快速排除?
A:信号显示数据不准或无显示是可能常遇到的问题,它可能由于现场仪表引起,也可能由于DCS引起,可采取快速判断的方法有:
1、用信号发生器模拟标准信号测试(前提是现场必须有信号发生器可使用)或将另一同类型信号线缆改接到该通道信号引入测试,若正常表明DCS正常,再检查现场进DCS信号是否有误。
2、检查信号线正负是否接反、卡件跳线设置是否正确(特别是新增点),组态型号、量程、补偿等参数设置是否有误。
3、检查该信号所属卡件其他测点运行是否正常,并根据现场实际情况判断是否可采用对该卡件备件更换的方式检测是否为卡件故障,更换时注意跳线设置。
Q10:某操作站监控有时候会自动退出,是否异常?
A:系统退出的原因有很多,几个月偶尔退出1次,属于系统正常情况,因为如果计算机内存占用过大或运行程序过多有可能影响监控退出。但如果频繁退出(比如每天或每周)则不正常。一般系统退出主要有如下几种原因:
1、系统软件安装不规范,重新安装后可以解决。
2、同一个时间恰好出现了多个报警,导致计算机系统的资源不足报错。
3、系统调用的组态路径为网络路径,非本机路径。
4、硬件如主板或硬盘出现故障。
5、若硬盘空间不够,也可能自动退出。
Q11:计算机重启后异常?
A:用户现场使用DELL液晶显示器,操作系统为WINNT。某次重启操作系统后,无法正常进入桌面,提示不支持vga格式。与维护人员交流,在重启计算机前做过何种操作,反馈为提高了显示器的分辨率。判断可能是调高了分辨率后导致NT系统自检时无法识别显示系统。进入BIOS,恢复系统默认设置后系统恢复正常。
A:原因分析:键盘外壳未良好接地,人体静电对键盘的冲击,也会导致键盘死机。
解决方案:
1、新键盘外壳生产时,要求外协单位在键盘上留出接地孔或接地杆;
2、安装时,使键盘外壳与键盘线屏蔽地可靠连接;
3、键盘外壳上去除部分涂层,使外壳有有效接地点。
Q13:压力信号异常是何原因?
A:压力信号出现满量程情况,与实际不符。断开卡件后面的信号线正极,信号由满量程变仍有8公斤左右压力信号(量程为0-13公斤)。经现场观察,该测点经过安全栅。将信号线短路,不过安全栅后,信号显示正常。
初步判断是安全栅出现问题。原因可能是同一组的信号,安全栅是共地的。当安全栅故障后,另一毫安信号耦合到该信号上来,造成信号的干扰。
Q14:热电阻信号不准如何排查?
A:首先,检查热电阻的组态,确认了组态中的热电阻型号和实际的型号保持一致;其次,确保上下位机组态一致。最后,如果还是怀疑测温有问题的话,可以测量现场热电阻A和B之间的阻值为R1;B和C之间的阻值为R2。
根据3线制热电阻的测温原理,可以得到热电阻的实际电阻值为R1-2R2。然后查表找出对应的温度。然后用这个温度和监控上的温度再进行比较。如果出入较大,请更换卡件后再次尝试。
Q15:如何快速排查系统通讯故障?
A:在系统运行过程中若发现通讯故障,应重点做如下检查:
1、了解清楚具体故障现象,是所有通讯中断还是某部分数据通 讯异常,还是某操作站通讯异常,这对之后的排查很重要。
2、工程师权限进入监控故障诊断画面,观察是否有通讯卡件或总线故障报警(如数据转发卡,主控卡等)提示。发现卡件故障用备件更换。
3、检查目前网络是否通畅,检查交换机、控制站供电是否正常。可用计算机ping命令检查各网络节点是否通畅。
4、网线、交换机、SBUS线等故障均可能引起网络故障,可将其排除法更换测试。
5、检查有问题操作站IP设置是否正确,卡件地址(主控卡、数据转发卡)设置是否正确、网卡驱动是否正确安装,网线连接是否不正确(交叉等)。
计算机操作系统基础
1.通常在计算机硬件上配置的OS,目标有:
方便
有效
可扩充
开放
2.OS为系统软件,所以是一种软件接口。
3.用户使用OS的方式
(1)命令方式:联机命令,直接操作OS
(2)系统调用:OS提供系统调用
(3)图形、窗口:GUI界面
4.计算机当中的资源:
硬件和软件资源。归纳起来可将资源分为四类:处理器、存储器、 I/O设备以及信息(数据和程序)。
OS的主要功能也正是针对这四类资源进行有效的管理,即:
处理机管理, 用于分配和控制处理机;
存储器管理,主要负责内存的分配与回收;
I/O设备管理,负责I/O设备的分配与操纵;
文件管理,负责文件的存取、共享和保护。
5.扩充机器
通常把覆盖了软件的机器称为扩充机器或虚机器。如果我们又在第一层软件上再覆盖上一层文件管理软件,则用户可利用该软件提供的文件存取命令,来进行文件的存取。此时,用户所看到的是台功能更强的虚机器。如果我们又在文件管理软件上再覆盖一层面向用户的窗口软件,则用户便可在窗口环境下方便地使用计算机,形成一台功能更强的虚机器。
6. 操作系统的发展过程
1. 人工操作方式
2. 脱机输入/输出(Off-Line I/O)方式
3.单道批处理系统(Simple Batch Processing System)
4.多道批处理系统(Multiprogrammed Batch Processing System)
在该系统中,用户所提交的作业都先存放在外存上并排成一个队列,称为“后备队列”;然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享CPU和系统中的各种资源。
如果允许在内存中装入多道程序, 并允许它们并发执行,则无疑会大大提高内存和I/O设备的利用率。
5. 多道批处理系统需要解决的问题
(1)处理机管理问题。
(2) 内存管理问题。
(3) I/O设备管理问题。
(4) 文件管理问题。
(5) 作业管理问题。
6.分时系统(Time-Sharing System)
为实现分时系统,其中,最关键的问题是如何使用户能与自己的作业进行交互,即当用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令,再将结果返回给用户。此后,用户可继续键入下一条命令,此即人—机交互。应强调指出,即使有多个用户同时通过自己的键盘键入命令,系统也应能全部地及时接收并处理。
7.实时系统
所谓“实时”,是表示“及时”,而实时系统(Real-TimeSystem)是指系统能及时(或即时)响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。
(1) 硬实时任务(hard real-time task)。系统必须满足任务对截止时间的要求,否则可能出现难以预测的结果。
(2) 软实时任务(Soft real-time task)。它也联系着一个截止时间, 但并不严格,若偶尔错过了任务的截止时间,对系统产生的影响也不会太大。
7.操作系统的基本特性
并发
并行性和并发性是既相似又有区别的两个概念,并行性是指两个或多个事件在同一时刻发生;而并发性是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内,宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可同时执行。
共享(Sharing)
在操作系统环境下,所谓共享是指系统中的资源可供内存中多个并发执行的进程(线程)共同使用。由于资源属性的不同,进程对资源共享的方式也不同,目前主要有以下两种资源共享方式。
互斥共享方式
系统中的某些资源,如打印机、磁带机,虽然它们可以提供给多个进程(线程)使用,但为使所打印或记录的结果不致造成混淆,应规定在一段时间内只允许一个进程(线程)访问该资源。为此,当一个进程A要访问某资源时,必须先提出请求,如果此时该资源空闲,系统便可将之分配给请求进程A使用, 此后若再有其它进程也要访问该资源时(只要A未用完)则必须等待。仅当A进程访问完并释放该资源后,才允许另一进程对该资源进行访问。我们把这种资源共享方式称为互斥式共享,而把在一段时间内只允许一个进程访问的资源称为临界资源或独占资源。计算机系统中的大多数物理设备,以及某些软件中所用的栈、变量和表格,都属于临界资源,它们要求被互斥地共享。
同时访问方式
系统中还有另一类资源,允许在一段时间内由多个进程“同时”对它们进行访问。这里所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问。典型的可供多个进程“同时”访问的资源是磁盘设备,一些用重入码编写的文件,也可以被“同时”共享,即若干个用户同时访问该文件。
并发和共享是操作系统的两个最基本的特征,它们又是互为存在的条件。一方面,资源共享是以程序(进程)的并发执行为条件的,若系统不允许程序并发执行,自然不存在资源共享问题;另一方面,若系统不能对资源共享实施有效管理,协调好诸进程对共享资源的访问,也必然影响到程序并发执行的程度,甚至根本无法并发执行。
虚拟(Virtual)
操作系统中的所谓“虚拟”,是指通过某种技术把一个物理实体变为若干个逻辑上的对应物。物理实体(前者)是实的,即实际存在的;而后者是虚的,是用户感觉上的东西。相应地,用于实现虚拟的技术,称为虚拟技术。在OS中利用了多种虚拟技术,分别用来实现虚拟处理机、虚拟内存、虚拟外部设备和虚拟信道等。
在虚拟处理机技术中,是通过多道程序设计技术,让多道程序并发执行的方法,来分时使用一台处理机的。此时,虽然只有一台处理机,但它能同时为多个用户服务,使每个终端用户都认为是有一个CPU在专门为他服务。亦即,利用多道程序设计技术,把一台物理上的CPU虚拟为多台逻辑上的CPU,也称为虚拟处理机,我们把用户所感觉到的CPU称为虚拟处理器。
异步性(Asynchronism)
在多道程序环境下,允许多个进程并发执行,但只有进程在获得所需的资源后方能执行。在单处理机环境下,由于系统中只有一个处理机,因而每次只允许一个进程执行,其余进程只能等待。当正在执行的进程提出某种资源要求时,如打印请求,而此时打印机正在为其它某进程打印,由于打印机属于临界资源,因此正在执行的进程必须等待,且放弃处理机,直到打印机空闲,并再次把处理机分配给该进程时,该进程方能继续执行。可见,由于资源等因素的限制,使进程的执行通常都不是“一气呵成”,而是以“停停走走”的方式运行。
8.操作系统的主要功能
8.1处理机管理功能
1. 进程控制
在传统的多道程序环境下,要使作业运行,必须先为它创建一个或几个进程,并为之分配必要的资源。当进程运行结束时,立即撤消该进程,以便能及时回收该进程所占用的各类资源。进程控制的主要功能是为作业创建进程、撤消已结束的进程,以及控制进程在运行过程中的状态转换。在现代OS中,进程控制还应具有为一个进程创建若干个线程的功能和撤消(终止)已完成任务的线程的功能。
2. 进程同步
为使多个进程能有条不紊地运行,系统中必须设置进程同步机制。进程同步的主要任务是为多个进程(含线程)的运行进行协调。有两种协调方式:① 进程互斥方式,这是指诸进程(线程)在对临界资源进行访问时, 应采用互斥方式;②进程同步方式,指在相互合作去完成共同任务的诸进程(线程)间,由同步机构对它们的执行次序加以协调。
为了实现进程同步,系统中必须设置进程同步机制。最简单的用于实现进程互斥的机制,是为每一个临界资源配置一把锁W,当锁打开时,进程(线程)可以对该临界资源进行访问;而当锁关上时,则禁止进程(线程)访问该临界资源。
3. 进程通信
在多道程序环境下,为了加速应用程序的运行,应在系统中建立多个进程,并且再为一个进程建立若干个线程,由这些进程(线程)相互合作去完成一个共同的任务。而在这些进程(线程)之间,又往往需要交换信息。例如,有三个相互合作的进程,它们是输入进程、计算进程和打印进程。输入进程负责将所输入的数据传送给计算进程;计算进程利用输入数据进行计算,并把计算结果传送给打印进程;最后,由打印进程把计算结果打印出来。进程通信的任务就是用来实现在相互合作的进程之间的信息交换。?
当相互合作的进程(线程)处于同一计算机系统时,通常在它们之前是采用直接通信方式,即由源进程利用发送命令直接将消息(message)挂到目标进程的消息队列上,以后由目标进程利用接收命令从其消息队列中取出消息。
4. 调度
在后备队列上等待的每个作业,通常都要经过调度才能执行。在传统的操作系统中,包括作业调度和进程调度两步。作业调度的基本任务,是从后备队列中按照一定的算法,选择出若干个作业,为它们分配其必需的资源(首先是分配内存)。在将它们调入内存后,便分别为它们建立进程,使它们都成为可能获得处理机的就绪进程,并按照一定的算法将它们插入就绪队列。而进程调度的任务,则是从进程的就绪队列中选出一新进程,把处理机分配给它,并为它设置运行现场,使进程投入执行。值得提出的是,在多线程OS中,通常是把线程作为独立运行和分配处理机的基本单位,为此,须把就绪线程排成一个队列,每次调度时,是从就绪线程队列中选出一个线程,把处理机分配给它。
8.2存储器管理功能
1. 内存分配
OS在实现内存分配时,可采取静态和动态两种方式。在静态分配方式中,每个作业的内存空间是在作业装入时确定的;在作业装入后的整个运行期间,不允许该作业再申请新的内存空间,也不允许作业在内存中“移动”;在动态分配方式中,每个作业所要求的基本内存空间,也是在装入时确定的,但允许作业在运行过程中,继续申请新的附加内存空间,以适应程序和数据的动态增涨,也允许作业在内存中“移动”。
为了实现内存分配,在内存分配的机制中应具有这样的结构和功能:
① 内存分配数据结构, 该结构用于记录内存空间的使用情况, 作为内存分配的依据;
② 内存分配功能,系统按照一定的内存分配算法, 为用户程序分配内存空间;
③ 内存回收功能,系统对于用户不再需要的内存,通过用户的释放请求,去完成系统的回收功能。
2. 内存保护
内存保护的主要任务,是确保每道用户程序都只在自己的内存空间内运行,彼此互不干扰。
为了确保每道程序都只在自己的内存区中运行,必须设置内存保护机制。一种比较简单的内存保护机制,是设置两个界限寄存器,分别用于存放正在执行程序的上界和下界。系统须对每条指令所要访问的地址进行检查,如果发生越界,便发出越界中断请求,以停止该程序的执行。如果这种检查完全用软件实现,则每执行一条指令,便须增加若干条指令去进行越界检查,这将显著降低程序的运行速度。因此,越界检查都由硬件实现。当然,对发生越界后的处理, 还须与软件配合来完成。
3. 地址映射
一个应用程序(源程序)经编译后,通常会形成若干个目标程序;这些目标程序再经过链接便形成了可装入程序。这些程序的地址都是从“0”开始的,程序中的其它地址都是相对于起始地址计算的;由这些地址所形成的地址范围称为“地址空间”,其中的地址称为“逻辑地址”或“相对地址”。此外,由内存中的一系列单元所限定的地址范围称为“内存空间”, 其中的地址称为“物理地址”。
在多道程序环境下,每道程序不可能都从“0”地址开始装入(内存),这就致使地址空间内的逻辑地址和内存空间中的物理地址不相一致。使程序能正确运行,存储器管理必须提供地址映射功能,以将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。该功能应在硬件的支持下完成。
4. 内存扩充
存储器管理中的内存扩充任务,并非是去扩大物理内存的容量,而是借助于虚拟存储技术,从逻辑上去扩充内存容量,使用户所感觉到的内存容量比实际内存容量大得多;或者是让更多的用户程序能并发运行。这样,既满足了用户的需要,改善了系统的性能,又基本上不增加硬件投资。为了能在逻辑上扩充内存,系统必须具有内存扩充机制,用于实现下述各功能:
(1) 请求调入功能。
(2) 置换功能。
8.3.设备管理功能
设备管理用于管理计算机系统中所有的外围设备,而设备管理的主要任务是,完成用户进程提出的I/O请求;为用户进程分配其所需的I/O设备;提高CPU和I/O设备的利用率;提高I/O速度;方便用户使用I/O设备。为实现上述任务,设备管理应具有缓冲管理、设备分配和设备处理,以及虚拟设备等功能。
1. 缓冲管理
CPU运行的高速性和I/O低速性间的矛盾自计算机诞生时起便已存在。而随着CPU速度迅速、大幅度的提高,使得此矛盾更为突出,严重降低了CPU的利用率。如果在I/O设备和CPU之间引入缓冲,则可有效地缓和CPU和I/O设备速度不匹配的矛盾,提高CPU的利用率,进而提高系统吞吐量。因此,在现代计算机系统中,都毫无例外地在内存中设置了缓冲区,而且还可通过增加缓冲区容量的方法,来改善系统的性能。
最常见的缓冲区机制有单缓冲机制、能实现双向同时传送数据的双缓冲机制,以及能供多个设备同时使用的公用缓冲池机制。
2. 设备分配
设备分配的基本任务,是根据用户进程的I/O请求、系统的现有资源情况以及按照某种设备分配策略,为之分配其所需的设备。如果在I/O设备和CPU之间,还存在着设备控制器和I/O通道时,还须为分配出去的设备分配相应的控制器和通道。
为了实现设备分配,系统中应设置设备控制表、控制器控制表等数据结构,用于记录设备及控制器的标识符和状态。据这些表格可以了解指定设备当前是否可用,是否忙碌,以供进行设备分配时参考。在进行设备分配时,应针对不同的设备类型而采用不同的设备分配方式。对于独占设备(临界资源)的分配,还应考虑到该设备被分配出去后,系统是否安全。设备使用完后,还应立即由系统回收。
3. 设备处理
设备处理程序又称为设备驱动程序。其基本任务是用于实现CPU和设备控制器之间的通信,即由CPU向设备控制器发出I/O命令,要求它完成指定的I/O操作;反之由CPU接收从控制器发来的中断请求,并给予迅速的响应和相应的处理。
处理过程是:设备处理程序首先检查I/O请求的合法性,了解设备状态是否是空闲的,了解有关的传递参数及设置设备的工作方式。然后,便向设备控制器发出I/O命令,启动I/O设备去完成指定的I/O操作。设备驱动程序还应能及时响应由控制器发来的中断请求,并根据该中断请求的类型,调用相应的中断处理程序进行处理。对于设置了通道的计算机系统,设备处理程序还应能根据用户的I/O请求,自动地构成通道程序。
8.4.文件管理功能
1. 文件存储空间的管理
由文件系统对诸多文件及文件的存储空间,实施统一的管理。其主要任务是为每个文件分配必要的外存空间,提高外存的利用率,并能有助于提高文件系统的运行速度。
为此,系统应设置相应的数据结构,用于记录文件存储空间的使用情况,以供分配存储空间时参考;系统还应具有对存储空间进行分配和回收的功能。为了提高存储空间的利用率,对存储空间的分配,通常是采用离散分配方式,以减少外存零头,并以盘块为基本分配单位。盘块的大小通常为512B~8 KB。
2. 目录管理
为了使用户能方便地在外存上找到自己所需的文件,通常由系统为每个文件建立一个目录项。目录项包括文件名、文件属性、文件在磁盘上的物理位置等。由若干个目录项又可构成一个目录文件。目录管理的主要任务,是为每个文件建立其目录项,并对众多的目录项加以有效的组织,以实现方便的按名存取。即用户只须提供文件名,即可对该文件进行存取。其次,目录管理还应能实现文件共享,这样,只须在外存上保留一份该共享文件的副本。此外,还应能提供快速的目录查询手段,以提高对文件的检索速度。
3. 文件的读/写管理和保护
(1)文件的读/写管理。该功能是根据用户的请求,从外存中读取数据;或将数据写入外存。在进行文件读(写)时,系统先根据用户给出的文件名,去检索文件目录,从中获得文件在外存中的位置。然后,利用文件读(写)指针,对文件进行读(写)。一旦读(写)完成,便修改读(写)指针,为下一次读(写)做好准备。由于读和写操作不会同时进行,故可合用一个读/写指针。
(2) 文件保护。① 防止未经核准的用户存取文件;② 防止冒名顶替存取文件;③ 防止以不正确的方式使用文件。
8.5.用户接口
命令接口
(1)联机用户接口。这是为联机用户提供的,它由一组键盘操作命令及命令解释程序所组成。当用户在终端或控制台上每键入一条命令后,系统便立即转入命令解释程序,对该命令加以解释并执行该命令。在完成指定功能后,控制又返回到终端或控制台上,等待用户键入下一条命令。这样,用户可通过先后键入不同命令的方式,来实现对作业的控制,直至作业完成。
(2) 脱机用户接口。
2. 程序接口
该接口是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的惟一途径。它是由一组系统调用组成,每一个系统调用都是一个能完成特定功能的子程序,每当应用程序要求OS提供某种服务(功能)时,便调用具有相应功能的系统调用。早期的系统调用都是用汇编语言提供的,只有在用汇编语言书写的程序中,才能直接使用系统调用;但在高级语言以及C语言中,往往提供了与各系统调用一一对应的库函数,这样,应用程序便可通过调用对应的库函数来使用系统调用。但在近几年所推出的操作系统中,如UNI__、OS/2版本中,其系统调用本身已经采用C语言编写,并以函数形式提供,故在用C语言编制的程序中,可直接使用系统调用。
8.6. 图形接口
9.操作系统的结构设计
把微内核的OS结构称为现代OS结构。
1. 无结构操作系统
2. 模块化OS结构
3.分层式OS结构
4.微内核OS结构
1. 客户/服务器模式(Client-Server Model)
2. 面向对象的程序设计技术(Object-Orientated Programming)
1) 面向对象技术的基本概念
面向对象技术是20世纪80年代初提出并很快流行起来的。该技术是基于“抽象”和“隐蔽”原则来控制大型软件的复杂度的。所谓对象,是指在现实世界中具有相同属性、服从相同规则的一系列事物的抽象,而把其中的具体事物称为对象的实例。OS中的各类实体如进程、线程、消息、存储器等,都使用了对象这一概念,相应地,便有进程对象线程对象、存储器对象等。
2) 面向对象技术的优点
(1) 可修改性和可扩充性。由于隐蔽了表示实体的数据和操作,因而可以改变对象的表示而不会影响其它部分,从而可以方便地改变老的对象和增加新的对象。
(2) 继承性。继承性是面向对象技术所具有的重要特性。继承性是指子对象可以继承父对象的属性,这样,在创建一个新的对象时,便可减少大量的时空开销。
(3)正确性和可靠性。由于对象是构成操作系统的基本单元,可以独立地对它进行测试,这样,比较易于保证其正确性和可靠性,从而比较容易保证整个系统的正确性和可靠性。
3. 微内核技术
所谓微内核技术,是指精心设计的、能实现现代OS核心功能的小型内核,它与一般的OS(程序)不同, 它更小更精炼,它不仅运行在核心态,而且开机后常驻内存,它不会因内存紧张而被换出内存。微内核并非是一个完整的OS,而只是为构建通用OS提供一个重要基础。由于在微内核OS结构中,通常都采用了客户/服务器模式,因此OS的大部分功能和服务,都是由若干服务器来提供的,如文件服务器、作业服务器和网络服务器等。
2) 微内核的基本功能
微内核所提供的功能,通常都是一些最基本的功能,如进程管理、存储器管理、进程间通信、 低级I/O功能。
(1) 进程管理。
(2) 存储器管理。
(3) 进程通信管理。
(4) I/O设备管理。