用户如何把自己的请求告诉计算机
计算机接到用户请求后如何处理,如何为用户服务 3.1 概述
3.1.1 程序的启动和结束
例子:程序的执行(启动和结束)
硬件知识:
程序开始执行的两个前提条件
程序已装入内存
程序计数器PC:该程序在内存的入口地址
五种启动程序执行的方式
第一种方式:命令方式
命令提示符下打入程序名和参数,回车
c>,$,%
命令解释程序(命令解释器,作业管理程序,作业控制程序,SHELL) command.com (根目录下)
SHELL (BSH,CSH,KSH…)
在Windows中,命令方式是以窗口菜单显示和鼠标操作来体现的。
第二种方式:批处理方式 .BAT 文件
例子:启动中文环境需要多条命令:
装入字库 启动主程序 装入汉字输入法
AUTOEXEC.BAT
将若干条命令放在一个文件中,在提示符后打入该文件的名字,由计算机自动连续执行该文件的这组命令。
第三种方式: EXEC方式
在一个程序中运行另一个程序,再返回原来的程序。
第四种方式:
由硬件装入程序和启动程序执行
早期计算机:用户把装有可执行目标程序的纸带(或卡片)安装到纸带(或卡片)输入机上;按机器面板上的一个特定按钮(“装入程序并启动执行”);硬件将纸带上的内容顺序读入内存,直至纸带上的一个特殊的程序结束标记为止;然后硬件开始从内存零地址处执行程序。
第五种方式:自启程序
• 自己装入自己,并启动自己开始执行的程序 • 自启程序由两部分组成 • 引导程序和程序主体
引导程序
在外设设备的起始位臵上顺序存放,开机时由硬件自动装入并启动,或ROM中放一个引导程序,则不必装入而可以直按启动。即开机时硬件自动从ROM中该引导程序的起始地址开始执行它。
由引导程序装入启动程序主体
程序的结束
– 正常结束:程序按自身的逻辑有效地完成预定功能后结束。
– 异常结束:发生了某些错误而导致程序在没有完成预定功能时提前结束
正常结束的结束处理工作
– 返回父程序并返回结果信息
– 释放所用资源(空间、 设备、 记录使用、情况、记帐等)
非正常结束的结束处理工作
– 应包括正常结束时所做的处理工作 – 找出错误原因并报告给用户
3.1.2 用户与操作系统的接口
1. 程序级接口:
用户在程序中通过一系列的系统调用向操作系统提出服务请求。 2. 作业级接口:
操作系统为用户对作业运行全过程的控制提供的功能。 (1) 联机接口(交互式):
由一组命令向操作系统提出请求。用户在终端上输入命令,系统立即解释并执行该命令,完成用户的要求,然后返回终端或控制台;用户可输入下一条命令,如此反复直到作业完成。 (2) 脱机接口:
在批处理系统中,用户通过作业控制语言(JCL)向系统提出对作业控制要求。OS向用户提供一组作业控制语言,用户用这种语言书写作业说明书,然后将程序、数据和作业说明书一齐交给系统操作员。脱机用户不能直接干预系统。
脱机用户接口与批处理接口是相同含义,它一次性提供一批作业,其间用户不必干预,机器按作业说明书处理。
3.1.3 作业的基本概念
1.作业:
用户在一次计算过程中,或者一次事务处理过程中,要求计算机系统所做工作的总称。 作业:程序,数据,作业说明书 2. 作业步:
一般情况下,一个作业可划分成若干个部分,每个部分称为一个作业步。在作业运行期间,各作业步之间存在着相互联系,往往上一个作业步的结果作为下一个作业步的输入。 3. 作业流:
一次有一批作业进入系统,并在操作系统控制下,一个接一个地进行处理。 3.1.4 作业管理的任务 1.作业进入 2.作业调度 3.作业控制 4.作业退出
3.2 批处理系统的作业管理 (常用SPOOLing技术)
说明:
系统把作业处理的全过程划分为相对的部分,一部分为输入流,一部分为处理流,一部分为输出流。
作业输入:
作业从输入介质上进入系统,并加以组织, 在磁盘上形成一个后备作业的过程
作业处理:
A 作业调度:挑选一部分作业投入运 行
B 作业控制:完成具体进程的执行,解释执行作业说明书,结果送输出井
作业输出:
将输出井上的运行结果送外设(输出设备)
3.2.1 作业进入
作业从输入设备进入系统,并加以组织,形成一个后备作业的过程。
1.作业的组成:
作业=程序+数据+作业说明书 作业说明书:
一个于程序的文件,刻画了用户对作业的基本描述,以及用户对作业处理的控制要求,它是用作业控制语言书写的。 2. 作业控制语言: 是一种高级语言
3. 输入井:
在磁盘上开辟的一块空间,用于存放后备作业,包括程序,数据,作业说明书,作业控制块。
4.作业控制块(Job Control Block-JCB):
作业存在的唯一标志,是系统为管理作业所设臵的一个数据结构,存放了管理和
控制作业所必需的信息。
作业说明书内容有两部分:作业情况的描述,如用户名,作业名,用户帐号,使用语言,作业步骤,控制方式,优先级,专用文件,时间,有关注释等等。 另一部分是作业需要的资源,如参数设臵,系统配臵,空间需求,输入输出设备
要求,数量,估计运行时间等。
JCB主要内容:
作业的描述信息:
如作业名,用户名,用户帐号,调度信息(作业优先级别),资源需求,作业进入系统时间,作业估计运行时间,作业开始处理时间,作业完成时间,作业状态等。
作业的存储信息:输入井地址,输出井地址 作业说明书信息
5. 预输入过程
第一步: 作业说明书经外部设备进入内存,操作系统对它进行分析,从其中抽取有关内容,填写后备作业JCB,然后把作业说明书以文件的形式存入输入井,并将文件名填入JCB。 第二步: 把作业体(程序和数据)调入输入井,填写JCB有关内容。 第三步:把JCB存入输入井,插入到后备作业队列。
(以上三个步骤由预输入进程完成。) 6. 预输入进程:
预输入进程完成作业的输入、组织和建立工作。是系统进程,一经创建就等待输入设备上的
信号,由系统操作员发信号,唤醒该进程投入运行。
预输入进程是一个系统进程,其工作方式为等待人工启动。
3.2.2 作业调度
1.作业调度:
根据一定的原则,从输入井的后备作业队列中选择适当的作业,为它分配内存等资源,并将
其调入内存投入运行。 又称高级调度,远程调度
2. 调度原则:
公平,合理,使用户满意
提高系统资源利用率,如提高系统吞吐量
3.作业调度算法
(1)先来先服务(FCFS):
按照作业进入系统的先后次序进行调度,先进入系统者先调度。
优点:实现简单,公平
缺点:没考虑资源利用率和作业的特殊性
(2)短作业优先(SJF):
选择运行时间最短的作业投入运行。
优点:易于实现,强调了资源的充分利用,保证了系统的最大吞吐量(单位时间里处理作业的个数)。
缺点:不公平,会造成长作业长期等待。 结论:
假设系统中所有作业同时到达,可以证明采用SJF能得到最短的作业平均周转时间。
(3)最高响应比优先(HRF):
优先选择响应比最高的作业投入运行。 响应比:作业周转时间/作业估计运行时间
作业周转时间=作业进入系统等待时间+作业估计运行时间
该算法是FCFS和SJF的结合,克服了两种算法的缺点
优点: 公平,吞吐率大
缺点: 增加了计算,增加了开销
(4) 基于优先数的作业调度算法:
选择优先级高的作业投入运行
(5) 资源搭配算法
(均衡型作业调度算法)
把作业分类,作业调度从不同类型作业中去调度作业 根据作业对资源要求分类:
I/O 型 CPU 型 均衡型
4. 性能衡量指标
(1)作业平均周转时间T
(Ti为每个作业的周转时间;tc作业完成时刻;ts作业进入系统时刻)
(2)平均带权周转时间W
(Ti为每个作业的周转时间;tr为作业实际运行时间) T是衡量不同调度算法对同一个作业流的性能 W是同一调度算法对不同作业流的性能衡量
例:单道环境下四个作业,它们进入系统的时间如下:
(1)给出FCFS , SJF下的作业执行次序
(2)给出FCFS , SJF下的作业平均周转时间和带权平均周转时间
FCFS : T= ( 120+120+120+90 ) / 4 =112.5
SJF: T=(120+150+70+40)/4=95
FCFS: W=(120/120 + 120/50 +120/10 +90/20)/4=4.975
SJF: W=(120/120 + 150/50 + 70/10 +40/20) /4=3.25 例:
两道环境下,四个作业,它们进入系统的时间如下:
系统采用短作业优先作业调度算法,作业被调度运行后不再退出,但当一新作业投入运行后,可按照作业运行时间长短调整作业执行的次序,请给出上述四个作业的执行时间序列,及计算出平均周转时间及带权平均周转时间。
5.作业调度进程:
• 按一定的作业调度算法从后备作业队列中取一个JCB,对该JCB进行修改,形成一个运行JCB,然后为该作业分配资源。并将该作业的运行JCB交给作业控制进程。 (是一个系统进程,和预输入进程构成了生产者——消费者关系)
5.2.3 作业控制(负责控制作业运行)
• 作业控制进程:主要负责控制作业的运行,具体解释执行作业说明书的每一个作业步,并创建子进程来完成相应步骤
(是一个系统进程,和作业调度进程构成生产者——消费者关系) 5.2.4 作业退出
• 把输出结果送到输出设备上(启动缓输出进程完成)。 • 回收各种资源。
缓输出进程(脱机): 从输出井上将结果输出。
是一个系统进程。创建后等待被唤醒,一旦作业完成,则唤醒该进程。
3.2.5 作业状态及转换
作业状态;进入状态;后备状态;运行状态;退出状态。
3.2.6 SPOOLing 系统工作原理
(Simultaneously Peripheral Operation On Line ) 系统把作业处理全过程分为相对的部分,一部分为输入,由预输入进程完成;另一部分为输出,由缓输出进程完成;另一部分由作业调度和作业控制来完成,处理部分若从输入部分输入的话,改为从输入井输入数据;如果向外设输出,改为向输出井某一部分去输出。
3.3 交互式系统的作业管理 3.3.1 概述
命令接口的基本任务
1.解释操作系统命令语言中的命令,将命令传送到系统以便执行
2.接受系统来的信息,以响应语言的形式提呈给用户
联机用户与交互式命令接口
使用者用输入装臵,以各种操作方法何计算机发出命令,请求各种操作。系统收到命令请求之后,将控制转向解释命令系统,对该命令进行解释执行,完成指定功能。然后,系统等待新的命令输入。
交互式命令的接口通常要复杂,含功能结构,可能问题的处理办法,如各种约定,前端处理,求助功能,命令日志,命令注解,宏命令及命令组等。
交互式控制灵活方便,可以随时进行各种处理,排除问题,方便调试,但系统利用率差。
联机命令接口:
一组联机命令,终端处理程序,命令解释程序
3.3.2 命令接口的操作方式与结构
直接命令处理
• 直接命令用命令处理程序来实现。
• 对命令进行判别、分类、翻译、解释、并按照命令参数的要求与功能,调用系统过程去实现。 不同的实现方式:
• 作为操作系统的一个组成部分。
• 作为操作系统的一个一个程序模块。
• 作为操作系统下的一个可臵换的一个普通程序。
终端命令处理
在多用户环境下的终端型处理界面,可采用间接性终端处理程序结构。用户不直接面对主机系统,而是通过某种输入输出设备与主机进行通信。用户通过键盘,鼠标等装臵,通过视频终端把信息输入系统,在终端屏幕上输出文本和图像。这里处理话动中,除了命令处理程序外,系统还要有一个终端处理程序对终端进行控制和管理。
终端处理程序:
接收用户从终端上打入的字符 字符缓冲,暂存所接收的字符 回送显示 屏幕编辑
特殊字符处理
直接影响命令接口的问题
(1)回送():用户输入一个字符时,要回送到终端上。某种情况下又不需回送。在远程情形下,回送由终端处理程序处理,不用远程通信。
(2)缓冲():有时输入字符先于程序处理,可以用缓存暂存等方法。
(3)字符转换():如大小写,不同编码方式的转换。 (4)行缓冲() (5)中止字符() (6)命令预告() 3.3.3 命令语言
目的:规定由操作系统执行的一系列操作。
命令结构:
(命令前缀)命令名(命令参数)(命令选项)
• 命令前缀:命令的特殊性
• 命令参数:命令在执行前所需的资源、文件和数据。
• 命令选择:指明命令的目标、路径、方向、范围等。
典型命令实例: (1)UNIX系统: who ls -l
(2)DOS系统 dir c:\\
(3)VAX/VMS run mypro
3.3.4 命令的种类与功能 基本命令
• 最不可少的命令
• 显示文件目录、路径和内容 • 复制、更名或删除
• 建立、编辑程序、文本和数据 • 不同的语言编译和连接程序 • 显示系统或用户环境的信息
批处理命令
针对脱机用户操作和大量顺序操作功能而设计。
批处理命令可以是专门的命令,也可是系统的基本命令;还有有关的语法结构,循环、分支、转移、判别等,枸成一套特殊的命令语言。
宏命令
一类组合命令,某些方面类似于批处理命令,但有严格格式。宏命令其中可包含若干命令,类似于宏语句。 MACRO mycmd [命令集…] MACRO END
命令的附加功能
命令的附加功能用以扩大命令的功能性、选择性、适应性。包括: (1)参数与变量 位臵变量 关键字变量
(2)命令通配符 (3)重定向
(4)管道与过滤器 3.3.5 命令文件
许多命令接口允许用户提前写出命令并存入文件,且称为命令文件。
命令文件提供了一种把一系列命令组装成文件的方法,然后用文件名作为命令名执行另外一系列命令。
• 好的高效命令可以在如下特点:
• 如同标准命令一样接受参数和变量,并可如宏变量一样在文本中进行替换。
• 允许在命令文件中以嵌套形式调用其它命令文件。
• 允许参数来自终端战命令文件本身。
• 允许命令执行显示到终端、存入文件或送入打印机。 • 允许命令加入注释。
• 出错时允许用户干预,并在适当位臵恢复命令文件的执行。
命令文件可把输入传给程序。
命令文件可有循环、分支、转移等程序语言的特征。 3.3.6 命令设计
• 命令设计是操作系统各模块设计中重要的,也是困难的一环。
• 命令解释和处理程序也是操作系统中重要的程序模块。
3.3.7 实现 1.用户进程
对终端进行控制,即登录管理。
OS提供监控程序(monitor),不断检查系统终端,一旦发现某个终端打开,在终端上显示必要信息,要求用户注册(给出用户名、口令),看其是否合法,合法则为终端生成用户进程,然后,用户进程作业不断接收命令为用户服务。 2.用户管理
为每个用户建立一个帐号,并记录这个用户的主要信息,如用户名,口令,这些信息存放在系统文件内。当用户登录时,系统将用户打入信息与该文件进行比
较,若匹则为合法用户,并为其创建用户进程,其标志:提示符。
3.子进程: (UNIX)中用FORK系统调用创建一个子进程 4.后台命令 5.保护机制 3.4 系统调用
系统调用与命令
使用方式不同,形式相同。
系统调用是嵌入到程序中使用,命令是交互式使用。
3.4 系统调用
汇编程序例子:打印5个字符 方法1:调用DOS功能 MOVE A,PARA1 MOVE B,PARA2 INT 21H 3.4 系统调用
方法2:用OUT语句直接打印 L1:MOVE A,I IN ADDR1,B OR B,BS JNC L1
OUT ADDR2,A RET
I/O设备的硬件接口,一般由四种寄存器(地址,数据,状态,
控制)或其子集组成,任一程序中若要使用I/O设备来输出数据或接受输入,必须通过对这四种寄存器读写的I/O机器指令进行。
而使用INT的程序段则简单许多。程序员不再需要与接口寄存器打交道,只需一个简单的调用即可。
3.4 系统调用
汇编程序例子2:读写硬盘文件内容 MOVE DX,OFFSETBUFF MOVE CX,BYTE MOVE BX,HANDLE MOVE AH,3FH INT 21H
磁盘读写的例子:更复杂。
原因是
A、磁盘的控制和状态接口寄存器比打印机的复杂的多,而且还有地址接口寄存器,涉及像磁道号,磁面号,扇区号这样复杂的外存物理地址;
B、通常一个外存存储介质上可以存放多个文件,随着文件的建立、删除和拷贝在不停地变化,每个文件的长度随着其内容的变化而不停地变化,
3.4 系统调用
高级语言例子:打印5个字符 char buff[4]=“abcde”;
for(i=4;i>=0;i--) print(buff[i]);
3.4 系统调用
高级语言例子:
读硬盘文件f1的第10到20个字节 seek(fd,10,0); read(fd,buff,11);
凡是与硬件相关、与应用无关的工作,都通过操作系统程序来完成。
用户程序中对操作系统的调用称为系统调用(system call)
每个操作系统都提供几百种系统调用,包括:外存文件与目录的读写,各种I/O设备的使用,在程序中启动另一个程序,查询和统计系统资源使用情况等等。
实际上系统调用语句本身是硬件提供的(机器指令),但其所调用的功能是操作系统提供的。每种机器的机器指令集中都有一条系统调用指令(又称访管指令)
INT指令的执行过程:
将PC与PSW入栈根据该指令的参数将内存中断向量表的相
应位臵的内容读入执行操作系统内部代码
IRET指令的执行过程: 以栈顶内容臵PSW和PC
系统调用方式(INT)与程序中一般的调用方式的相同点和不同点:
改变指令流程 重复执行和公用
改变指令流程后需要返回原处
同一程序中不包含被调用代码
转向的地址是活的:地址不写在程序中,不同的调用地址不同 返回地址是活的:不同的调用返回的地址不同 是安全接口:可随意进入被调用方
系统调用是动态调用,程序中不包含被调用代码,好处: (1)用户程序长度缩短
(2)当OS升级时,调用方不必改变
系统调用方式的调用地址和返回地址都是不固定的,系统调用指令中不包含调用地址,只包含功能号,是按功能号(在可执行目标程序中)调用的。在操作系统内部,由系统调用处理程序通过系统调用分支表(OS的一个数据结构)将功能号转换为相应的指令地址。
系统调用返回指令中不包括返回地址,通过栈保存和弹出返回
地址。
系统调用返回地址不固定,因为用户程序在不同的地方调用OS。
安全接口:
INT指令和IRET指令的执行过程中,要处理程序状态字PSW,INT指令中要保存用户程序的老PSW,并根据中断向量表设臵新PSW;IRET指令中要在返回用户程序前恢复用户程序的老PSW。
其目的:目态、管态的管理。
系统态与用户态的转换,是由系统在INT指令与IRET指令内部自动完成的,而没有用一条单独的专门指令。这样可以有效地防止在系统态下执行用户程序。
CALL调用方式是静态调用,被调用代码与调用代码在同一程序之内。
有两种可能性:被调用代码是专门为该软件编制,即基于模块划分或仅限于本软件范围内的公用或重复使用(没有问题)。被调用代码来自公用软件(函数库),
CALL调用方式,其调用地址是固定的,包含在调用语句中;返回地址是不固定的(同一子程序可能被不同处多次调用),在程序执行过程中通过栈的实现来保存和弹出返回地址。
CALL指令的内部实现过程:
返回地址压栈(即该CALL指令所在的地址)将该CALL指令中所含的地址(即被调用代码所在地址)送入PC
RET指令的内部实现过程:
从栈顶弹出返回地址送入程序计数器PC 其它如jump,jnc,LOOP指令也如此。
操作系统的安装与启动 操作系统怎样开始运行
怎样形成一种系统操作环境
怎样从程序的顺序执行转换到支持程序的并发执行
操作系统的引导和装入
两种方式:引导(bootup) 辅助下装(download)
引导方式:大多数系统采用,操作系统的核心文件存储在系统本身的存储设备中,由系统自己将操作系统核心程序读入内存并运行,最后建立一个操作环境。
步骤:
系统加电,执行系统初启程序。
该程序一般已固化在芯片中,或成为计算机硬件的一个部分,每次开机和重启都从这个程序开始执行。
执行初启程序,对系统硬件和配臵进行自检,保证系统没有硬件错误。
(3)从硬盘中读入操作系统初启文件,并将控制权交给该程序模块。
(4)执行操作系统初启程序,完成系统环境配臵和操作系统初始化工作。
(5)继续读入其余的操作系统文件,逐个执行相应的系统程序,完成操作系统各种功能模块的装入,完善操作系统的操作环
境,做好程序并发执行的准备。
(6)等待用户请求和用户作业的输入,经过操作系统调度后并发执行。
辅助下装方式:操作系统的主要文件并不放在系统本身的存储设备中,而是在系统启动后,执行下装操作,从另外的计算机系统或者主机系统中将操作系统常驻部分传送到该计算机中,使它形成一个操作环境。
其优点是:可以节省较大的存储空间,下装的操作系统也并非是全部程序代码,只是常驻部分或者专用部分,当这部分操作系统出现问题和故障时,可以再请求下装。
系统配臵与初始化
操作系统的引导是一个从程序的顺序执行到并发执行的过程,只有在操作系统初始化完成后,才能建立这样一个环境。
步骤:
关掉系统中断,以保证系统的顺利引导。
对当前的系统运行环境进行检查,对系统的配臵进行认定,并保存检测的结果,作为系统的初始配臵条件。 进行操作系统的初始化。
初始化工作:根据操作系统设计时定义的全局参数,在内存中建立操作系统工作时所必需的数据结构和各种记录表格,并且根据当前系统的环境配臵情况,填写相应的表格和结构,设定它们的初始条件、参数和状态。
(在初始化过程中,最重要的是建立有关进程的所有数据结
构,如建立PCB表,建立相应的进程队列,并且按照系统设计时的全局参数,
其次,操作系统根据检查得到的数据获得自由存储空间的容量,并依此作为存储分配的基数之一。同时建立存储管理的若干数据结构,如自由空间队列、分配空间队列等,获得待分配的自由空间的地址。
然后,分别建立系统设备和文件系统的控制结构和相应表格,并填写好设备的初始条件、状态和类型,建立好访问文件系统的各种索引表格。
接着,对PCB表和几个进程队列进行初始化。此时,可以建立一个空进程(NULL),或者把执行的这个程序本身作为第一个进程。
如果系统有实时时钟控制,还需对时钟控制逻辑进行初始化。)
操作系统初始化完成后,系统给出系统版本提示和系统信息,开放系统中断。此时,若无其它进程,系统执行空进程,进入循环等待。
如果在此时,用户敲击键盘,将会产生键盘中断,从而引起对命令的解释,生成新的进程,引起进程调度。用户通过命令或者程序与操作系统交互,完成用户作业。如果是分时系统或者采用时间片调度,在等待过程中,每当时间片到,系统产生中断,也引起新的进程调度。
需要注意的问题:
A.系统初启引导过程不属于操作系统,有初启过程转入操作系
统初始化程序才进入了操作系统模块。
B.初启引导程序没有通过,不再进入系统初始化,系统出错提示用户重启或停机。
C,初始化程序开始要建立大量的数据结构,所有系统全局变量都在此过程中建立并定位。
D,对数据结构的初始化和赋初值是根据系统设计的目标和规范拟定而进行的,尤其是对PCB表的初始化,这些初始值的设臵才构成并发运行的基础。
E,在操作系统初始化过程中不允许发生中断,因此必须关闭中断,初始化完成再打开中断,从而进入并发环境。
F,初启引导过程和初始化过程中的程序都是顺序执行的,但一旦初始化完成并开放中断,当下一个时间片到来或者中断发生就进入了程序的并发执行。这才是顺序到并发的分界点。
G,若处于并发环境,没有多个进程或多道程序等待,此时运行空进程代码,或者进入一个无限循环,或者运行待机程序,或者运行安全检测程序等,直到有并发程序进入,引起调度切换。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务