【操作系统】进程的异步性

异步性是指进程以不可预知的速度向前推进。内存中的每个进程何时执行,何时暂停,以怎样的速度向前推进,每道程序总共需要多少时间才能完成等,都是不可预知的。
是程序并发执行时,程序之间的相互制约关系导致了并发程序这种“执行——暂停——执行”这种间断性的活动规律。

比如,当正在执行的进程提出某种资源请求时,如打印请求,而此时打印机正在为其他某进程打印,由于打印机属于临界资源,因此正在执行的进程必须等待,且放弃处理机,直到打印机空闲,并再次把处理机分配给该进程时,该进程方能继续执行。可见,由于资源等因素的限制,进程的执行通常都不是“一气呵成”,而是以“停停走走”的方式运行。

异步性就是描述进程这种以不可预知的速度走走停停、何时开始何时暂停何时结束不可预知的性质。

也就是说,如果传统意义上的程序没有在操作系统中为之配备进程控制块(PCB),没有用它来描述进程基本情况和活动过程,进而控制和管理进程,这样就会使程序在并发执行的时候失去其封闭性,也失去了可再现性。
但是,如果操作系统采用了进程同步机制,虽然程序具有异步性(走走停停、以不可预知的速度前进),但仍能保证进程并发执行的结果是可再现的。

所以,只要在操作系统中配置有完善的进程同步机制,且运行环境相同,作业经多次运行都会获得完全相同的结果。因此,异步运行方式是允许的。

【离散数学】偏序关系与全序关系的区别、解释(偏序集合、全序集合)

偏序关系全序关系都是公理集合论中的一种二元关系。
偏序集合:配备了偏序关系的集合。
全序集合:配备了全序关系的集合。

偏序:集合内只有部分元素之间在这个关系下是可以比较的。
比如比如复数集中并不是所有的数都可以比较大小,那么“大小”就是复数集的一个偏序关系。

全序:集合内任何一对元素在在这个关系下都是相互可比较的。
比如有限长度的序列按字典序是全序的。最常见的是单词在字典中是全序的。

偏序的定义
设R是集合A上的一个二元关系,若R满足:
Ⅰ 自反性:对任意x∈A,有xRx;
Ⅱ 反对称性(即反对称关系):对任意x,y∈A,若xRy,且yRx,则x=y;
Ⅲ 传递性:对任意x, y,z∈A,若xRy,且yRz,则xRz。
则称R为A上的偏序关系。

全序的定义
设集合X上有一全序关系,如果我们把这种关系用 ≤ 表述,则下列陈述对于 X 中的所有 a, b 和 c 成立:
如果 a ≤ b 且 b ≤ a 则 a = b (反对称性)
如果 a ≤ b 且 b ≤ c 则 a ≤ c (传递性)
a ≤ b 或 b ≤ a (完全性)

注意:完全性本身也包括了自反性。
所以,全序关系必是偏序关系。

【离散数学】单射、满射和双射的定义、区别

满射:对任意b,存在a满足f(a) = b。
Snip20160613_129
即:值域y是满的。每个y都有x对应。不存在某个y没有x对应的情况。

单射:(one-to-one function) 一对一函数。x不同则y不同。
Snip20160613_128
即:没有一个x对应两个y,也没有一个y有对应两个x。

双射:既是满射,也是单射。
Snip20160613_130
即:每个y都有x对应。而且都是一一对应。

【汇编】addr dw number number dw Y的意思:在ADDR单元中存放着数Y的地址

根据数据定义伪操作的格式:

其中变量(Variable)字段是可有可无的,它用符号地址表示,其作用与指令语句前的标号相同,但它后面不跟冒号。
如果语句中有变量,则汇编程序使其记以第一个字节的偏移地址。(例子中,A就是1存放处的地址)

所以说number 是 Y 的偏移地址
把number的值定义为word类型(dw),再把它存放入addr单元中,实现在ADDR单元中存放着数Y的地址。。

所以这两句的意思是:
addr单元处定义一个字节的值为number的变量
number处定义一个字节的值为Y的变量。。则number为Y的地址值

解释汇编中的AUGW LABEL WORD、ADDW LABEL WORD

LABEL定义ADDW(AUGW)WORD变量,但他自身没存储空间,而是和下面的ADDEND占一个空间,ADDW(AUGW)ADDEND(AUGEND)在存储器上占相同空间.一个为WORD变量类型,一个为DD变量类型。
这里,在ADDEND前申明了一个名为ADDW的标号并赋予其字(word)属性。ADDW是ADDEND的一个别名。
常用来将较小的数组成较大的数。

LABEL 一般用作定义变量和标号的属性,它是与紧接着的下一条变量和标号定义语句相关的,其类型可以为BYTEWORDDWORDQWORDNEARFAR等等。用法为:
buffer(变量) LABEL BYTE(类型)
例如:

Buffer1 LABEL WORD
Buffer2 DB 20 DUP (?)
通常,紧接着的下一条语句定义的类型与LABEL指定的类型不同。而实际上,Buffer1Buffer2的别名,两者指向内存中的同一个存储地址。换言之,同一组数据定义了两种不同的类型,在接受不同数据类型的访问时,可以指定相应的标号。如接受一个字类型数据访问时,使用Buffer1;接受字节类型数据访问时,使用Buffer2。否则因为数据类型不匹配,编译器编译时将出现异常。
lable本身不占有实际存储空间。