9.3 联机命令接口实现

 

9.3 实现联机命令接口

在现代计算系统中,实现有效的人机交互是至关重要的。本节旨在探讨如何通过软件配置,在系统中实现这一目标。我们将详细介绍键盘终端处理程序和命令解释程序的配置,它们共同作为联机命令接口的基石,确保了用户能够与计算机系统顺畅交流。

9.3.1 键盘终端处理程序

键盘终端处理程序是实现人机交互的第一步。它的主要职责包括接收用户输入的字符和数据,将它们暂时存储在字符缓冲区中,以及执行屏幕编辑等操作。以下是该程序的几项关键功能:

接收字符

为了顺畅的人机交互,键盘终端处理程序必须能够准确接收用户输入的字符。这一过程可以通过两种主要方式实现:

  1. 面向字符方式:直接接收并传送终端输入的字符到用户程序,这些字符通常是未处理的ASCII码序列。
  2. 面向行方式:字符首先被暂存于行缓冲中,并可进行行内编辑,直至行结束符被接收,才将整行数据传送给命令解释程序。

字符缓冲

为了降低中断处理频率,键盘终端处理程序还需要实现字符缓冲功能。这可以通过两种方式实现:

  1. 专用缓冲方式:为每个终端分配一个专用缓冲区,适用于单用户系统或终端数量较少的场景。
  2. 公用缓冲方式:通过一个公用缓冲池来共享多个缓冲区,提高了缓冲利用率,适用于终端数量较多的情况。

回送显示

回送显示(或回显)功能确保用户输入的每个字符都能即时显示在屏幕上。近年来,由于硬件实现回显的缺点,软件回显成为了首选方案,它允许灵活地控制何时进行回显,以及如何处理字符变换。

屏幕编辑

为了增强用户体验,键盘终端处理程序还应支持屏幕编辑功能,允许用户对输入的数据进行修改,如删除或插入字符。这通常通过提供若干编辑键来实现,包括删除键、插入键和光标移动键等。

特殊字符处理

处理特殊字符是键盘终端程序的另一个重要职责。这包括对中断字符、停止上卷字符等的识别和处理,以保障用户能够有效控制程序的执行和屏幕的显示。

通过上述功能的实现,键盘终端处理程序成为了用户与计算机系统之间交流的重要桥梁,为高效、灵活的人机交互提供了基础。

 

 

9.3.2 MS-DOS命令解释程序

在早期的个人计算机操作系统中,MS-DOS占据了显著的地位。本节将深入探讨MS-DOS中的命令解释程序COMMAND.COM,它是用户与操作系统交互的核心组件。

命令解释程序的作用

命令解释程序的主要职责是提供一个用户界面,允许用户输入命令,然后读取、识别这些命令,并将它们转交给相应的命令处理程序执行。这个过程涉及提示用户输入、命令的读取与识别,以及执行结果的展示。若用户输入的命令有误,命令解释程序还负责显示错误信息。

MS-DOS命令解释程序的组成

MS-DOS,由Microsoft公司于1981年开发,随着时间的推移经历了多次更新,到1994年发展到了6.X版本。COMMAND.COM是MS-DOS中负责命令解释的关键程序,它主要由以下三部分组成:

1. 常驻部分

包括中断服务子程序,如正常退出中断INT 20和驻留退出中断INT 27,以及处理标准错误信息的INT 24。这些程序确保了用户程序终止后的正确返回以及系统稳定运行。

2. 初始化部分

在系统启动时获得控制权,负责系统初始化,并处理AUTOEXEC.BAT文件,该文件包含在系统启动时自动执行的命令。初始化部分还决定了应用程序的装载基地址。

3. 暂存部分

包含命令解释程序本身,所有内部命令处理程序,文件处理程序,以及加载和执行外部命令的程序。尽管这些组件在用户程序执行时可能被覆盖,但它们会在执行结束后重新被加载到内存中。

命令解释程序的工作流程

系统启动后,COMMAND.COM的初始化部分首先执行,完成系统的基本设置并自动运行AUTOEXEC.BAT文件。随后,控制权转移到暂存部分。当用户输入命令,暂存部分首先验证命令的有效性,如果命令有效,再根据一张预定义的表格来识别命令。这张表格包含了命令名称和对应处理程序的入口地址。如果命令是内部命令,直接从表中找到并执行;若为外部命令,则需要额外的步骤来加载并执行相应的程序。

COMMAND.COM通过这种机制,提供了一个有效的方式来处理用户的命令请求,是MS-DOS操作系统中不可或缺的一部分。通过理解其工作原理,我们可以更好地理解早期操作系统的设计和功能。

 

 

9.3.3 Shell解释程序

在UNIX和Linux系统中,Shell不仅是命令语言和命令解释程序的统称,它还充当了用户和应用程序与操作系统之间的接口。作为操作系统的最外层,Shell提供了一种机制,通过它,用户可以输入命令进行交互,或者其他程序可以向Linux系统传递命令。接下来,我们将深入了解Shell的特点、命令行树的二叉树结构,以及Linux命令解释程序的工作流程。

Shell命令的特点

相比于MS-DOS的简单命令解释程序,Shell命令解释程序要复杂得多,主要原因在于Shell命令的多样性和复杂性。这体现在以下几个方面:

  1. 多命令行:Shell允许在一条命令行中输入多个命令,这要求命令解释程序能够生成多个命令处理程序(进程)来执行这些命令。
  2. 不同的分隔符:Shell命令行中的命令可以通过不同的分隔符(如";"、"&"、"|")分隔,这些分隔符定义了命令的执行顺序和方式。

二叉树结构的命令行树

Shell命令的这些特性使得它不能仅依赖简单的译码方式。相反,Shell根据命令行中的分隔符类型,并按一定规律构建二叉树结构的命令行树,以清晰地表示命令行中所有命令的执行顺序和方式。例如:

  • 命令表型结点:当遇到";"或"&"分隔符时,Shell为之建立一个命令表型结点,左右子树分别代表分隔符左右的命令。
  • 管道文件型结点:遇到管道符"|"时,建立一个管道文件型结点,左右子树代表管道的输入和输出命令。

Linux命令解释程序的工作流程

在Linux系统中,系统启动后,内核为每个终端用户创建一个Shell进程。Shell进程的基本执行过程如下:

  1. 读取命令行:从键盘缓冲区读取用户输入的命令行。
  2. 命令分析:分析命令行中的命令和分隔符,构建相应的二叉树结构命令行树。
  3. 建立子进程:为命令行树中的每条命令建立相应的子进程。
  4. 执行与等待:根据命令类型(如";"或"&")等待子进程完成或直接继续执行下一命令。
  5. 子进程完成:子进程执行相应的命令后终止,向父进程报告完成。

Shell通过这样的流程处理用户输入的命令,展现了其强大的功能和灵活性。通过理解Shell命令解释程序的工作原理,用户可以更有效地利用UNIX和Linux系统进行各种任务的执行。

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值