首页 园地图库文章列表留言下载
现在位置:首页 -> 网络科技 -> 上网指南
Linux操作系统功能概述续5
作者:佚名 来源:mmkey.com搜集 更新日期:2004-10-1 阅读次数
文字 〖 自动滚屏(右键暂停)

为了巩固上面所述的,让我们看个例子,假如u程序是运行vi编辑器,v是运行一个冗长的运算程序,并且用户w也在运行一个大计算量的程序。记住,vi是一个程序,它的源程序中也许会包含以下代码片段: 文摘园地

while (1) {
scanf("%c",&KeyStroke);
if (KeyStroke == ’x’) DeleteChar();
else if (KeyStroke = ’j’) CursorDown();
else if ...
} 文摘园地
这里你可以看到vi是如何读入用户输入的,比如x(删除一个字符)、j(使光标下移一行)等。当然,DeleteChar()等上面出现的函数的源代码并没有在这里写出。在u程序的轮循中,vi程序会遇到scanf()行,后者调用read()系统调用,于是此时OS就会运行。假设在u程序在运行时,用户还没有从键盘输入,这时OS就会将u进程设置为Sleep状态。
接下来OS会选择进程表中的一个处于Run状态的进程,并且使它进入CPU的下一轮处理。这里假设是v程序,它会一直运行知道直到计时器中断的到来。这一电流中断脉冲会导致CPU跳转至OS,这时OS就会再次运行,这次,假设程序w会被执行。
假如在w的运行期间,u程序终于得到一个键盘输入,那么如上文所说明的那样,这个键盘输入产生的硬件中断会强行导致CPU跳转至OSOS会读入u程序的键盘输入,需要注意的是,这时OS会将进程表中原本处于Sleep状态的u进程设置为Run状态。接着,OS会执行IRET指令,这会使w进程继续运行,不过当下一个计时器中断到来之后,OS可能会使u进程再次运行。 文摘园地
4.4
关于后台作业 文摘园地
假如你有一个名位a.out的程序,你想长时间的运行它。而在它运行时,你还想去处里其他事,比如使用vi编辑器编辑文件xyz。在UNIX操作系统中,你可以输入以下命令: 文摘园地
% a.out &
% vi xyz 文摘园地
使用"&"号的意思是:在后台运行该作业。这又意味着什么呢?
答案是实际上它对于OS来说什么都不意味。在OS进程表中a.out进程是后台还是前台是不会被说明的,它仅仅就是个简单的进程。
"&"
只会对shell有意义。我们使用该符号告诉shell请为我运行a.out程序,不过不要等到它运行完了才给我‘%’提示符,请立即给我该提示符,因为我想做一些其他事情。 文摘园地

4.5
巩固上述概念:自己尝试这些命令 文摘园地
首先试试ps命令,在UNIX系统中,它会告诉你很多关于目前进程的信息,包括: 文摘园地
a.
状态 RunSleep等)
b.
页使用情况 (有多少页、多少页故障等;参看下面的虚拟存储部分)
c.
族谱 (该给出进程的父进程) 文摘园地
我们极力推荐读者自己试试。你会在看到ps命令的输出后更加明白我们上面提到的概念。该命令的格式会因系统不同而不同(在UNIX系统上,我建议使用ps ax),所以请查看man手册页获取更多细节,不过使用的选项越多越有可能得到完全的输出信息。
另一个需要尝试的命令是w,该命令所给出的信息中有一项是在过去几分钟里处于Run状态的进程的平均数。这个数字越大,那么用户能查觉的计算机的响应时间就越慢,就象它的程序和更多其他用户的程序一同运行一样。
上篇文章: Linux操作系统功能概述续6
下篇文章:七夕礼物
相关文章:
没相关文章

版权所有:文摘园地;本站资料均由站长收集,如果有侵权,请立即来信留言告诉我们,以免损害您的权益,谢谢!
Copyright © 2004 文摘园地 http://wwww.mmkey.com All Rights Reserved Power by:HeadWind
粤ICP备05098767号