在最近的街头游乐会上,有一个单人乐队让我很是着迷。的确,这让我很开心,还给我留下了深刻印象。这个单人乐队的唯一成员利用嘴、大腿、膝盖和脚分别控制口琴、五弦琴、钹和脚鼓,生动地演奏了齐柏林飞船乐队的《天堂的阶梯》,他演奏的贝多芬《第五交响曲》也颇为动人。和他相比,我能一边拍脑袋一边摸肚子就觉得很不错了。(或者是一边拍肚子一边摸脑袋。)
对您来说,幸运的是,Unix® 操作系统更像是那个单人乐队,而不是像我这个笨手笨脚的专栏作家。UNIX 特别擅长同时处理多个任务,并安排它们访问系统中的有限资源(内存、设备和 CPU)。打个比方,UNIX 可以一边散步,一边嚼口香糖。
这个月我们研究的内容要比平常更深入一些,我们会看看 UNIX 是如何同时做这么多事的。这次我们还会探索 shell 的内部,了解工作控制命令,如 Ctrl+C(终止)和 Ctrl+Z(挂起)是怎样实现的。
一个真正的多任务系统
在 UNIX(以及大多数现代操作系统,包括 Microsoft® Windows®、Mac OS X、FreeBSD 和 Linux®)中,每个计算任务都是由一个进程表示的。UNIX 似乎能同时运行很多任务,这是因为每个进程都会轮流(从概念上来讲)分到一小片 CPU 时间。
一个进程就像一个容器,它与某个正在运行的应用程序、环境变量、应用程序的输入和输出,以及进程的状态(包括其优先级和累计资源使用情况)捆绑在一起。图 1 显示了一个进程。
图 1. UNIX 进程的概念化模型
为了便于理解,您可以把一个进程想像成一个独立的国家,有边界、资源,还有国民生产总值。
标签: