RFC103 中断键的执行

原创 2004年08月17日 10:42:00
组织:中国互动出版网(http://www.china-pub.com/)
RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
译者:邵毅(epl   shaoyi@163.net)
译文发布时间:2001-10-11
版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须
保留本文档的翻译及版权信息。



R B Kalin
MIT Lincoln Laboratory
1971年2月24日

中断键的执行
(RFC103-- Implementation of Interrupt Keys)

目录
问题描述	1
一种解决方案	2
注释	3

当前的协议规范在程序中断函数的实现方面有非常严重的逻辑错误。本文献对这一
问题加以讨论,并给出一个比较容易实现的解决方案。
问题描述
大多数分时共享系统的程序中断键(或称为中断程序运行键(break key)、帮助
请求按钮)具有两个功能。它将当前用户进程挂起,并将键盘输入流转换到后台监控进
程。在中断请求之前未被接受的输入保存在缓冲器内等待挂起的用户进程处理。之后的
输入被送到监控例程。

目前的NCP协议只实现了上述功能的一部分。它通过INS和INR控制信息的使用为
远程过程的挂起做准备。但它并未提供向远程主机通知数据流转换时间的机制。INR和
INS消息通过控制链发送。由于这条链上的消息与用户的键盘输入链并发传送,接收主
机不能凭借相对到达时间来判断同步信息源。而缺乏这种信息,远程NCP不能判断输入
字符与用户进程和监控例程之间的对应关系。

一些系统中对于这一问题的解决方法是将中断信号映射到字符集中的一些代码,如
ASCII码control-C。但不幸的是,这一方法在ARPA网络中还不够普遍。一些系统,如
MULTICS,将所有可用的ASCII码用作其它用途,没有空余留给这一指派。即使可以实
现这样一个指派,还有使中断字符被远程主机所识别的问题。如果用户链的缓冲器已满,
发送端主机则不能传送包含中断码的消息。如果远程用户进程循环进行而不接收数据,
则其缓冲器可能永远不会空闲,消息也就永远不会传入。

一个有局限性的解决方案是在服务端提供一个报文扫描进程来捕捉输入。因为所有
的输入信息都被立即销毁,缓冲器可保持可用状态以使中断码进入。不幸的是,这意味
着时间特性必须被抛弃。因为在扫描过后,可能已经不存在供它们存放的空间。尽管这
对于终端交互而言并非至关重要,因为用户可以只在程序要求输入的情况下输入,但这
一缺陷使得扫描器不能实现文本驱动。
一种解决方案
以下定义了在ASCII数据流的情况下,这一问题的解决方案。

1)	字符消息的每个字符代码都应使用8位数域。

2)	对于所有定义过的ASCII字符代码,8位数域的左端应为0。

3)	在输入序列中,应在数据流的合适点处放置一个中断同步字符(任给8进
制代码200)

4)	8进制数201到377被接收主机忽略。它们被保留做在必要的时候当附加
控制信息使用。将其用作附加字符代码的尝试将遇到来自将字符内定为7
位数域的PDP-10系统的抵抗。注意对中断同步代码不应拒收,因为它们已
经被系统过滤,永不会出现在用户输入缓冲器内。

5)	因为存在允许包含待发送中断同步字符的用户信息配额不足的可能性,必
须保留现有的INR/INS机制。当一个中断同步字符进入文本流的时候,应
该发送一个INS控制信息。外部主机在收到信息的时候,附加的进程应该
被立即挂起,并扫描相关的输入流。如果可能,所有到中断同步字符的输
入应被放如缓冲器等待挂起进程处理。一旦发现同步字符,流应被转换到
新激活的监控进程。如果不可能将所有用户进程的输入存入缓冲器,则可
将其丢弃,并由监控进程向用户发送出错信息。任何一种事件都必须保证
输入被销毁,且消息缓冲器被释放,以便发送未处理的字符消息。

6)	当一个中断同步字符先于匹配INS被收到时,用户进程应被挂起,NCP在
进一步处理前等候INS消息。

7)	当然,上述讨论的NCP功能可以由一个独立的功能模块表示,如TELNET
进程。如果完成这一步,则NCP的消息体可以是透明的。
注释
这里提出的对第二级协议的更改并不是一个普遍问题,而是出于修正关键错误的目
的,对目前具有NCP设计的一个特定的补丁包。

