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

操作系统功能概述 文摘园地
1.
介绍 文摘园地
1.1
仅仅是程序!
首先而且最重要的是,明白操作系统(OS)仅仅是一个程序,虽然它非常庞大、非常复杂,不过它仍然是一个程序。OS提供对加载和处理其他程序的支持(我们以下将这些程序称为应用程序),并且操作系统能够建立某些机制,获取某些特权,这些特权是应用程序所没有的,不过最后还是要提醒你,操作系统仅仅只是一个程序。
举个例子,当你的一个程序,假如是a.out处在运行状态,不过OS没有运行,这样你的OS将没有能力在a.out程序运行时加载、中断该程序-—-因为OS没有运行!这是一个关键概念,所以让我们先来了解这个描述是什么意思。
上面我们描述a.out处于运行状态,那么什么是运行状态?计算机的CPU会不间断的执行获取代码/执行代码/获取代码/执行代码...的循环,每一次获取过程,CPU都会去取得Program Counter指针所指向的指令。如果当前的PC指针指向你的程序当中的一条指令,那么我们称你的程序将处于运行状态。每次你程序中的一条指令执行后,CPU的循环机制会更新PC指针的值(一般就是加一),使之指向你的程序中的下一条指令(通常情况)或是你程序中的任意位置处的指令(若遇到jump指令). 文摘园地
需要注意的是,能使你的程序停止运行的唯一方法是使PC指针指向另一个程序,比如指向OS
它是怎样发生的呢?只有两种方法: 文摘园地
a.
你的程序可以自动将CPU释放给OS。通常你的程序会通过系统调用---OS提供的一系列实现某种有用功能的函数---来达到上述目的。
比如,假设a.out是由C源程序编译而来,其中调用了scanf()函数。scanf()函数是C语言库函数,它在a.out源程序编译的过程中链接进了目标文件a.out,但是,scanf()这个库函数实际上又调用了read()函数,而read()函数正是一个系统调用函数(它被包含在操作系统中)。当a.out这个程序运行至scanf()指令时,对scanf()的调用会导致对OS的调用,不过当OS读入键盘输入后,它又会将资源返回给a.out程序。 文摘园地
b.
另外一种可能原因是产生硬件中断。它是一种发送给CPU的信号-—-实际上是在总线中的中断请求线路上的一个物理电流脉冲,来自诸如键盘之类的I/O设备。当CPU收到该中断后,就会转入一段我们指定的在启动计算机之后的内存空间中。它会存在于OS中,因此这时OS就会运行。这时OS就会监控I/O设备,比如,记录键盘的敲击情况,最后,返回到被中断的应用程序。
注意,在这个敲击键盘的例子中,敲击不一定是由你来完成。当你的程序运行时,其他用户可能会使用键盘。中断会导致你的程序被挂起;OS会运行发起中断请求的设备的驱动-—-比如键盘,如果该用户使用一台设备的console或者internet接口,如果该用户是从远程登陆,比如通过telnet-—-这会在该用户的缓冲区里记录该用户的击键情况;然后OS会执行iret指令从该中断程序中返回,这样你的程序就恢复了。
硬件中断还可以由CPU自己产生,比如说,如果你的程序有除以零的操作,或者试图获取一段超过你的程序限制的内存空间时,CPU就会自己产生中断了。 文摘园地
所以,当你的程序处在运行状态时,它就是老大,OS没有停止它的能力。使你的程序停止运行
上篇文章: Linux操作系统功能概述续1
下篇文章:七夕礼物
相关文章:
没相关文章

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