📄 traps2.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Quadralay WebWorks Publisher Professional Edition 6.0.5">
<meta name="TEMPLATEBASE" content="book_html">
<meta name="LASTUPDATED" content="08/22/03 10:13:21">
<title>8.1 Traps and trapgroups</title>
<STYLE TYPE="text/css">
<!--
span.Signal { text-transform: uppercase; font-family: Verdana }
-->
</STYLE>
</head>
<body link="#3366CC" vlink="#9999CC" text="#000000" alink="#0000CC" bgcolor="#FFFFFF"
background="images/backgrnd.gif">
<p><img src="images/stlogo.gif" width="106" height="83" align="left"
alt="logo here!"> </p>
<table width="331" border="0" align="right" cellpadding="0" cellspacing="0">
<tr>
<td><a href="c2isetto.htm"><img src="images/navtoc.gif" width="84" height="23"
border="0" alt="TOC"> </a></td>
<td><a href="traps.htm"><img src="images/navprev.gif" width="80" height="23"
border="0" alt="PREV"> </a></td>
<td><a href="traps3.htm"><img src="images/navnext.gif" width="83" height="23"
border="0" alt="NEXT"> </a></td>
<td><a href="c2isetix.htm"><img src="images/navidx.gif" width="84" height="23"
border="0" alt="INDEX"> </a></td>
</tr>
</table>
<p><br clear="all">
</p>
<hr align="left">
<blockquote>
<h2>
<a name="1204407"> </a><font color="#003366" face="Verdana, Arial, Helvetica, sans-serif">8.1 Traps and trapgroups</font>
</h2><hr>
<p>
<a name="1204408"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">The events that can be trapped by the ST20-C2 are:</font>
</p>
<dl> <dl>
<dt> <a name="1204410"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif"><em>IntegerError<br>Overflow<br>Breakpoint<br>IllegalOpcode<br>LoadTrap<br>StoreTrap<br>ExternalChannel<br>InternalChannel<br>Timer<br>TimeSlice<br>Run<br>ProcessInterrupt<br>QueueEmpty</em> </font>
</dl>
</dl>
<p>
<a name="1204423"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">These are in turn broken down into four groups of traps or trapgroups:</font>
</p>
<dl> <dl>
<dt> <a name="1204425"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif"><em>Error<br>Breakpoint<br>System<br>Scheduler</em> </font>
</dl>
</dl>
<p>
<a name="1204429"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">In addition traps in the <em>Error</em>, <em>Breakpoint</em> and <em>System</em> trapgroups are sometimes referred to as program traps to distinguish them from scheduler traps. These groups are described below.</font>
</p>
<ul>
<p> <font size=2 face="Verdana, Arial, Helvetica, sans-serif"><li ><a name="1204432"> </a><em>Error</em> trapgroup</font></p>
<dl>
<dt> <a name="1204433"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">The traps in this group are <em>IntegerError</em> and <em>Overflow</em>. These relate to conditions which would have set the error flag on previous processors such as the T425. </font>
</dl>
<ul>
<p> <font size=2 face="Verdana, Arial, Helvetica, sans-serif"><li ><a name="1204434"> </a><em>Overflow</em> represents arithmetic overflow, that is arithmetic results which would not fit in the result word.</font></p>
<p> <font size=2 face="Verdana, Arial, Helvetica, sans-serif"><li ><a name="1204435"> </a><em>IntegerError</em> represents errors caused when data is erroneous, for example when a range checking instruction finds that data is out of range.</font></p>
</ul>
<dl>
<dt> <a name="1204436"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">The division between these two classes means, for example, that a user could choose to ignore all overflows but strictly monitor any case where array accesses would have been out of range. This behavior would be required in an implementation of Java.</font>
</dl>
<p> <font size=2 face="Verdana, Arial, Helvetica, sans-serif"><li ><a name="1204437"> </a><em>Breakpoint</em> trapgroup</font></p>
<dl>
<dt> <a name="1204438"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">The only element of this group is the <em>Breakpoint</em> trap. </font>
</dl>
<ul>
<p> <font size=2 face="Verdana, Arial, Helvetica, sans-serif"><li ><a name="1204439"> </a>Software breakpointing makes use of the <strong>j 0</strong> opcode (as used on the T425) with this trap being asserted when a breakpoint is encountered.</font></p>
<p> <font size=2 face="Verdana, Arial, Helvetica, sans-serif"><li ><a name="1204440"> </a>Hardware breakpoints and watchpoints generated from a Diagnostic Control Unit (DCU) also cause this trap to be asserted.</font></p>
</ul>
<p> <font size=2 face="Verdana, Arial, Helvetica, sans-serif"><li ><a name="1204441"> </a><em>System</em> trapgroup</font></p>
<dl>
<dt> <a name="1204442"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">The elements of this group are the <em>IllegalOpcode</em>, <em>LoadTrap</em> and <em>StoreTrap</em> traps.</font>
</dl>
<ul>
<p> <font size=2 face="Verdana, Arial, Helvetica, sans-serif"><li ><a name="1204443"> </a>The <em>IllegalOpcode</em> trap is asserted when an illegal opcode is encountered in the instruction stream. This can be used both to protect the system against executing corrupted program text as well as allowing software to execute additional pseudo-instructions.</font></p>
<p> <font size=2 face="Verdana, Arial, Helvetica, sans-serif"><li ><a name="1204444"> </a>The <em>LoadTrap</em> and <em>StoreTrap</em> traps allow an OS to intercept attempts by a monitored process to change or examine trap handlers or trapped process information. The mechanism is not intended to fully protect a kernel against user code altering the trap regime but allows for an OS to monitor and handle user processes' requests to change trap handlers.</font></p>
</ul>
<p> <font size=2 face="Verdana, Arial, Helvetica, sans-serif"><li ><a name="1204445"> </a><em>Scheduler</em> trapgroup</font></p>
<dl>
<dt> <a name="1204446"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">The scheduler trapgroup contains the <em>ExternalChannel</em>, <em>InternalChannel</em>, <em>Timer</em>, <em>TimeSlice</em>, <em>Run</em>, <em>Signal</em>, <em>ProcessInterrupt</em> and <em>QueueEmpty</em> traps. These divide into:</font>
</dl>
<ul>
<p> <font size=2 face="Verdana, Arial, Helvetica, sans-serif"><li ><a name="1204447"> </a>traps that indicate that the ST20-C2 hardware scheduler wants to schedule a process on a (hardware) process queue (the different traps allow the different sources of this to be monitored),</font></p>
<p> <font size=2 face="Verdana, Arial, Helvetica, sans-serif"><li ><a name="1204448"> </a>a trap that signals that the machine has performed a priority pre-emption from low to high,</font></p>
<p> <font size=2 face="Verdana, Arial, Helvetica, sans-serif"><li ><a name="1204449"> </a>a trap that indicates that there is no further executable work to perform at that priority.</font></p>
</ul>
<dl>
<dt> <a name="1204450"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">These traps are designed to provide sufficient hooks into the scheduling system to allow a software scheduler to use the ST20-C2 hardware scheduler to implement a multi-priority software scheduler.</font>
</dl>
</ul>
<p>
<a name="1204451"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif"><em>Note: Scheduler traps are in many ways different from other traps as they are caused by the ST20-C2's micro-scheduler rather than by an executing process. In addition, while program traps always related to an activity of the currently executing process, scheduler traps are `asynchronous' and do not always relate to the current process state. See <a href="traps8.htm#1204717"><font color="#0000ff" face="Verdana, Arial, Helvetica, sans-serif"><i>Section
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -