【操作系统】死等状态、忙等状态、有限等待、让权等待

死等状态:操作系统中的处理进程同步时遇到的一种问题。
进程在有限时间内根本不能进入临界区,而一直在尝试进入,陷入一种无结果的等待状态。
(没有进入临界区的正在等待的某进程根本无法获得临界资源而进入进程,这种等待是无结果的,是死等状态。)-》这个时候应该放弃这个无结果的事情,保证自己等待的时间是有限的

忙等状态:操作系统中的处理进程同步时遇到的一种问题。
当一个进程正处在某临界区内,任何试图进入其临界区的进程都必须进入代码连续循环,陷入忙等状态。连续测试一个变量直到某个值出现为止,称为忙等。
(没有进入临界区的正在等待的某进程不断的在测试循环代码段中的变量的值,占着处理机而不释放,这是一种忙等状态。)-》这个时候应该释放处理机让给其他进程

有限等待:对要求访问临界资源的进程,应保证有限时间内能进入自己的临界区。以免陷入“死等”状态。(受惠的是进程自己)。

让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态。(受惠的是其他进程)。

【汇编】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本身不占有实际存储空间。

Sublime Text编写80×86汇编.asm文件的语法高亮插件

使用Sublime Text里面自带的Package Control安装。
使用shift+command(control)+P,输入install,选择Install Package回车~
Snip20160610_96

输入x86,选择x86 and x86_64 Assembly
Snip20160610_97

然后能看到左下角正在安装的提示~
Snip20160610_98

安装成功后重启软件就能使用了= =(只要文件名的后缀为.asm就可以自动高亮~)
Snip20160611_101

 

 

L1-020. 帅到没朋友-PAT团体程序设计天梯赛GPLT

当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。
输入格式:
输入第一行给出一个正整数N(<=100),是已知朋友圈的个数;随后N行,每行首先给出一个正整数K(<=1000),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(<=10000),为待查询的人数;随后一行中列出M个待查询的ID,以空格分隔。
注意:没有朋友的人可以是根本没安装“朋友圈”,也可以是只有自己一个人在朋友圈的人。虽然有个别自恋狂会自己把自己反复加进朋友圈,但题目保证所有K超过1的朋友圈里都至少有2个不同的人。
输出格式:
按输入的顺序输出那些帅到没朋友的人。ID间用1个空格分隔,行的首尾不得有多余空格。如果没有人太帅,则输出“No one is handsome”。
注意:同一个人可以被查询多次,但只输出一次。
输入样例1:
3
3 11111 22222 55555
2 33333 44444
4 55555 66666 99999 77777
8
55555 44444 10000 88888 22222 11111 23333 88888
输出样例1:
10000 88888 23333
输入样例2:
3
3 11111 22222 55555
2 33333 44444
4 55555 66666 99999 77777
4
55555 44444 22222 11111
输出样例2:
No one is handsome
分析:用一个set集合s保存所有有朋友的人~如果朋友圈人数>=2,那么就把所有的人都添加进集合s里面~因为这些人都是有朋友的~如果朋友圈人数==1,那就只输入这个值并不做任何处理~
对于要检验的每一个id~看看它是不是在集合s里面~如果不在a里面说明没有朋友~那就输出这个id~但是也有可能有重复的id哦~所以用一个set集合ans保存所有之前已经输出的答案~每次输出之前检验是不是已经输出过了呢~输出过就不能输出了哦~
用flag标记是不是已经输出过答案了呢~如果输出过前面就要加个小空格哦~如果最后发现还是一个都没有输出~那就说明No one is handsome啦~啦啦啦~