1)	它仅对7位代码字符流起作用。并不允许对EBCDIC,ASCII-8或更大的字
符集进行扩展。尽管作者知道这一概念意味着关闭连接,但并没有对不包
含字符流的进程则规定任何解释。

2)	它要求系统扫描来自可中断连接的所有数据。这意味着,当连接建立起来
的时候,必须告知接收主机扫描工作已完成。隐式或显式的方法都是可采
用的。

3)	这一技术对在一个消息体内丢失字符边界的情况并无法处理。同时,它允
许不包含匹配同步字符的INS控制消息,反之亦然。

4)	得到INS或包含中断同步字符的向远程主机发送的文本信息也许不大可
能。可能的原因包括用户控制台错误,本地主机故障,网络故障,控制链
阻塞,配额不足等。在这些情况下,远程过程可能进入死循环。

对当前NCP协议的小改动不能够满足对于中断同步问题唯一全面的那些避免上述
难点的解决方案的需要。如果没有提出更加简单的解答,它们的执行就必须推迟到下一
轮大的设计修订工作来完成。



 [本RFC文档由Gert Doering于97年4月]
[编为机器可读形式以便录入RFC在线档案]

RFC103-- Implementation of Interrupt Keys                          中断键的执行


1
RFC文档中文翻译计划

TELNET的行方式:客户中断键

看一下当用户键入中断键时Telnet将发生什么情况。假定在客户主机bsdi和服务器cangogh.cs.berkeley.edu之间建立了一个Telnet会话。图26-17显示了当用户键入中断键后的时...
  • johnny_83
  • johnny_83
  • 2007年07月28日 08:18
  • 1059

浅谈JavaScript如何运行中断或停止

在js运行过程中,在某些情况下想中断程序的运行,在网上查过,没有找到有这样的函数。一般情况下,大多数都是用return代替的。   因为js脚本很多都是基于函数的运行,return的作用是中断函数的...
  • qq_16559905
  • qq_16559905
  • 2016年04月08日 18:20
  • 14759

Android中HOME键的执行过程

做了一个音乐播放器,想要在按下返回键后,执行HOME键的效果,于是监听了activity的生命周期,发现 但是,当自己改写了onBackPresssed()后 发现并没有达到理想的效果,实...
  • huanglong0438
  • huanglong0438
  • 2016年03月20日 16:17
  • 997

linux常见中断信号

下面是收集整理的常见中断信号: 1) SIGHUP 本信号在用户终端连接(正常或非正常)结束时发出,通常是在终端的控 制进程结束时, 通知同一session内的各个作业...
  • USBdrivers
  • USBdrivers
  • 2013年06月27日 23:52
  • 1018

PLSQL developer中断执行的前提

会话方式不能是单路,不然执行长时间的sql时会卡死,也不能点击红色闪电中断sql的执行...
  • abc45628
  • abc45628
  • 2017年11月29日 15:49
  • 148

【Linux内核驱动】按键中断

中断注册函数:request_irqrequest_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, ...
  • wr132
  • wr132
  • 2017年11月19日 15:14
  • 92

Linux中断机制之三:中断的执行

在内核代码中,对X86平台中断执行的基本过程是: 1、 通过IDT中的中断描述符,调用common_interrupt; 2、 通过common_interrupt,调用do_IRQ,完成ve...
  • phenix_lord
  • phenix_lord
  • 2015年04月18日 21:25
  • 1221

中断中处理延时及一些函数的调用规则

转自:http://blog.csdn.net/samantha_sun/article/details/6790492 1,中断处理程序中不能使用有睡眠功能的函数,如ioremap,kma...
  • wff_wf
  • wff_wf
  • 2018年01月16日 16:38
  • 45

redis键过期

Redis可以为数据库中的每一个键关联一个过期时间,当到达指定时间后Redis就会把该键从数据库中删除 redis 127.0.0.1:6379> setex name 5 diaoco...
  • Erica_1230
  • Erica_1230
  • 2016年05月02日 01:32
  • 738

何为原语?为何屏蔽中断

最近开发的项目,出现了一个奇怪的bug,即程序运行的结果时好时坏,最后发现问题出现在中断上。 经过2天的调试才发现,原来程序中有一段经常调用的数据处理程序有一个参数,恰巧该参数的值需要在中断中获得,...
  • beep_
  • beep_
  • 2016年08月26日 19:16
  • 669
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RFC103 中断键的执行
举报原因:
原因补充:

(最多只允许输入30个字)