搜索
当前位置: 秒秒彩官网 > 读入原语 >

操作系统详解 - 影印 - 博客园

gecimao 发表于 2019-09-04 00:15 | 查看: | 回复:

  #一:隐藏了丑陋的硬件调用接口(键盘、鼠标、音箱等等怎么实现的,就不需要你管了),为应用程序员提供调用硬件资源的更好,更简单,更清晰的模型(系统调用接口)。应用程序员有了这些接口后,就不用再考虑操作硬件的细节,专心开发自己的应用程序即可。 例如:操作系统提供了文件这个抽象概念,对文件的操作就是对磁盘的操作,有了文件我们无需再去考虑关于磁盘的读写控制(比如控制磁盘转动,移动磁头读写数据等细节), #二:将应用程序对硬件资源的竞态请求变得有序化 例如:很多应用软件其实是共享一套计算机硬件,比方说有可能有三个应用程序同时需要申请打印机来输出内容,那么a程序竞争到了打印机资源就打印,然后可能是b竞争到打印机资源,也可能是c,这就导致了无序,打印机可能打印一段a的内容然后又去打印c...,操作系统的一个功能就是将这种无序变得有序。

  #作用一:为应用程序提供如何使用硬件资源的抽象 例如:操作系统提供了文件这个抽象概念,对文件的操作就是对磁盘的操作,有了文件我们无需再去考虑关于磁盘的读写控制 注意: 操作系统提供给应用程序的该抽象是简单,清晰,优雅的。为何要提供该抽象呢? 硬件厂商需要为操作系统提供自己硬件的驱动程序(设备驱动,这也是为何我们要使用声卡,就必须安装声卡驱动。。。),厂商为了节省成本或者兼容旧的硬件,它们的驱动程序是复杂且丑陋的 操作系统就是为了隐藏这些丑陋的信息,从而为用户提供更好的接口 这样用户使用的shell,Gnome,KDE看到的是不同的界面,但其实都使用了同一套由linux系统提供的抽象接口 #作用二:管理硬件资源 现代的操作系统同时运行多道程序,操作系统的任务是在相互竞争的程序之间有序地控制对处理器、存储器以及其他I/O接口设备的分配。 例如: 同一台计算机上同时运行三个程序,它们三个想在同一时刻在同一台计算机上输出结果,那么开始的几行可能是程序1的输出,接着几行是程序2的输出,然后又是程序3的输出,最终将是一团糟(程序之间是一种互相竞争资源的过程) 操作系统将打印机的结果送到磁盘的缓冲区,在一个程序完全结束后,才将暂存在磁盘上的文件送到打印机输出,同时其他的程序可以继续产生更多的输出结果(这些程序的输出没有真正的送到打印机),这样,操作系统就将由竞争产生的无序变得有序化。

  程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,这个繁琐的工作就是操作系统来干的,有了他,程序员就从这些繁琐的工作中解脱了出来,只需要考虑自己的应用软件的编写就可以了,应用软件直接使用操作系统提供的功能来间接使用硬件。

  1.主要区别是:你不想用暴风影音了你可以选择用迅雷播放器或者干脆自己写一个,但是你无法写一个属于操作系统一部分的程序(时钟中断处理程序),操作系统由硬件保护,不能被用户修改。

  2.操作系统与用户程序的差异并不在于二者所处的地位。特别地,操作系统是一个大型、复杂、长寿的软件,

  大型:linux或windows的源代码有五百万行数量级。按照每页50行共1000行的书来算,五百万行要有100卷,要用一整个书架子来摆置,这还仅仅是内核部分。用户程序,如GUI,库以及基本应用软件(如windows Explorer等),很容易就能达到这个数量的10倍或者20倍之多。

  长寿:操作系统很难编写,如此大的代码量,一旦完成,操作系统所有者便不会轻易扔掉,再写一个。而是在原有的基础上进行改进。(基本上可以把windows95/98/Me看成一个操作系统,而windows NT/2000/XP/Vista则是另一个操作系统,对于用户来说它们十分相似。还有UNIX以及它的变体和克隆版本也演化了多年,如System V版,Solaris以及FreeBSD等都是Unix的原始版,不过尽管linux非常依照UNIX模式而仿制,并且与UNIX高度兼容,但是linux具有全新的代码基础)

  操作系统并不是与计算机硬件一起诞生的,它是在人们使用计算机的过程中,为了满足两大需求:提高资源利用率、增强计算机系统性能,伴随着计算机技术本身及其应用的日益发展,而逐步地形成和完善起来的。

  1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式。

  程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。

  (1)用户独占全机。不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低。

  20世纪50年代后期,出现人机矛盾:手工操作的慢速度和计算机的高速度之间形成了尖锐矛盾,手工操作方式已严重损害了系统资源的利用率(使资源利用率降为百分之几,甚至更低),不能容忍。唯一的解决办法:只有摆脱人的手工操作,实现作业的自动过渡。这样就出现了成批处理。

  批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令)。

  主机与输入机之间增加一个存储设备——磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批地把输入机上的用户作业读入磁带,依次把磁带上的用户作业读入主机内存并执行并把计算结果向输出机输出。完成了上一批作业后,监督程序又从输入机上输入另一批作业,保存在磁带上,并按上述步骤重复处理。

  监督程序不停地处理各个作业,从而实现了作业到作业的自动转接,减少了作业建立时间和手工操作时间,有效克服了人机矛盾,提高了计算机的利用率。

  但是,在作业输入和结果输出时,主机的高速CPU仍处于空闲状态,等待慢速的输入/输出设备完成工作: 主机处于“忙等”状态。

  为克服与缓解:高速主机与慢速外设的矛盾,提高CPU的利用率,又引入了脱机批处理系统,即输入/输出脱离主机控制。

  这样,主机不是直接与慢速的输入/输出设备打交道,而是与速度相对较快的磁带机发生关系,有效缓解了主机与设备的矛盾。主机与卫星机可并行工作,二者分工明确,可以充分发挥主机的高速计算能力。

  脱机批处理系统:20世纪60年代应用十分广泛,它极大缓解了人机矛盾及主机与外设的矛盾。IBM-7090/7094:配备的监督程序就是脱机批处理系统,是现代操作系统的原型。

  不足:每次主机内存中仅存放一道作业,每当它运行期间发出输入/输出(I/O)请求后,高速的CPU便处于等待低速的I/O完成状态,致使CPU空闲。

  所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。

  在A程序计算时,I/O空闲, A程序I/O操作时,CPU空闲(B程序也是同样);必须A工作完成后,B才能进入内存中开始工作,两者是串行的,全部完成共需时间=T1+T2。

  将A、B两道程序同时存放在内存中,它们在系统的控制下,可相互穿插、交替地在CPU上运行:当A程序因请求I/O操作而放弃CPU时,B程序就可占用CPU运行,这样 CPU不再空闲,而正进行A I/O操作的I/O设备也不空闲,显然,CPU和I/O设备都处于“忙”状态,大大提高了资源的利用率,从而也提高了系统的效率,A、B全部完成所需时间T1+T2。

  多道程序设计技术不仅使CPU得到充分利用,同时改善I/O设备和内存的利用率,从而提高了整个系统的资源利用率和系统吞吐量(单位时间内处理作业(程序)的个数),最终提高了整个系统的效率。

  (2)宏观上并行:同时进入系统的几道程序都处于运行过程中,即它们先后开始了各自的运行,但都未运行完毕;

  多道程序系统的出现,标志着操作系统渐趋成熟的阶段,先后出现了作业调度管理、处理机管理、存储器管理外部设备管理、文件系统管理等功能。

  20世纪60年代中期,在前述的批处理系统中,引入多道程序设计技术后形成多道批处理系统(简称:批处理系统)。

  (1)多道:系统内可同时容纳多个作业。这些作业放在外存中,组成一个后备队列,系统按一定的调度原则每次从后备作业队列中选取一个或多个作业进入内存运行,运行作业结束、退出运行和后备作业进入运行均由系统自动实现,从而在系统中形成一个自动转接的、连续的作业流。

  (2)成批:在系统运行过程中,不允许用户与其作业发生交互作用,即:作业一旦进入系统,用户就不能直接干预其作业的运行。

  批处理系统的追求目标:提高系统资源利用率和系统吞吐量,以及作业流程的自动化。

  批处理系统的一个重要缺点:不提供人机交互能力,给用户使用计算机带来不便。

  虽然用户独占全机资源,并且直接控制程序的运行,可以随时了解程序运行情况。但这种工作方式因独占全机造成资源效率极低。

  一种新的追求目标:既能保证计算机效率,又能方便用户使用计算机。 20世纪60年代中期,计算机技术和软件技术的发展使这种追求成为可能。

  由于CPU速度不断提高和采用分时技术,一台计算机可同时连接多个用户终端,而每个用户可在自己的终端上联机使用计算机,好象自己独占机器一样。

  若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时中断,把处理机让给另一作业使用,等待下一轮时再继续其运行。由于计算机速度很快,作业运行轮转得很快,给每个用户的印象是,好象他独占了一台计算机。而每个用户可以通过自己的终端向系统发出各种操作控制命令,在充分的人机交互情况下,完成作业的运行。

  具有上述特征的计算机系统称为分时系统,它允许多个用户同时联机使用计算机。

  (1)多路性。若干个用户同时使用一台计算机。微观上看是各用户轮流使用计算机;宏观上看是各用户并行工作。

  (2)交互性。用户可根据系统对请求的响应结果,进一步向系统提出新的请求。这种能使用户与系统进行人机对话的工作方式,明显地有别于批处理系统,因而,分时系统又被称为交互式系统。

  (3)独立性。用户之间可以相互独立操作,互不干扰。系统保证各用户程序运行的完整性,不会发生相互混淆或破坏现象。

  (4)及时性。系统可对用户的输入及时作出响应。分时系统性能的主要指标之一是响应时间,它是指:从终端发出命令到系统予以应答所需的时间。

  分时系统的主要目标:对用户响应的及时性,即不至于用户等待每一个命令的处理时间过长。

  分时系统可以同时接纳数十个甚至上百个用户,由于内存空间有限,往往采用对换(又称交换)方式的存储方法。即将未“轮到”的作业放入磁盘,一旦“轮到”,再将其调入内存;而时间片用完后,又将作业存回磁盘(俗称“滚进”、“滚出“法),使同一存储区域轮流为多个用户服务。

  虽然多道批处理系统分时系统能获得较令人满意的资源利用率和系统响应时间,但却不能满足实时控制与实时信息处理两个应用领域的需求。于是就产生了实时系统,即系统能够及时响应随机发生的外部事件,并在严格的时间范围内完成对该事件的处理。

  (1)实时控制系统。当用于飞机飞行、导弹发射等的自动控制时,要求计算机能尽快处理测量系统测得的数据,及时地对飞机或导弹进行控制,或将有关信息通过显示终端提供给决策人员。当用于轧钢、石化等工业生产过程控制时,也要求计算机能及时处理由各类传感器送来的数据,然后控制相应的执行机构。

  (2)实时信息处理系统。当用于预定飞机票、查询有关航班、航线、票价等事宜时,或当用于银行系统、情报检索系统时,都要求计算机能对终端设备发来的服务请求及时予以正确的回答。此类对响应及时性的要求稍弱于第一类。

  (1)及时响应。每一个信息接收、分析处理和发送的过程必须在严格的时间限制内完成。

  (2)高可靠性。需采取冗余措施,双机系统前后台工作,也包括必要的保密措施等。

  通用操作系统:具有多种类型操作特征的操作系统。可以同时兼有多道批处理、分时、实时处理的功能,或其中两种以上的功能。

  例如:实时处理+批处理=实时批处理系统。首先保证优先处理实时任务,插空进行批处理作业。常把实时任务称为前台作业,批作业称为后台作业。

  再如:分时处理+批处理=分时批处理系统。即:时间要求不强的作业放入“后台”(批处理)处理,需频繁交互的作业在“前台”(分时)处理,处理机优先运行“前台”作业。

  从上世纪60年代中期,国际上开始研制一些大型的通用操作系统。这些系统试图达到功能齐全、可适应各种应用范围和操作方式变化多端的环境的目标。但是,这些系统过于复杂和庞大,不仅付出了巨大的代价,且在解决其可靠性、可维护性和可理解性方面都遇到很大的困难。

  相比之下,UNIX操作系统却是一个例外。这是一个通用的多用户分时交互型的操作系统。它首先建立的是一个精干的核心,而其功能却足以与许多大型的操作系统相媲美,在核心层以外,可以支持庞大的软件系统。它很快得到应用和推广,并不断完善,对现代操作系统有着重大的影响。

  进入20世纪80年代,大规模集成电路工艺技术的飞跃发展,微处理机的出现和发展,掀起了计算机大发展大普及的浪潮。一方面迎来了个人计算机的时代,同时又向计算机网络、分布式处理、巨型计算机和智能化方向发展。于是,操作系统有了进一步的发展,如:个人计算机操作系统网络操作系统分布式操作系统等。

  个人计算机上的操作系统是联机交互的单用户操作系统,它提供的联机交互功能与通用分时系统提供的功能很相似。

  由于是个人专用,因此一些功能会简单得多。然而,由于个人计算机的应用普及,对于提供更方便友好的用户接口和丰富功能的文件系统的要求会愈来愈迫切。

  计算机网络:通过通信设施,将地理上分散的、具有自治功能的多个计算机系统互连起来,实现信息交换、资源共享、互操作和协作处理的系统。

  网络操作系统:在原来各自计算机操作系统上,按照网络体系结构的各个协议标准增加网络管理模块,其中包括:通信、资源共享、系统安全和各种网络应用服务。

  表面上看,分布式系统计算机网络系统没有多大区别。分布式操作系统也是通过通信网络,将地理上分散的具有自治功能的数据处理系统或计算机系统互连起来,实现信息交换和资源共享,协作完成任务。——硬件连接相同。

  (2)分布式操作系统管理分布式系统中的所有资源,它负责全系统的资源分配和调度、任务划分、信息传输和控制协调工作,并为用户提供一个统一的界面。

  (3)用户通过这一界面,实现所需要的操作和使用系统资源,至于操作定在哪一台计算机上执行,或使用哪台计算机的资源,则是操作系统完成的,用户不必知道,此谓:系统的透明性。

  (4)分布式系统更强调分布式计算和处理,因此对于多机合作和系统重构、坚强性和容错能力有更高的要求,希望系统有:更短的响应时间、高吞吐量和高可靠性。

  cpu在执行一个任务的过程中,若需要操作硬盘,则发送操作硬盘的指令,指令一旦发出,硬盘上的机械手臂滑动读取数据到内存中,这一段时间,cpu需要等待,时间可能很短,但对于cpu来说已经很长很长,长到可以让cpu做很多其他的任务,如果我们让cpu在这段时间内切换到去做其他的任务,这样cpu不就充分利用了吗。这正是多道技术产生的技术背景

  多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。

  空间上的复用:将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。

  时间上的复用:当一个程序在等待I/O时,另一个程序可以使用cpu,如果内存中可以同时存放足够多的作业,则cpu的利用率可以接近100%,类似于我们小学数学所学的统筹方法。(操作系统采用了多道技术后,可以控制进程的切换,或者说进程之间去争抢cpu的执行权限。这种切换不仅会在一个进程遇到io时进行,一个进程占用cpu时间过长也会切换,或者说被操作系统夺走cpu的执行权限)

  现代计算机或者网络都是多用户的,多个用户不仅共享硬件,而且共享文件,数据库等信息,共享意味着冲突和无序。 # 操作系统主要使用来 1.记录哪个程序使用什么资源 2.对资源请求进行分配 3.为不同的程序和用户调解互相冲突的资源请求。 我们可将上述操作系统的功能总结为:处理来自多个程序发起的多个(多个即多路)共享(共享即复用)资源的请求,简称多路复用 多路复用有两种实现方式 # 1.时间上的复用 当一个资源在时间上复用时,不同的程序或用户轮流使用它,第一个程序获取该资源使用结束后,在轮到第二个。。。第三个。。。 例如:只有一个cpu,多个程序需要在该cpu上运行,操作系统先把cpu分给第一个程序,在这个程序运行的足够长的时间(时间长短由操作系统的算法说了算)或者遇到了I/O阻塞,操作系统则把cpu分配给下一个程序,以此类推,直到第一个程序重新被分配到了cpu然后再次运行,由于cpu的切换速度很快,给用户的感觉就是这些程序是同时运行的,或者说是并发的,或者说是伪并行的。至于资源如何实现时间复用,或者说谁应该是下一个要运行的程序,以及一个任务需要运行多长时间,这些都是操作系统的工作。 # 2.空间上的复用 每个客户都获取了一个大的资源中的一小部分资源,从而减少了排队等待资源的时间。 例如:多个运行的程序同时进入内存,硬件层面提供保护机制来确保各自的内存是分割开的,且由操作系统控制,这比一个程序独占内存一个一个排队进入内存效率要高的多。 有关空间复用的其他资源还有磁盘,在许多系统中,一个磁盘同时为许多用户保存文件。分配磁盘空间并且记录谁正在使用哪个磁盘块是操作系统资源管理的典型任务。 这两种方式合起来便是多道技术

  操作系统虚拟机为用户提供了一种简单、清晰、易用、高效的计算机模型。虚拟机的每种资源都是物力资源通过复用、虚拟和抽象而得到的产物。

  虚拟机提供进程运行的逻辑计算环境。从概念上来说,一个进程运行在一台虚拟机上,可以认为一个进程就是一台虚拟机,一台虚拟机就是一个进程。

  b. 时分复用共享(time-multiplexed sharing): 将资源从“时间”上分割成更小的单位供不同进程使用。在计算机系统中,处理器和磁盘机等是时分复用共享的。

  虚拟:对资源进行转化、模拟或整合,把一个物理资源转变成多个逻辑上的对应物,也可以把多个物理资源变成单个逻辑上的对应物,即创建无须共享独占资源的假象,或创建易用且多于实际物理资源的虚拟资源假象,以达到多用户共享一套计算机物理资源的目的。虚拟技术可用于外部设备(外部设备同时联机操作(SPOOLing)),存储资源(虚拟内存)和文件系统(虚拟文件系统(Virtual File System, VFS))中。

  复用和虚拟相比较,复用所分割的是实际存在的物理资源,而虚拟则实现假想的同类资源。虚拟技术解决某类物理资源不足的问题,提供易用的虚拟资源和更好的运行环境。

  抽象:通过创建软件来屏蔽硬件资源的物理特性和实现细节,简化对硬件资源的操作、控制和使用。

  复用和虚拟的主要目标是解决物理资源数量不足的问题,抽象则用于处理系统复杂性,重点解决资源易用性。

  系统调用: 为给应用程序的运行提供良好环境,内核提供了一系列具有预定功能的服务例程,通过一组称为系统调用(System Call)的接口呈现给用户,系统调用把应用程序的请求传送至内核,调用相应的服务例程完成所需处理,将处理结果返回给应用程序。

  系统调用的执行过程: 当CPU执行程序中编写的由访管指令(supervisor, 也称自陷指令(trap)或中断指令(interrupt), 指引起处理器中断的机器指令)实现的系统调用时会产生异常信号,通过陷阱机制(也称异常处理机制,当异常或中断发生时,处理器捕捉到一个执行线程,并且将控制权转移到操作系统中某一个固定地址的机制),处理器的状态由用户态(user mode, 又称目态或普通态)转变为核心态(kerbel mode, 又称管态或内核态),进入操作系统并执行相应服务例程,以获得操作系统服务。当系统调用执行完毕时,处理器再次切换状态,控制返回至发出系统调用的程序。

  \2. 系统调用对资源进行抽象,提供一致性接口,避免用户在使用资源时发生错误,且编程效率大大提高。

  \1. 调用形式和实现方式不同。功能号 VS 地址; 用户态转换到内核态 VS 用户态。

  \2. 被调用代码的位置不同。 动态调用 + 操作系统 VS 静态调用 + 用户级程序。

  内核: 是一组程序模块,作为可信软件来提供支持进程并发执行的基本功能和基本操作,通常驻留在内核空间,运行于内核态,具有直接访问硬件设备和所有内存空间的权限,是仅有的能够执行特权指令的程序。

  内核的功能: a. 中断处理。中断处理是内核中最基本的功能,也是操作系统赖以活动的基础。 b. 时钟管理。时钟管理是内核的基本功能。 c. 短程调度。短程调度的职责是分配处理器,按照一定的策略管理处理器的转让,以及完成保护和恢复现场工作。 d. 原语管理。 原语是内核中实现特定功能的不可中断过程。

  内核是操作系统对裸机的第一次改造,内核和裸机组成了第一层虚拟机,进程在虚拟机上运行。

  现代计算机为处理器建立硬件标志位,称处理器状态位,通常是程序状态字(Program Status Word, PSW)中的一位,来将处理器的状态设置为内核态或用户态。

  以上三种情况都是通过中断机制发生,可以说中断和异常是用户态到内核态转换的仅有途径。

  用户栈和核心栈 a. 用户栈是用户进程空间中的一块区域。用于保存应用程序的子程序(函数)间相互调用的参数,返回值,返回点和子程序的局部变量。 b. 核心栈是内存中操作系统空间的一块区域。用于保存中断现场和保存操作系统程序(函数)间相互调用的参数,返回值,返回点和程序的局部变量。

  中断:程序执行过程中遇到急需处理的事件时,暂时终止现行程序在CPU上的运行,转而执行相应的事件处理程序,待处理完成后再返回断点或调度其他程序的执行过程。

  中断的分类: a. 外中断(又称中断或异步中断): 来自处理器之外的中断信号,如,时钟中断、键盘中断等。外中断可分为可屏蔽中断和非可屏蔽中断。 b. 内中断(又称异常或同步中断),来自处理器内部的中断信号,如,访管中断,硬件故障中断,程序性中断等。内中断不能被屏蔽。

  中断和异常的响应: 发现中断源 → 保护现场 → 转向中断/异常事件处理程序执行 → 恢复现场

  进程:具有独立功能的程序在某个数据集合上的一次运行活动,也是操作系统进行资源分配和保护的基本单位。 a. 从原理角度看,进程是支持程序执行的一种系统机制,它对处理器上运行程序的活动进行抽象。

  b. 从实现角度看,进程是一种数据结构,用来准确地刻画运行程序的状态和系统动态变化状况。

  a. 新建态(new): 进程被创建,尚未进入就绪队列。 b. 就绪态(ready): 进程具备运行条件,等待系统分配处理器。 c. 挂起就绪态(ready suspend):进程具备运行条件,但目前在外存中。 d. 运行态(running): 进程占有处理器正在运行。 e. 终止态(exit): 进程达到正常结束点或被其他原因所终止,下一步将被撤销。 f. 等待态(wait): 又称阻塞态或休眠态。进程正在等待某个事件完成,目前不具备运行条件。

  g. 挂起等待态(blocked suspend): 进程正在等待某个事件完成,并且在外存中。

  程序和数据刻画进程的静态特征,称为进程控制块的一种数据结构刻画进程的动态特征。进程映像(process image)包括进程控制块、进程程序块、进程核心块、进程数据块等要素。

  进程控制块(Process Control Block, PCB):进程存在的唯一标识,操作系统掌握进程的唯一资料结构和管理进程的主要依据。包括标识信息、现场信息和控制信息等信息。

  进程队列(process queue):处于同一状态的所有进程的PCB链接在一起的数据结构。 有两种队列组织方式:链接方式和索引方式。

  进程可以分为两部分,资源集合和线程集合。进程要支撑线程运行,为线程提供虚拟地址空间和各种资源。进程封装管理信息,线程封装执行信息。

  a. 高级调度: 又称作业调度、长程调度。从输入系统的一批作业(job, 用户提交给操作系统计算的一个独立任务)中按照预定的调度策略挑选若干作业进入内存,为其分配所需资源并创建对应作业的用户进程。 b. 中级调度: 又称平衡调度,中程调度。根据内存资源情况决定内存所能容纳的进程数目,并完成外存和内存中进程对换工作。

  c. 低级调度:又称进程调度/线程调度,短程调度。根据某种原则决定就绪队列中那个进程/线程先获得处理器,并将处理器出让给它使用。

  低级调度算法: a. 先来先服务(First Come First Server, FCFS)算法。 b. 最短作业优先(Shortest Job First, SJF)算法。 c. 最短剩余时间优先(Shortest Remaining Time First, SRTF)算法: 假设当前某进程/线程正在运行,如果

  ,若它所需的CPU运行时间比当前运行的进程/线程所需的剩余CPU时间还短,抢占式最短作业优先算法强行剥夺当前执行者的控制权,调度新进程/线程执行。 d. 最高响应比优先(Highest Response Ratio First, HRRF)算法:非剥夺式算法。其中,响应比 = (作业已等待时间 + 作业处理时间) / 作业处理时间。 e. 优先级调度算法:优先级高的选择进程/线程优先选择。 f. 轮转调度(Round-Robin, RR)算法: 也称时间片调度。就绪队列的进程轮流运行一个时间片。

  衡量调度算法的性能指标: a. 资源利用率: CPU利用率 = CPU有效工作时间/(CPU有效工作时间 + CPU空闲等待时间) b. 吞吐率: 单位时间内CPU处理作业的个数。 c. 公平性: 确保每个进程都能获得合理的CPU份额和其他资源份额,不会出现饥饿现象。 d. 响应时间: 从交互式进程提交一个请求(命令)直到获得响应之间的时间间隔。

  e. 周转时间: 批处理用户从向系统提交作业开始到作业完成为止的时间间隔。

  进程互斥(Mutual Exclusion): 若干进程因相互抢夺独占型资源而产生的竞争制约关系。

  进程同步(Synchronization): 为完成共同任务的并发进程基于某个条件来协调其活动,因为需要在某些位置上排定执行的先后次序而等待、传递信息或消息所产生的协作制约关系。

  b. 饥饿: 一个可运行进程由于由于其他进程总是优先于它,而被调度程序无限期地拖延而不能被执行。

  并发进程中与共享变量有关的程序段称为临界区(Critical Section)。共享变量所代表的资源称为临界资源(Critical Resource),即一次仅能供一个进程使用的资源。

  为每个进程设置标志,当标志值为true时表示该进程要求进入临界区,另外再设置一个指示器turn以指示可以由哪个进程进入临界区,当turn = i时则可由Pi进入临界区。

  c. 通常P操作意味着请求一个资源,V操作意味着释放一个资源。在一定条件下,P操作也可表示挂起进程的操作,V操作代表唤醒被挂起进程的操作。

  管程(monitor):代表共享资源的数据结构及并发进程在其上执行的一组构成就构成管程,管程被请求和释放资源的进程锁调用。

  c.signal()原语。如果有其他的进程因对条件变量执行wait()而被挂起,便释放之。 如果没有进程在等待,那么相当于空操作,信号不被保存。

  d. 循环等待条件。 存在循环等待链,其中每个进程都在等待下一个进程所持有的资源。

  死锁的防止就是去破坏死锁产生的必要条件。 如,使资源可同时使用(破坏互斥条件)、静态分配资源(破坏占有和等待条件)、剥夺调度(破坏不剥夺条件)、层次分配策略(循环等待条件)等。

  c. 如果进程-资源分配图中有环路,且所涉及的资源类有多个资源,则不一定会发生死锁。

  开始扫描,在找到的第一个能满足长度要求的空闲区上分配存储空间。 b. 下次适应分配算法。从未分配区

  开始顺序查找,在找到的第一个能满足长度要求的空闲区上分配存储空间。 c. 最优适应分配算法。扫描整个未分配区,选择能满足用户进程要求的

  分配存储空间。 d. 最坏适应分配算法。扫描整个未分配区,选择能满足用户进程要求的

  分配存储空间。 e. 快速适应分配算法。为经常用到的长度的空闲区设立单独的空闲区链表。

  的区,每个区称为页面或页。(注: 页面的本质是逻辑地址空间) b. 页框(kuàng, 0.0)。 又称页帧。

  的区,其大小和页面大小相等,每个区就是一个页框。(注: 页框的本质是物理地址空间)

  e. 页表。页表是操作系统为进程建立的,是程序页面和内存页框的对照表,页表的每一栏指明程序中的某一页面和分得的页框之间的关系。

  翻译快表:也称转换后援缓冲(Translation Look_aside Buffer, TLB)。用来存放进程最近访问的部分页表项。(注: 翻译快表之于页表类似于Cache之于存储器)

  二级页表:把整个页表分割成许多小页表,每个称为页表页,每个页表页含有若干个页表表项。页表页允许分散对应不连续的页框。为了找到页表页,应建立地址索引,称为页目录表,其表项指出页表页起始地址。

  二级页表实现逻辑地址到物理地址转换的过程: 由硬件“页目录表基址寄存器”指出当前运行进程的页目录表的内存起始地址,加上“页目录位移”作为索引,可找到页表页在内存的起始地址,再以“页目录位移”作为索引,找到页表页在内存的起始位置,再以“页表页位移”作为索引,找到页表页的表项,此表项中包含一个页面对应的页框号,由页框号和页内偏移便可生成物理地址。

  注: 类比于书的目录,找某一段内容的时候,先在目录上找到对应的章节,再在对应的章节下面找具体的知识点。比如,我要在《操作系统原理》中查“多级页表”。首先我知道它是在存储管理一章的,于是就找到了“第四章 存储管理”(类似于找到了页目录表)。 然后在第四章下面找“多级页表”(类似于在页目录表下面找具体的页表页)。最后找到“多级页表”对应的页码(类似于在页表页中找到其对应的页框)。最后查阅对应的章节页码(类似于读取对应页框的数据)。

  a. 分段是信息的逻辑单位,由源程序的逻辑结构及含义所决定,是用户可见的,段长由用户根据需要来确定,段起始地址可以从任何内存地址开始。引入的目的是满足用户模块化程序设计的需要。

  b. 分页是信息的物理单位,与源程序的逻辑无关,是用户不可见的,页长由系统(硬件)决定,页面只能从页大小的整数倍地址开始。引入目的是实现离散分配并提高内存利用率。

  把磁盘空间当做内存的一部分,进程的程序和数据部分放在内存中,部分放在磁盘上。程序运行时,它执行的指令或访问的数据在哪里由存储管理负责判断,并针对情况采取响应的措施。

  请求分页虚存管理: 将进程信息副本存放在外存中,当它被调度投入运行时,程序和数据没有全部装进内存,仅装入当前使用页面,进程执行过程中访问到不在内存的页面时,产生缺页异常,再由系统自动调入。

  全局页面替换策略(页面替换算法的作用范围是整个系统,不考虑进程的属主): a. 最佳页面替换算法(Optimal Replacement, OPT)。 淘汰不再访问的页或者距现在最长时间后才访问的页。 b. 先进先出页面替换算法(First in First Out Replacement, FIFO)。淘汰在内存中驻留时间最长的页。 c. 最近最少使用页面替换算法(Least Recently Used Replacement, LRU)。 淘汰最近一段时间内最久未被使用的页面。 d. 第二次机会页面替换算法(Second Chance Replacement, SCR)。 首先检查FIFO页面队列中的队首,这是最早进入内存的页面,如果其“引用位”为0,那么它最早进入且未被引用,此页被淘汰。如果其“引用位”为1,说明虽然它最早进内存,但最近仍在使用,于是将“引用位”清零,并把这个页面移到队尾,把它看做新调入的页面,再给它一次机会。

  e. 时钟页面替换算法(Clock Policy Replacement, Clock)。与SCR算法思路一致。只是用循环队列来构造页面队列,队列指针指向可能被淘汰的页面。如果队列指针指向的页的“引用位”为1,则将其置为0,同时队列指针指向下一个页。

  局部页面替换算法(页面替换算法的作用局限于进程自身,要为进程维护称为工作集的一组页面): a. 局部最佳页面替换算法(Local Minimum Replacement, MIN)。 在t时刻时,若页面P在未来(t, t+delta)时间段内未被引用,则它被淘汰。 b. 工作集置换算法。 在t时刻时,若页面P在未来(t-delta, t)时间段内未被引用,则它被淘汰。 c. 模拟工作集替换算法。

  逻辑地址分为三个部分:段号s、段内页号p、页内位移d。对于用户而言,段式虚拟地址应该由段号s和段内位移d’组成,操作系统内部自动把d’解释成段内页号p和页内位移号d。

  轮询方式: 又称程序直接控制方式。使用查询指令测试设备控制器的忙闲状态位,确定内存和设备是否能能交换数据。(注:所谓轮询,就好比,老湿依次问每一个童鞋:“有问题没?”, 如果没问题,就继续问下一个童鞋。如果这个童鞋有问题,这个老湿就停下了解决这个问题。然后又继续询问下一个童鞋。)

  中断方式: 要求CPU和设备控制器及设备之间存在中断请求线,设备控制器的状态寄存器有相应的中断允许位。 a. 进程发出启动I/O指令。 b. 设备控制器检查状态寄存器的内容,执行相应的I/O操作,一旦传输完成,设备控制器通过中断请求线发出I/O中断信号。 c. CPU收到并响应I/O中断后,转向设备的I/O中断处理程序执行。 d. 中断处理程序执行数据读取操作,将I/O缓冲寄存器的内容写入内存。操作结束后退出中断程序恢复之前的状态。 e. 执行中断前之前运行的进程。

  (注: 类似于老湿在上面讲课,有童鞋问问题时,老湿就记录下自己讲到的位置,然后取回答童鞋的问题,回答完之后,又回到刚刚讲课的地方继续讲课)

  DMA(Direct Memory Access, 直接存储器存取)方式: 内存和设备之间有一条数据通路成块的传输数据,无须CPU干9预,实际数据传输操作由DMA直接完成。

  通道方式: CPU在执行主程序时遇到I/O请求,启动在指定通道上选址的设备,一旦启动成功,通道开始控制设备进行操作,这时CPU就可以执行其他任务并与通道并行工作,直到I/O操作完成;当通道发出I/O操作结束中断时,处理器才响应并停止当前工作,转而处理I/O操作结束时间。

  I/O中断处理程序: 通常是设备驱动程序的组成部分之一。检查设备状态寄存器内容,判断产生中断原因,根据I/O操作的完成情况进行相应处理。若数据传输有错,应向上层软件报告设备出错信息,实施重新执行;若正常结束,应唤醒等待传输的进程,使其转换为就绪态;若有等待传输的I/O命令,应通知相关软件启动下一个I/O请求。

  I/O设备驱动程序:设备驱动程序是设备专有的。把用户提交的逻辑I/O请求转化为物理I/O的启动和执行。同时监督设备是否正确执行,管理数据缓冲区,进行必要的纠错处理。

  缓冲技术的基本思想: 当进程执行写操作输出数据时,先向系统申请一个输出缓冲区,然后将数据送至缓冲区,若是顺序写请求,则不断地把数据填入缓冲区,直至装满为止,此后进程可以继续计算,同时,系统将缓冲区的内容写在设备上。当进程执行读操作输入数据时,先向系统申请一个输入缓冲区,系统将设备上的一条物理记录读至缓冲区,根据要求把当前所需要的逻辑记录从缓冲区中选出并传送给进程。

  单缓冲: 是最简单的缓冲技术,每当有I/O请求时,操作系统就在内存的系统区中开设一个缓冲区。不允许多个进程同时对一个缓冲器操作。

  双缓冲: CPU可把输出到设备的数据放入其中一个缓冲器(区)、让设备慢慢处理;然后,它又可以从另一个为终端设置的缓冲器(区)中读取所需要的输入数据。

  多缓冲: 是把多个缓冲区连接起来组成两部分,一部分专门用于输入,另一部分专门用于输出的缓冲结构。

  磁盘包括多个盘面,每个盘面有一个读写磁头,所有的磁头都固定在唯一的移动臂上同时移动。一个盘面上的读写磁头的轨迹称为磁道,读写磁头下的所有磁道形成柱面,一个磁道又可以划分为多个扇区。在磁盘上定位某个物理记录需要知道其柱面号、磁头号以及扇区号。定位物理记录时,磁头到达指定扇区的时间称为查找时间, 选择磁头号并旋转至指定扇区的时间称为搜索延迟。

  磁道(柱面)的搜索定位算法: a. 先来先服务算法(First Come First Server algorithm, FCFS)。 b. 最短查找时间优先算法: 总是执行查找时间最短的请求。 c. 扫描算法: 移动臂来回的扫过所有柱面,扫描处遇到I/O请求便进行处理。 d. 分步扫描算法: 将I/O请求分为长度为N的子队列,按FIFO算法依次处理每个队列,而每个子队列采用扫描算法,处理完一个后再服务下一个队列。

  f. 循环扫描算法: 移动臂总是从0号柱面至最大号柱面顺序扫描,然后直接返回0号柱面重复进行,归途中不提供服务(而扫描算法归途是要提供服务的)。

  c. 缓输出程序。 当处理器空闲时,操作系统调用缓输出程序执行缓输出,它查看缓输出表是否有输出打印的文件,文件打印前还可能组织作业或文件标题,也可能对从输出井中读出的信息进行格式加工。

  文件的逻辑结构的两种形式: a. 流式文件。 一种无结构的文件,文件内的数据不再组成记录,只是一串顺序的信息集合,称为字节流文件。 b. 记录式文件。 一种有结构的文件,包含若干逻辑记录,逻辑记录是文件中按信息在逻辑上独立含义所划分的信息单位。

  文件物理结构: 文件的物理结构和组织是指逻辑文件在物理存储空间中的存放方法和组织关系。

  定义: 操作系统尚无严格的定义。 一般可把操作系统定义为: 管理系统资源、控制程序执行、改善人机界面、提供各种服务,并合理组织计算机工作流程和为用户方便有效地使用计算机提供良好的运行环境的一种软件系统。

  作用: a. 服务用户。 操作系统作为用户接口和公共服务程序。 b. 进程交互。 操作系统作为进程执行的控制者和协调者。 c. 系统实现。 操作系统作为扩展机或虚拟机。 d. 资源管理。 操作系统作为资源的管理者和控制者。

  多道程序设计(multiprogramming): 允许多个作业(程序)同时进入计算机系统的内存并启动交替计算的方法。

  从交互式进程提交一个请求(命令)直到获得响应之间的时间间隔称为响应时间。

  影响分时操作系统的响应时间的因素很多,如,CPU的处理速度、联机终端的数目、所用时间片的大小、系统调度开销和对换信息量的多少等。

  计算机操作系统中把并行性和并发性明显区分开,主要是从微观的角度来说的,具体是指进程的并行性(多处理机的情况下,多个进程同时运行)和并发性(单处理机的情况下,多个进程在同一时间间隔运行的)。

  地址重定位: 又称地址转换,地址映射。 可执行程序逻辑地址转换(绑定)为物理地址的过程。

  由装载程序实现装载代码模块的加载和地址转换,把它装入分配给进程的内存指定区域,但对链接程序处理过的应用程序的逻辑地址则不做任何修改,程序内存起始地址被置于硬件专用寄存器 —— 重定位寄存器。程序执行过程中,每当CPU引用内存地址(访问程序和数据)时,由硬件截取此逻辑地址,并在它被发送到内存之前加上重定位寄存器的值,以便实现地址转换。

  文件共享的分类: a. 静态共享。 两个或多个进程通过文件链接(一个文件同时属于多个目录,但实际上仅有一处物理存储)达到共享同一个文件的目的,无论进程是否运行,其文件的链接关系都是存在的,因此称为静态共享。 b. 动态共享。 系统不同的应用程序或同一用户的不同进程并发地访问同一文件,这种共享关系只有当进程存在时才可能出现,一旦进程消亡,其共享关系也就随之消失。 c. 符号链接共享

本文链接:http://k-mood.com/duruyuanyu/649.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部