Linux 功能概览
在过去的两个星期里,我们回顾了 Linux 的起源;然后在上周,我补充了一些关于其他贡献,这些贡献使 Linux 成为今天的样子。
一旦我建立了基础知识,我将开始研究 Linux 和 Linux 现象的具体领域。在未来的专栏和广播节目中,预计会看到关于办公软件套件、Web 服务器、嵌入式系统以及 Linux 被使用的所有其他方式的报道。
除了您在这些广播节目的简短介绍中找到的信息外,我们的网站还包含从 1994 年到 1999 年在Linux Journal上发表的文章的完整存档。它还包含有关如何订阅Linux Journal印刷版的信息,这使您可以及时了解最新信息。
本周,我想了解一下 Linux 操作系统的一些特性,这些特性使其从 Microsoft 的基本产品中脱颖而出。如果您有 UNIX 背景,那么这些特性将是预期的。
首先,Linux 是一个抢占式多任务操作系统。让我分两部分解释一下。首先,多任务意味着操作系统可以同时执行多个作业。或者,更准确地说,看起来可以同时执行多个作业。如果您的计算机只有一个 CPU,那么它实际上一次只能执行一个任务。Linux 内核所做的是根据优先级方案调度任务并在它们之间切换,以便看起来所有任务都在同时运行。
你为什么要这样做?假设您正在使用文本编辑器编辑文档。您可能希望在使用编辑器进行交互式工作时,使用浏览器抓取网页或将数据文件上传到另一个系统。对于 Linux 来说,这只是一个简单的工作,即根据需要,在运行文本编辑器和文件传输程序或浏览器之间切换。
“根据需要”使我们进入了抢占部分。当您输入击键时,文本编辑器将需要运行,以便它可以处理击键并更新屏幕。当需要处理来自 Internet 的下一个输入字符或发送下一个数据块时,浏览器或传输程序将需要运行。
为了完全理解这一点,您需要知道一个名为设备驱动程序的程序,而不是文本编辑器或浏览器,处理从键盘到视频显示卡以及到/从您的通信设备的实际数据传输。因此,必须调度设备驱动程序来发送或接收数据,然后必须运行应用程序来处理数据。
硬件为每个传输单元创建一个中断(其中一个单元可以是单个字符或数据块,具体取决于设备类型)。Linux 内核调度适当设备驱动程序的中断处理程序代码来处理中断。
一旦中断处理程序完成,Linux 调度程序就必须选择下一个要运行的任务。选择是在所有准备运行的任务中进行的。“准备运行”意味着它们没有等待诸如键盘输入之类的原因。因此,在设备驱动程序处理中断后,准备运行的任务选择很可能会改变。
任务调度程序(Linux 内核的一部分)动态地重新确定活动优先顺序的能力是抢占部分的关键。中断导致设备驱动程序抢占正在运行的任务,而处理中断的结果可能会导致不同的任务抢占在中断之前正在运行的任务。这种调度能力使计算机看起来可以同时执行多个任务——计算机可以在您的击键之间完成大量工作。
这仅仅是允许多个人同时使用单个计算机系统的能力。如果您是 MS-Windows 用户,您可能会想到您如何登录以及这如何成为多用户。并非如此。请注意,我说的是同时。在 Windows 9x 上,单个人登录并控制计算机。在 Linux 系统上,整组用户可以同时登录并工作。
在Linux Journal的早期,我们有一台 Linux 机器和连接到这台计算机的一大堆串行终端。每个用户都登录到单个系统并完成他们的工作。这取决于 Linux 内核在所有用户之间分配系统资源并保护每个任务的完整性。这是对抢占式多任务处理的相对简单的扩展,但也是一个重要的扩展。
电子邮件:ljeditors@ssc.com