OS390汇编入门第十章
Page 9 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
小节目标
• 定义迭代循环 • 理解迭代循环 • 掌握计数循环指令(BCT)
导言
© Copyright HUST 2008. All rights reserved.
Page 10 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
单元 : 循环 小节: 地址运算
小节目标
• 定义和描述地址运算 • 掌握取址指令 • 理解地址运算的局限性
导言
© Copyright HUST 2008. All rights reserved.
Page 24 of 50
OS/390汇编语言提高
单元 : 循环 小节: 地址运算
地址运算
在循环处理数组的过程中,循环每次重 复处理数组中不同的元素。在循环过程 中每次都必须改变当前元素的地址。 操作数据地址的过程叫做地址运算。 在地址运算中最重要的指令是取址指令 LA,该指令将第二个操作数的地址放在 第一个操作数中,不改变状态码。
迭代循环结构的使用 什么是循环? 循环是能够重复执行同一顺序的机 器指令的编码技术。 什么是迭代循环? 迭代循环是在编码时就知道要做多 少次循环 ,而不是在执行时才知道最 终状态的那种情形 .
数组 1月 2月 . . . . 12 月
下一个 入口
处理
结果
< 循环
比较 计数 =
存储结果
Continued…
LA指令: RX格式
LA 第一个操作数 R4 内容
R4,ARRAY 第二个操作数 ( 基址偏移) 数组 地址
用数组地址替换R4内容
LA
CC -状态码不改变
概念
© Copyright HUST 2008. All rights reserved.
Page 25 of 50
OS/390汇编语言提高
单元 : 循环 小节: 地址运算
单元 : 循环
单元介绍
在设计和编写汇编程序经常会遇到需要重复执行一段机器指令。这就是循 环。 本单元通过循环的应用实例来研究一般的循环技术 .
导言
© Copyright HUST 2008. All rights reserved.
Page 7 of 50
OS/390汇编语言提高
单元 : 循环
单元目标
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
计数循环指令 (续 )
如何使用BCT? 使用BCT涉及到下面的步骤: 1. 在循环体前,将循环需要执行的 次数装载进一个通用寄存器 (GPR)中。 2. 编写循环体,用BCT作为最后一 条指令,使用已初始化的寄存器 和循环的开始地址为其操作数。 右边的代码展示了如何用BCT指令
BNH MTHLOOP
没有处理完,则跳 转到MTHLOOP
概念
© Copyright HUST 2008. All rights reserved.
Page 12 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
小测验
对一个迭代循环 ,下面哪个描述了循环次数最开始知道的时间 ? A. B. C. D. 程序设计和编写时 程序汇编时 当程序链接时 当程序执行时
12 个月份循环计数
’ 12 ’ LH R3,=H R3,=H’ 12’ MTHLOOP EQU * *
按月13-处理数据 (值在 R3中)
* BCT R3,MTHLOOP
Continued…
概念
© Copyright HUST 2008. All rights reserved.
Page 16 of 50
BCTR R3, R1
概念
© Copyright HUST 2008. All rights reserved.
Page 17 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
计数循环指令 (续 )
BCTR指令 实际上当BCTR的第二个操作数是0时不 分支,因此,BCTR指令可以直接实现 对寄存器实现减一的操作。 使用下面的代码: SH R7,=H ’1’ 和使用 BCTR R7,0 这两段代码的区别是BCTR不会引起溢 出而且不设置条件码。
概念
© Copyright HUST 2008. All rights reserved.
Page 11 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
迭代循环结构的使用 (续) 如何创建一个迭代循环 迭代循环能够通过一个计数器和比 较指令后跟一个转移指令来创建 .
LH R3,=H ’1 ’ R3,=H’ MTHLOOP EQU * * 处理数据 * 月份 * 用月份设置R3 的值 AH R3,=H ’1 ’ R3,=H’ CH R3,=H ’12 ’ R3,=H’ 12’ 月份增量 所有月份是否都已处理 初始化 从1计数
• 理解运用基本指令来实现迭代循环结构 • 掌握基本的算术地址操作 • 掌握如何处理数组
导言
© Copyright HUST 2008. All rights reserved.
Page 8 of 50
OS/390汇编语言提高
单元
循环
� � �
迭代循环 地址运算 数组处理
© Copyright HUST 2008. All rights reserved.
导言
© Copyright HUST 2008. All rights reserved.
Page 2 of 50
OS/390汇编语言提高
导言 第一单元 循环 —— 阐明实现迭代循环结构的基本指令,基本的地址算术 操作和如何处理数组 第二单元 逻辑移位指令 —— 阐述布尔函数、转移指令和带有屏蔽字的位 测试指令 第三单元 模块化编程 —— 阐述了编写汇编语言模块的过程以及在完整程 序中插入退出模块 第四单元 编写完整的程序 —— 阐述怎样写出完整的程序,以及程序中模 块之间的相互关系 .
复习
© Copyright HUST 2008. All rights reserved.
Page 13 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
小测验
添加延长助记符完成下面的代码,对一个星期中每天的数据进行求和。 PROCDAY * . LH R5,=H’1’ EQU * 处理每天的数据的代码 AH R5,=H ’1’ CH R5,=H ’7’ ______ PROCDAY
导言
© Copyright HUST 2008. All rights reserved.
Page 3 of 50
OS/390汇编语言提高
课程目标
• 使用LA和BCT指令实现循环 • 处理数组和其他结构的数据 • 执行布尔和移位操作 • 将状态码和测试位联系起来 • 用TM指令来进行位测试
Continued…
BCT指令: RX格式
BCT
R6,LOOP
循环计数寄存器
分支地址 ( 主存)
R6 10 计数器 • 程序每循环一次,计数器减少1 • 计数器到达0时,执行下一条指令
CC -状态码不改变 Continued…
概念
© Copyright HUST 2008. All rights reserved.
Page 15 of 50
© Copyright HUST 2008. All rights reserved.
Page 22 of 50
OS/390汇编语言提高
单元
循环
� � �
迭代循环 地址运算 数组处理
© Copyright HUST 2008. All rights reserved.
Page 23 of 50
OS/390汇编语言提高
OS/390汇编语言提高
© Copyright HUST 2008. All rights reserved.
OS/390汇编语言提高
课程概述
本课程学习如何去提升汇编语言的基本技能,所以针对的是应用程序 员。同样也适合于对希望扩展自己编程技能知识的汇编程序员。本课程对 于曾经在非 MVS环境中使用汇编编程过,而且希望学习 MVS的输入输出 和调试工具的编程人员也是非常有帮助的。
Page 19 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
小测验
执行完下面的代码段后,R7最终的十进制值是多少? LH R7 ,=H’10’ BCTR R7 ,0 AR R7 ,R7 BCTR R7 ,0 ______________
复习
© Copyright HUST 2008. All rights reserved.
单元 : 循环 小节: 迭代循环
小测验
编写LH指令来初始化BCT使用的寄存器,下面的代码用来对一个星期中每天的数据 进行求和。请填写完代码。
___________________________ PROCDAY EQU * * 处理每天的数据 . ……. BCT R4,PROCDAY
复习
© Copyright HUST 2008. All rights reserved.
迭代循环
数组
计数器 条件分支
Continued…
术语表
© Copyright HUST 2008. All rights reserved.
Page 21 of 50
OS/390汇编语言提高
单元 : 循环 小节: 迭代循环
小节总结
• 定义迭代循环 • 理解迭代循环 • 掌握计数循环指令(BCT)
总结
Unit01-汇编语言概述
© Copyright HUST 2008. All rights reserved.
Page 5 of 58
OS/390 汇编语言入门
单元
汇编语言概述
语言级别 汇编语言程序组件 程序组件-宏指令
© Copyright HUST 2008. All rights reserved.
Page 6 of 58
汇编语言概述
语言级别 汇编语言程序组件 程序组件-宏指令
© Copyright HUST 2008. All rights reserved.
Page 9 of 58
OS/390 汇编语言入门
单元: 汇编语言概述 小节: 语言级别
小节目标
• 了解汇编语言程序的功能
• 指出机器语言区别于汇编语言的特征
导言
© Copyright HUST 2008. All rights reserved.
Page 2 of 58
OS/390 汇编语言入门
课程介绍
本课程为在汇编层次的编程提供了基础性的介绍,并介绍汇编编程的架构。通
过讲解存储器寻址,寄存器及指令格式的使用呈现IBM 390系统的架构。 第一单元,汇编语言概述,阐述了汇编语言及机器语言指令的使用格式,包 括两种语言之间的转换操作。 第二单元,内存使用,阐述了存储的方式和位置,十进制、二进制和十六进 制数的算术运算及数制之间的转换。 第三单元,S/390寻址及指令,阐述了汇编指令、机器指令及宏指令之间的区 别,以及各指令的使用。 第四单元,程序开发过程,描述了汇编语言语法及汇编语言在汇编语言程序 中如何转换为机器语言。 第五单元,定义数据单元,阐述了如何使用汇编指令定义存储单元和数据区, 以及如何使用定义的数据单元。
OS 390的系统初始化
OS 390的系统初始化一、概述S/390的初始化过程包括硬件系统初始化和软件系统初始化两个部分。
首先执行的是初始微码程序装载(IML:Initial Microprogram Load)过程,该过程将硬件支持微码装入处理器,并通过读入输入/输出配置数据集(IOCDS:Input/Output Configuration Data Set)中的信息对硬件设备进行初始化配置。
该过程完成后,系统操作员需在控制台上进行初始程序装载(IPL:initial Program load)操作,该操作将确定系统输入/输出配置的软件定义,并指定下一步初始化过程所需的LOADxx参数。
LOADxx参数指定了操作系统的主目录(Master Catabg),标记了操作系统初始化的核心,以及大量初始化过程所需的参数定义。
系统通过这些参数启动主调度程序(Master Scheduler),创建系统地址空间、子系统地址空间以及用户地址空间,进而完成初始化过程。
了解主机系统的初始化过程、初始化有关的参数以及初始化完成后存储系统的状态,对维护管理 S/39O、保持系统处于稳定、良好的运行状态具有重要的作用。
二、初始化过程2.1 硬件系统的初始化硬件系统的初始化主要是硬件系统的加电、初始微码程序载入的过程。
系统操作员首先为主机和硬件控制台(HMC:Hardware Management Console)加电,启动硬件控制台和主机内的控制支持部件SE(Support Element)上的OS/2操作系统,并载入支持控制台操作的微程序代码。
加电步骤结束后,操作员可登录到 HMC或SE控制系统,进行系统上电(Power On)操作。
该操作将启动主机外围设备的控制系统,如磁盘控制器,通讯控制器等,这些外设控制系统被设定为远程启动,可由主机控制上下电动作。
该操作结束后,操作员还应进行上电再设置(Power On Reset)和分区激活(Activate)操作,使系统及各逻辑分区处于硬件就绪状态。
Unit04-程序开发流程
Page 3 of 35
OS/390 汇编语言入门
单元: 程序的发展历程
单元目标
• 熟悉汇编语言的编程语法 • 能够列举出组成汇编语句的域 • 能够书写各种类型的汇编语句 • 理解汇编程序将汇编语言转化成机器语言的 过程 • 学会定义外部符号和重定位表
导言
© Copyright HUST 2008. All rights reserved.
Page 8 of 35
OS/390 汇编语言入门
单元: 程序的发展历程 小节: 汇编语言语法
小测验
配对 1.语句 2.语句区域 3.续行指示器 4.标识符/顺序区 A. 1 - 71 B. Positions C. 73 - 80 D. 72
复习
© Copyright HUST 2008. All rights reserved.
导言
© Copyright HUST 2008. All rights reserved.
Page 6 of 35
OS/390 汇编语言入门
单元: 程序的发展历程 小节: 汇编语言语法
汇编语法
什么是语句? 什么是语句 汇编程序是由语句组成的。语句是 由字符组成的。小写字母和大写字 母在汇编中是等价的,除非当被用 在引用字符串中. Characters:
NOTEQ MVC THERE,HERE CLI C’A’,TESTFLD SET THERE FIELD COMPARE TO”A” SAVE REGISTERS
STORERTN STM 2,12,SAVEAREA
Comment Field Typical Comments
概念
© Copyright HUST 2008. All rights reserved.
请计算机汇编言的老师详细讲解一下
请计算机汇编语言的老师详细讲解一下这是我自学王爽老师著的汇编语言一书所碰到的问题第三章寄放器(内存访问)CPU提供的栈机制图描述了8086CPU对PUSH指令的执行进程。
①图的段寄放器SS=1000H、寄放器SP=000EH,这个是假设仍是从地址1000FH------10000H 得来的?我首先说下SS和SP这两个寄放器, SS应该称作堆栈段寄放器, 这个寄放器和以前咱们讲的那个DS段寄放器是不同的, 这个SS专门用来做堆栈基址; SP称作堆栈指针寄放器, 他老是指向堆栈的顶部.这里就是假设的SS为1000H,SP为000EH(看书上的那个图你就应该知道SP是000EH 了)※从以往概念可以得出,栈顶段地址是1000H,偏移地址是000EH,是不是也可以用公式1000H·10H+000EH=1000EH呢?你这个公式得出的是堆栈指针SP指向的数据的单元地址※栈顶的段地址为:1000∶000E=1000EH,这个除法该如何除?AX=2266H,是不是也是假设?“栈顶的段地址为”这句话有问题, 因为栈的段地址百分之百是在SS里, 前面我刚强调过, SS是堆栈段寄放器,所以栈顶的段地址连看都不用看, 直接就是SS.AX=2266H是假设的没错.若是将10000H~1000FH这段空间看成栈,初始状态栈是空的,此时,SS=1000H,SP=?思考后看分析。
在分析中,栈最底部的字单元地址为1000:000E,通过学习得知,字型数据用两个单元寄存,那就是000EH与000FH,高位应是000FH,低位是000EH。
虽有后进先出的规则,那栈最底部的字单元也应是000FH,所以地址为1000:000F。
(前面的分析都对,但这句话错误)当栈为空的时候也就是说把栈中的最后一个字数据弹出去了,这个时候栈中什么都没有了, 还哪来的你说的最底部的字单元呢? 因为没有数据了咱们就只关心最后一个字弹出去的进程, 因为最后一个字单元的地址为: 1000:000E所以,弹出去后栈顶就变成了000E + 2=0010H, ,明白了吗? (注意:在栈里高地址是栈底, 栈顶是低地址,所以这里要加2)为何说,当栈中只有一个元素的时候,SS=1000H,SP=000EH,栈为空?不是有两个元素吗?000EH和000FH。
OS390汇编入门第六章
Concepts
© Copyright HUST 2008. All rights reserved.
Page 17 of 41
OS/390汇编语言进阶
单元 : MVS的基本 I/O 功能 小节 : 定义数据集
小测验
连线 1. DDNAME 2. LRECL 3. EODAD 4. MACRF A 处理数据集的宏的类型 B 数据集记录长度 C 数据集的外部文件名 D指明数据集结束时执行指令的地址
处理输入输出数据的主要步骤如下所示。 除了用汇编控制指令来完成I/O区域的定 义,I/O宏指令可以完成所有的这些工作。
1. 定义数据集 2. 定义I/O 区域 3. 打开数据集 4. 读入数据 5. 写出数据 6. 释放数据集
Concepts
© Copyright HUST 2008. All rights reserved.
Page 11 of 41
OS/390汇编语言进阶
单元 : MVS的基本 I/O 功能 小节 : 定义数据集
DCB 宏指令
处理I/O的汇编语言程序必须向汇编 程序提供需要处理的数据集的信息。 由DCB(Data Control Block )宏指 令定义的顺序数据集也需要提供相 关信息 。 为了处理数据集,DCB宏指令生成 一大块固定的区域。
Introduction
© Copyright HUST 2008. All rights reserved.
Page 2 of 41
OS/390汇编语言进阶
课程导言
OS/390汇编语言进阶课程提供了对标准汇编指令进行了介绍。本课程覆盖了包括 LOAD, STORE, 主存中移动数据,位操纵,二进制、十进制运算,以及数据转化,数据编辑等在内 的数据操作指令。 第一单元, MVS的基本 I/O功能。说明数据集定义的语法和特点,数据控制块( DCB )的作 用,以及 OPEN、CLOSE宏指令的使用。 第二单元,十进制运算。说明怎样使用十进制的运算, 对十进制数的转换与操作,以及编辑 十进制数据。 第三单元,数据操作指令。说明LOAD,STORE,MOVE等指令的语法。 第四单元,比较与分支指令。说明状态码的使用,算术及逻辑比较,分支指令的功能 与结构 化设计的框架。 第五单元,定点二进制数的运算。说明十进制与二进制之间的转化,以及定点二进制运算指 令的功能。
汇编学习笔记之寄存器
寄存器8086/8088 包括四个16为数据寄存器,两个16为指针寄存器,两个16位变址寄存器,一个16为指令指针,四个16位段寄存器,一个16位标志寄存器,这14个寄存器分为四组通用寄存器:AX BX CX DX 通用寄存器SP 堆栈指针BP 基址指针SI 源地址DI 目的地址SP BP SI DI 也为通用寄存器控制寄存器:IP 指令指针FLAG 标志寄存器段寄存器:CS 代码段寄存器DS 数据段寄存器SS 栈段寄存器ES 附加段寄存器1. 标志寄存器16位的标志寄存器FLAG包含九个标志,分为两组第一组:6个主要受加减运算和逻辑运算结果的影响,成为运算结果标志第二组:3个不受运算结果的影响,称为状态控制标志运算结果标志:1> 进位标志CF (Carry Flag)主要用于反映运算是否产生进位或借位,如果运算结果的最高位(字操作数为第15位,字节操作数为第7位)产生一个进位或借位,则CF被置为1,否则置为0,移位指令把操作数的最高位或最地位移入CF。
在进行多字节数的加减运算时,要使用到该标志。
在比较无符号整数的大小是,要使用到该标志。
2> 零标志ZF (Zero Flag)用于反映运算结果是否为0,如果结果为0 ,则置ZF为1,否则置为0.在判断运算结果是否为0时,用到该标志。
3> 符号标志SF(Sign Flag)用于反映运算结果的符号位,SF与运算结果的最高位相同,如果运算结果的最高位为1,则SF 置为1,否则被清0,在8086/8088中,有符号数采用补码的形式表示,所以SF反映运算结果的符号,如果运算结果为正,则SF为正(补码最高位为0),则被置0,运算结果为负,置为14> 溢出标志OF (OverFlow Flag)反映有符号数加减运算是否溢出,如果运算结果超出了8位或16位有福好的数的表示范围,即在字节运算时大于127或小于-128,在字的运算时大于65535或小于–65536,称为溢出溢出时OF =1;未溢出OF =0;5> 奇偶标志PF (Parity Flag)奇偶标志反映运算结果中1 的个数,如果1的个数为偶数,则PF =1 ,否则PF =0利用奇偶标志可以进行奇偶校验检查。
os390-ISPF操作及其相关知识3
课前说明:《OS390操作及其相关知识》(以下简称OS390)是大型机操作正式学习前的预备知识,就象一个真正的软件开发者在开发软件之前必须熟悉电脑上的基本操作一样,比如说熟悉WINXP操作系统环境等等,这节课的内容就是熟悉基本操作。
理论知识:TSO入门1 TSO命令(ISPF输入)通过P.6可以进入TSO COMMAND,输入TSO命令。
可以输入的常见命令是:ALLOCATE分配数据集;FREE;TIME输出当前时间;SEND 'hehe' user(zhpl037) now发送信息给用户;CALL调用程序;EXEC运行REXX,CLIST;TSO HELP **,获得命令帮助。
如TSO HELP OMVS;XMIT(TRANSMIT)压缩一个PDS到PS文件,并传送到其他用户。
RECEIVE可以接收。
OMVS进入MVS UNIX环境。
LISTDS命令显示数据集属性LISTCAT(LISTC)命令参看LSTDSALTLIB DISPLAY可以查看当前搜索的EXEC,PROC.支持一些网络命令,比如使用PING,NETSTAT。
一些产品软件也会扩展TSO COMMAND,如如DB2也增加了如:-xxxx START DB2;xxxx是subsytem名字;这个命令就是启动某个DB2 SUBSTEM.2 TSO命令(作业流输入)类似一般作业流使用PGM=IKJEFT01,只是在SYSTSIN中输入COMMNAD就可以,如TIME;对于SDSF中的命令,可以使用PGM=SDSF.Eg:eg01ISPF基本操作-建立一个新的DATA SET进入到TSO/ISPF里面,在命令输入行输入P.3.2,按下执行键,就直达了操纵数据集的窗口。
在‘Data Set Name’栏输入新Data Set的名称(需用左右单引号包括),在‘Option’栏输入命令‘a’,输入文件格式参数,CTRL即可.DATASET每个段只能是字符开始,不能是数字.参数解释如下(DMS下)1、Volume serial: 数据集所在的卷(就当是分到哪个卷)2、Generic unit: (一般不填)3、Space units: 空间分配的单位(是块、磁道、柱面、KB、MB还是BYTES)4、Primary quantity: 空间分配的初始数值(第一次分配几块、几磁道等)5、Secondary quantity: 空间分配的增长数值(空间不够时一次追加分配几块、几磁道等)6、Directory blocks: 允许几个目录块(0表示QSAM文件)7、Record format: 记录格式(定长F,FB、变长V,VB)8、Record length; 记录长度(对于定长格式是每个记录的长度. 对于变长记录,是最大长度。
微机原理指令系统的学习!10
• 数据传送(Data Transter)
• 算术运算(Arithmetic)
• 逻辑运算(Logic)
;此时传送的操作数在数据段中,其偏移地址是 SI寄存器中的内容加上0200H 变址寻址可以有多种格式:
MOV AX, [BX+0A00H]
MOV AX, TAB[DI] 如:MOV AX, 0200H+[BX]
假设DS:3000H, BX: 1000H 则操作数所在地址:
高8位: 31201H 低8位: 31200H
的偏移地址
其中,作为间接寻址的寄存器只能有4个:BX, SI, DI, BP,其他寄存器无此功能。
2020/12/22
13
注意:用BP间接寻址,操作数默认在堆栈段, 用其余3个寄存器时,操作数默认在数据段。
1、对DI、SI、BX间接寻址 物理地址:
(DS)×16+DI/SI/BX中给的16位偏移地址
2、对BP间接寻址
ห้องสมุดไป่ตู้
物理地址: (SS)×16+BP中给的16位偏移地址
2020/12/22
14
2020/12/22
15
例1:MOV AX, ES:[BX]
;传送的操作数在附加段中,偏移地址存放在BX 中。
例2:MOV [BP], BX ;将BX中的内容传送到堆栈段中,其目的地的偏 移地址存放在BP中。
2020/12/22
5
寻址方式:是指令中用于说明如何寻找 操作数的方法。
计算机中操作数常存放在以下几个地方:
指令代码中,存放常量;MOV AX, 2070H
寄存器中:MOV AX, BX
内存中: MOV AX, [2000H]
I/O端口中(仅对IN/OUT指令): IN AL, 40H
os10
创建
在主存 中就绪 换出
高优先睡 眠在主存 换出
低优先睡 眠在主存 换出
换入
就绪 且换出
wakeup
高优先睡 眠且换出 wakeup
低优先睡 眠且换出
27
(四) UNIX进程调度
一. UNIX进程调度算法
UNIX系统采用可强占式的进程优先数调度 算法。 一个进程优先权的高低取决于其优先数, 优先数越小,优先权越高。在进程调度时机来 到时,总是选取优先权最高的进程去运行。
28
二. UNIX进程优先数的确定
1. 设置 当进程需睡眠时,设置其优先数。由不同的睡眠 原因决定其大小。 等待紧迫的事件,该进程的优先数设置为负值 在什么情况下,进程进入高优先睡眠状态? 0#进程睡眠时,优先数= 100 因请求资源得不到满足的进程,优先数= 50 进程请求读写快速设备时,优先数= 50
UNIX系统进程的上下文具有三个不 同的层次—— 用户级上下文 寄存器上下文 系统级上下文
19
2. 用户级上下文
进程的代码、数据、共享内存、用户栈 该级上下文处于进程虚地址空间 在请求页式系统中,该级上下文内容不必 全部进入内存。
3. 系统级上下文
进程表表项—每个进程的proc结构 进程user结构 进程区表表项、页表 用于从虚地址到物理地址的转换 进程核心栈
p_pri = (p_cpu / 2) + p_nice + 基值
31
调整进程优先级的因素有—— p_pri 、p_cpu、 p_nice p_cpu 的改变使进程使用CPU的时间与它被 调用的机会成为负反馈过程。可用下式描述:
p_cpu p_pri 进程优先权
进程优先权 p_pri
OS第9-10讲PPT教学课件
进程完成
阻塞,挂起队列 事
件 出
挂起
现
阻塞队列
等待事件
四.系统调度的层次模型
2020/12/11
10
3.2 作业/进程调度算法
• 先来先服务(FCFS) • 短作业(进程)优先(SJF/SPF) • 时间片轮转算法(RR) • 优先级算法 • 多级队列算法 • 响应比高者优先算法(HRN)
2020/12/11
2020/12/11
3
二. 三级调度
1.作业调度
(1) 含义:按一定原则将外存后备队列中 的作业调入内存,调入后为作业建立进 程,分配必要的资源,并将其排在就绪 队列中。
• 作业调度也叫高级调度 (2)例:批处理OS调度(分时,实时OS不是)
2020/12/11
4
2.进程调度: (1) 含义:按照某种策略或方法从就绪
第3章 处理机调度
• 主要内容 ①调度的三级模型 ②作业调度与进程调度 ③作业(进程) 调度算法
2020/12/11
1
3.1 分级调度
一.作业含义和状态
1.作业:在一次处理任务中,用户所要求计 算机所作的有关该次业务处理的全部工作。
• 用户提交给计算机进行处理的一个任务。
2.作业基本状态
(1)提交状态:一个作业在其处于输入设备进 入外部存储设备的过程称为提交状态。
12
3.作业平均周转时间为(有n个作业,n>=1) n
T=1/n ∑ Ti i=1
4.作业带权周转时间:为作业周转时间与作业 执行时间比,即
Wi=Ti/Tr
5.平均带权周转时间为 n
W=1/n ∑ Wi (W越大延迟越大) i=1
2020/12/11
