操作系统原理ThePrincipleofOperatingSystem西安石油大学计算机学院操作系统原理课程组Xi’anShiYouUniversitySchoolofComputerScienceSeptember2015学习要点■作业概念及作业类型-------------------------熟悉■处理机的管态与算态-------------------------领会■访管指令、系统调用-------------------------理解■作业的控制与调度---------------------------掌握■作业调度算法-------------------------------应用学习重点■作业步之间的关系■处理机的状态、访管指令■系统调用■作业状态的转化及涉及程序■作业调度算法第二章用户与操作系统的接口熟悉基本概念,了解控制方式,掌握调度算法,熟悉常见指令。2.1作业级接口2.1.1作业、作业步、作业流■作业就是用户请求计算机系统给以计算或处理的一个相对独立地任务。是计算机所作工作的总和。所谓用户指要计算机为它工作的人。■作业步一个作业一般可分为几个必须顺序处理的工作单位或步骤,就是作业步。【举例】以在PC机上用MS-DOS控制时,其作业加工的步骤为例①编辑:A>EDLINMAIN.FOR②编译(语法):A>FOR1MAIN.FOR③编译(语义):A>PAS2④链接:A>LINK⑤执行:A>MAIN.EXE最后执行USER.EXE文件获得所要的结果。系统可以创建若干进程完成各作业步的计算,所以一个作业由若干作业步组成。2.1作业级接口一个作业的各作业步之间有一定的关联,表现在:■一个作业的各作业步是顺序执行的;■上一步的输出是下一步的输入;■一作业步能否正确执行,取决于上一作业步是否成功地完成。■作业流进入机器的若干个作业组成作业流。2.1.2作业的类型依作业处理方式,可把作业分成两大类:脱机作业和联机作业。脱机作业:是指用户不直接与计算机系统交互,中间通过操作员干预的作业。在这种方式下,用户要把程序、所需数据以及控制作业执行的操作说明交给计算中心的操作员。脱机作业通常在批量处理系统中使用,所以也称为批量型作业。联机作业:是指用户直接与计算机系统交互,并通过终端或控制台键盘上的操作命令控制其作业的运行,或直接用会话型语言(如BASIC语言)提供的语句编制程序,由系统对其解释执行的作业。所以,联机作业也称为交互型作业或终端作业。联机作业多出现于分时系统中。2.1.3作业控制方式1.内涵:所谓脱机控制方式就是把对作业进行控制的意图,连同程序和数据及发生故障后的处理措施一起输入系统中,由系统根据该意图来控制作业的执行。过程:在批处理系统中,用户利用作业控制语言JCL写成作业说明书提交给系统,由系统按照作业说明书上的命令,逐条解释执行。特点:用户一旦把作业提交给系统后,便失去直接与作业交互的能力。形式:①作业控制卡用户使用作业控制语言(JCL)将控制意图连同程序和数据,以及出错时的处理措施穿孔在若干张卡片上将用户对作业的控制意图及发生故障后如何处理以编码的形式穿孔在卡片上,由系统解释控制卡内容并控制作业运行。■作业控制卡■源语句卡■数据卡使用不方便,容易出错且较麻烦,所以现在一般很少使用。②作业说明书使用作业控制命令将作业控制的意图写成作业说明书,以编程形式输入机器,控制作业的运行。作业说明书主要包括作业情况和作业资源要求两方面的内容。作业情况:主要指用户名、作业名、使用语言、作业控制方式、作业优先级、完成作业的最迟时间等。资源要求:包括内存和外存的空间要求量、输入/输出设备的类型、台数、输出量、估计的计算时间等。2.联机作业控制内涵:所谓联机控制,就是采用人-机交互的方式控制作业的运行。作业在执行的过程中可以得到用户的干预,并根据系统的提示做出对作业的处理。联机用户接口是由一组操作系统命令组成,用于联机作业的控制。执行中可随时和系统交互。形式:①命令驱动方式COMMANDarg1,arg2,...,argnCR其中,COMMAND是命令名,arg1,arg2,...,argn是命令参数,命令参数的有无和多少由命令本身决定。一般命令类型有如下几种:●系统访问命令●编辑和文件管理命令●编译、汇编和连接命令●调试命令●维护管理命令●其它命令特点:必须给出正确的命令和参数。②窗口系统与菜单驱动方式运行Windows时,其操作都是在桌面上进行。该桌面是由多个任务所共享。每个任务都通过它的窗口显示其操作和运作情况。允许在桌面上同时出现多个窗口。通过窗口对应用程序进行操作。窗口就成为用户与操作系统、应用程序之间的接口。特点:不用记忆命令的繁琐格式和用法,可在窗口中鼠标点击完成操作。③将键盘操作命令按用户要求的执行顺序组成一个命令文件,执行此命令文件,就能自动控制作业的运行。MS-DOS操作系统中的批处理文件就属于命令文件方式。它实际上实现了联机状态下的批处理操作。【举例】c:\mdpiccc:\cdpiccc:\copya:*.*c:\dela:*.*c:\ren*.txt*.datc:\copyc:\*.exec:\main.exemdpicccdpicccopya:*.*dela:*.*ren*.txt*.datcopyc:\*.exemain.exeabc.bat通过执行abc.bat可使7条命令依次执行。c:\abc.bat2.2程序级接口2.2.11.处理机的运行现场:指处理机在执行程序过程中任意时刻状态信息的集合。一般包括:●后继指令的存储单元;●当前指令的执行结果;●中断屏蔽信息;●处理机的状态等。■微处理机的程序状态字(PSW):上述信息保存在下列寄存器:指令计数器程序状态字寄存器-------重要通用寄存器处理机当前状态处理机先前状态未用处理机优先级TNZVC151413121187543210状态:00管态11算态T:自陷位。引起自陷中断。N:结果为负Z:结果为负V:结果溢出C:结果进位2.2程序级接口■大型机的程序状态字(PSW):系统屏蔽钥EWMP中断码ILCCC程序屏蔽指令地址07811121516313233343536394063系统屏蔽:对特定通道的响应钥:内存区块设置密钥,访问时PSW中的钥和区块的密钥比较,决定是否允许。EWMP:处理机工作方式标志位。E:扩展方式W:机器校验M:等待P:状态中断码:最近一次接受的中断信息。ILC:上一指令的长度。CC:运算结果的特征。程序屏蔽:是否允许特定程序的中断。指令地址:下一条执行指令的地址。2.2程序级接口结论:PSW中存放了程序在执行中形成的和预置的系统状态信息,反映了处理机当前时刻的状态。在多道程序系统中,当处理机调度到某个程序时,只须将该程序的程序状态字送入程序状态字寄存器,处理机便控制该程序的执行。2.处理机的状态:程序一般分为两类:用户程序和系统程序。而且用户程序必需在系统程序的控制和管理下运行。为了使计算机有条不紊地工作,保证系统的安全,在运行过程中对这两类不同的程序应该予以区分,就形成处理机的状态。■管态:处于管态的处理机可执行全部指令(包括特权指令),使用所有资源,并且有改变处理机状态的能力,执行的程序为系统程序。也称为核心态、特权态、问题态。■算态:处于算态的处理机只可执行非特权指令,处理的程序为用户程序。也称为用户态、目态。使用过程中一定要防止窃权行为。2.2.2特权指令与访管指令特权指令:只允许管态下使用而不可在算态下使用的特殊机器指令。一般有:●PSW的传送指令●启动、测试和控制外设的指令●控制中断屏蔽的指令●存取特殊寄存器指令●清除内存,建立存储保护的指令访管指令:用户在算态下无法完成的工作,只能在管态下由特权指令完成,此时必须有一指令使处理机的状态由算态过渡到管态,引起访管中断。其主要功能为:●实现从算态到管态的改变;●在管态下由操作系统代替用户完成其请求;●处理完问题后必须由管态恢复为算态。访管指令不是特权指令2.2程序级接口2.2.3系统调用1.概念用户要使用系统资源,必须向OS提出服务请求,由OS代为完成。涉及到系统调用。系统调用:用户在程序中能用访管指令调用的,由OS提供的子功能的集合。每一个子功能就是一个系统调用命令。2.系统调用与过程调用的区别■运行在不同的系统状态。过程调用一般是用户到用户、系统到系统;运行在同一状态。系统调用是算态到管态。运行在不同状态。■通过软中断进入。过程调用一般直接由调用程序转入被调用程序;系统调用由于处于不同状态,通过软中断或访管指令进入OS,然后转入被调程序。2.2程序级接口2.2.4系统调用类型1.(1)fork()创建一个与当前进程完全相同的拷贝。(2)exit(intstatus)终止正在执行的进程,关闭所有被打开的文件描述符,并向其父进程返回状态。(3)waitpid(pid,,&statloc,opts)等待一个子进程结束。(4)execv(filename,argv,envp)替换一个进程的核心映像。(5)getpid()返回调用进程的标识符。(6)wait()等待子进程。waitpid()等待指定进程,wait3()和wait4()等价于wait()与waitpid()(7)select()提供多任务处理的简便方式。2.进程通讯(1)signal()(2)kill(intpid,intsig)把sig信号送到pid(3)pause()使调用进程挂起暂停执行,直到接收到某种信号为止。2.2程序级接口3.文件管理(1)open(constchar*pathname,intflage,open(constchar*pathname,intflage,mode-tmode)打开文件。(2)close(intfd)关闭相应的文件描述符。(3)read(intfd,void*buf,size-tcount)用来从相应于文件描述符的文件中读出数据。(4)write(intfd,void*buf,size-tcount)用来向特定描述符的文件中写入数据。(5)ioctl(intfd,intrequest,...)设置或检索文件的有关参数,并对文件进行一些其它的操作,涉及的设备不同,其参数也不同。(6)fcntl(intfd,intcmd),fcntl(intfd,intcmd,longarg)与ioctl()相似,不同的是fcntl(7)fsync(intfd)把要写入文件描述符fd中的所有数据刷新到此盘或其他相关设备。(8)ftruncate(intfd,size-tlength)将由文件描述符fd引用的文件按length指定的长度截断。(9)lseek(intfildes,off-toffset,intwhence)设置与文件描述符fildes相关的文件的当前读写位置到指定的位置offset。2.2程序级接口(10)dup(intoldfd)返回一个未用的最小的文件描述符。dup2(intoldfd,intnewfd)返回指定的文件描述符,常用来重新打开或重定向一个文件描述符。(11)select(intn,fd-set*readfds,fd-set*writefds)允许一个进程同时在多个文件描述符上具有一个可选的传输等待时间。只要在指定的文件描述符中有一个文件可以进行操作,该调用就返回。(12)fstat(intfiledes,stcuctstat*buf)获取与文件描述符相关的文件信息,返回的信息放在由参数buf所指向的stat(13)fchown(intfd,uid-towner,gid-tgroup)修改一个打开文件的属主和组。(14)fchmod(intfildes,mode-tmode)修改与参数fildes相关的文件模式(权限位)。(15)fchdir(intfd)把目录修改为与打开的文件描述符fd(16)flock(intfd,intoperation)对文件描述符引用fd(17)pipe(intfiledes[2])创