MTB-056. Multics Technical Bulletin. Date: March 27, 1974 I/O Interfacer Design Specifications. Design Details

Similar documents
Multics Technical Bulletin MTB-074. Distribution. Noel I. Morris & Bernard s. Greenberg. Date: May 7, I/O Buffer Management in Multics

MULTICS TECHNICAL BULLETIN MTB-536. To: Distribution. Robert S. Coren Date: 09/21/81 Use of Extended Memory for FNP Buffers

Converting from ios_ to iox_

Tape Channel Analyzer Windows Driver Spec.

PROCESS SYNCHRONIZATION

c. Specific Proposal.

6 System Processes Keyboard Command Decoder CRT Display... 26

Run-Time Data Structures

MTB-433. Multics Technical Bulletin. Distribution. Date: 12/27/79 Recent Improvements to PL/I

SMC-3 Vendor Specific Sense Code Survey

Ausgewählte Betriebssysteme - Mark Russinovich & David Solomon (used with permission of authors)

Mobile Operating Systems Lesson 01 Operating System

Chapter 9: Virtual-Memory

Background. Demand Paging. valid-invalid bit. Tevfik Koşar. CSC Operating Systems Spring 2007

Module 9: Virtual Memory

Multics Project internal working documentation. Not to be reproduced or distributed outside the Multics Project.

OSEK/VDX. Communication. Version January 29, 2003

File Organization Sheet

Module 9: Virtual Memory

Running. Time out. Event wait. Schedule. Ready. Blocked. Event occurs

SpiNNaker Application Programming Interface (API)

The Aggregator plugin PRINTED MANUAL

3.1 Introduction. Computers perform operations concurrently

Chapter 6: Demand Paging

System-state System Calls. The alarm ID returned may be used to delete an alarm request. The following function codes are supported:

Chapter 9: Virtual Memory

Sequential Block File Manager (SBF)

File Organization Sheet

real-time kernel documentation

CMSC 313 Lecture 13 Project 4 Questions Reminder: Midterm Exam next Thursday 10/16 Virtual Memory

Chapter 3: Processes. Operating System Concepts 8 th Edition,

ECLASS BLOCK. Description. Extension Controls

,... Multics Technical Bulletin MTB-579

NIC: 4693 May Object: Arpa Network - Specification Outlines for Host-IMP (HI) Interface Programs.

CSE325 Principles of Operating Systems. Virtual Memory. David P. Duggan. March 7, 2013

CSE 4/521 Introduction to Operating Systems. Lecture 15 Virtual Memory I (Background, Demand Paging) Summer 2018

ECEN 449 Microprocessor System Design. Hardware-Software Communication. Texas A&M University

Virtual Memory Outline

ICP2432-to-PCI Host Protocol Specification DC A

MULTICS TECHNICAL BULLETIN MTB-237 page 1. Distribution A. Bensoussan Date: December 3, 1975 Overview of the New Storage System

12. Interrupts and Programmable Multilevel Interrupt Controller

There are three basic formats of argument ~ists that the command processor will initially special case. These are:

Xinu on the Transputer

Input Output (IO) Management

MTB-261 MULTICS TECHNICAL BULLETIN. MTB Distribution From: Larry Johnson Date: February 16, 1976 Subject: Master Directory Control.

COMMON-ISDN-API. Version 2.0. Part II. 4 th Edition. Operating Systems

Demand Paging. Valid-Invalid Bit. Steps in Handling a Page Fault. Page Fault. Transfer of a Paged Memory to Contiguous Disk Space

AT&T Issue 1 January DEFINITY Communications System Generic 3 Hospitality Services

Operating Systems CMPSC 473 Midterm 2 Review April 15, Lecture 21 Instructor: Trent Jaeger

Chapter 8: Virtual Memory. Operating System Concepts Essentials 2 nd Edition

CLD SC58x CDC Library v.1.00 Users Guide Users Guide Revision For Use With Analog Devices ADSP-SC58x Series Processors. Closed Loop Design, LLC

Falling in Love with EROS (Or Not) Robert Grimm New York University

Chapter 8 Memory Management

ECLASS BLOCK. Description. Extension Controls. Caller Input Control

Memory management. Requirements. Relocation: program loading. Terms. Relocation. Protection. Sharing. Logical organization. Physical organization

Background Swapping Contiguous Memory Allocation Paging Structure of the Page Table Segmentation

PROCESS STATES AND TRANSITIONS:

1 Time Management. 1.1 Preemption Events. 1.2 Wakeup Events. 1.3 Implementation. COMP 242 Class Notes Section 4: Interrupt Processing

Section 9: Cache, Clock Algorithm, Banker s Algorithm and Demand Paging

Computer-System Organization (cont.)

Roadmap. Tevfik Koşar. CSC Operating Systems Spring Lecture - XII Main Memory - II. Louisiana State University

Chapter 9: Virtual Memory. Operating System Concepts 9 th Edition

Process size is independent of the main memory present in the system.

Contact Center Assurance Dashboards

Operating Systems Design Exam 2 Review: Spring 2012

Memory Management Prof. James L. Frankel Harvard University

MetaWatch Firmware Design Guide

11/3/71 SYS MOUNT (II) sys mount; special; name / mount = 21.; not in assembler

Last class: Today: Paging. Virtual Memory

ADRIAN PERRIG & TORSTEN HOEFLER Networks and Operating Systems ( ) Chapter 6: Demand Paging

Oracle Tuxedo Message Queue (OTMQ)

Business Voice Services Call Waiting 3-Way Calling Dial Lock Call Forwarding Call Transfer Unistar

Installing And Programming The Digital Voice Announce Equipment On The DXP, DXP Plus, And FX Series Systems

Operating system Dr. Shroouq J.

Multics Technical Bulletin MTB-488. To: Distribution From: John J. Bongiovanni Date: 01/20/81 CPU Time Accounting

OPERATING SYSTEMS ASSIGNMENT 3 MEMORY MANAGEMENT

Yielding, General Switching. November Winter Term 2008/2009 Gerd Liefländer Universität Karlsruhe (TH), System Architecture Group

Virtual Memory. CSCI 315 Operating Systems Design Department of Computer Science

OPERATING SYSTEM SUPPORT (Part 1)

Virtual Memory. Virtual Memory. Demand Paging. valid-invalid bit. Virtual Memory Larger than Physical Memory

Templates what and why? Beware copying classes! Templates. A simple example:

CSE351 Spring 2010 Final Exam (9 June 2010)

Hakim Weatherspoon CS 3410 Computer Science Cornell University

Using the Cable Monitor Tool

Jump Tables A jump table is essentially a list of places in the code to jump to. This can be thought of in C as an array of function pointers. In Asse

Santa Barbara, California March In the discussions that follow, byte means 8 bits, with those eight bits numbered 0-7 from left to right.

Documentation for SCSI controller project Target module Hardware V1.0.1 / Firmware V0.0

Interrupts Peter Rounce - room 6.18

Operating Systems Comprehensive Exam. Spring Student ID # 3/16/2006

Interprocess Communication

DAT (cont d) Assume a page size of 256 bytes. physical addresses. Note: Virtual address (page #) is not stored, but is used as an index into the table

Contact Center Assurance Dashboards

CSE306 - Homework2 and Solutions

Page Replacement. 3/9/07 CSE 30341: Operating Systems Principles

Chapter 10: Virtual Memory. Background

Virtual Memory. CSCI 315 Operating Systems Design Department of Computer Science

Extensions to Barrelfish Asynchronous C

Desktop Management BIOS Specification

TPMC901-SW-95. QNX4 - Neutrino Device Driver. User Manual. The Embedded I/O Company. 6/4/2 Channel Extended CAN-Bus PMC

by I.-C. Lin, Dept. CS, NCTU. Textbook: Operating System Concepts 8ed CHAPTER 13: I/O SYSTEMS

Transcription:

Multics Technical Bulletin 'l'o: From: Distribution N. I. Morris Date: March 27, 1974 Subject: I/O Interfacer Design Specifications Design Details The I/O Interfacer has been designed mostly as described in M'l'B-028. There have been several additions, modifications, and limitations which have come about from the design reviews of MTB-028. These are discussed below: Hardcore!!!!.!. 2f I/O Interfacer. DIM's which connect many processes to a single I/O data path (e.g. the IMP DIM) may wish to reside in the hardcore ring, yet still make use of the features provided by the I/O Interfacer. Special hardcore attachment and allocation entries into the I/O Interfacer will be provided for this purpose. The wired workspace buff er segment must be provided by the caller in this case. The buffer may be of any length, but must start on a O mod 512 word boundary and be a multiple of 512 words in length. It may not cross a 256K word boundary. IOM interrupts will not cause a wakeup to be sent over an event channel. Instead, an interrupt-time call to the DIM's interrupt procedure will be made. This will allow fast and efficient processing of interrupts. Special Connect T & D programs will wish to be able to connect to the IOM with their own PCW, not one which has been manufactured by the I/O Interfacer. A connect entry will be provided for use by T & D programs. A user-supplied PCW will be used for connecting a channel when this entry is called. The I/O Interfacer will validate certain PCW fields and will reject special connect calls which might result in channel operation which is harmful to system integrity. Multics Project internal working documentation. Not to be reproduced or distributed outside the Multics Project.

Page 2 Additional Status Information Certain T & D programs wish to examine more detailed status than required by the average DIM. In particular, they wish to look at the LPW and LPW extension left in the IOM channel mailbox at the completion of an I/O operation. This information will be provided for use by such T & D programs. In addition to the 72-bit hardware status returned by the status entry to the I/O interfacer, the LPW and LPWX will also be returned. Status Queuing Status stored by the IOM for devices attached through the I/O Interfacer will be delivered to the I/O Interfacer at interrupt time by the iom manager. The I/O Interfacer will immediately send status to the interrupt procedure for a device attached via the hardcore attachment entry. IOM status for non-hardcore users of the I/O Interfacer will be placed in a queue and an ipc wakeup will be sent to the user. Calls to the status entry o? the I/O Interfacer will return IOM status words in the order they were placed in the queue. Information will also be provided on each status call to enable the user to determine if the status queue was empty. Marker Status Considerations A user's DCW list may contain more than one Instruction DCW, and each IDCW can generate marker status at the completion of that particular instruction. Although the I/O Interfacer will queue status for a device, the iom manager currently will not. Therefore, the iom manager ltdlst be able to receive and process a marker interrupt belore the next marker or terminate status event occurs for that device. If status events occur too rapidly, status will be overlaid by the IOM and will thus be lost. No estimate can be provided for a safe" time interval between status events. Therefore, marker status should not be used in cases where the user relies on the information contained in each individual status word (e.g. to compute the length of each tape record when reading a tape containing records of unknown length). Marker status may be used in cases where the user wishes to determine when the IOM passes a particular point in his DCW list. Eventually, the iom manager will be modified to allow the IOM to queue status. At that time, the danger of losing status will disappear.

Page 3 Page Control Modifications A new bit will be added to the active segment table entry (ASTE) for a segment. If this bit is on in a segment's ASTE, page control will be forced to place the pages of the segment in abs-usable memory.* Pages of the segment will be subject to paging as usual; they will be guaranteed to always reside in abs-usable core when paged in. Use of this bit by the I/O Interfacer will avoid the problems associated with the use of I/O buffers in core which can be dynamically removed from the Multics configuration. Workspace Buff er Allocation When the I/O Interfacer creates a buffer segment, it will turn on the entry hold switch in the segment's ASTE to prevent deactivation. Then, it will turn on the abs-usable core bit. Wnen the I/O Interfacer is called to connect a channel, it will wire the buffer segment before performing the connect. When the channel terminates, the buffer segment will be unwired. Note that this workspace buff er is used to contain both DCW lists and data. It is the user's responsibility to properly manage the contents of the buffer. Workspace Buffer 2.!!!. Limitation The initial version of the I/O Interfacer will support a maximum buffer size of 1024 words. Later versions will allow larger buffers. (Hardcore users of the I/O Interfacer may supply a larger buffer.) This means that the initial I/O Interfacer will be incapable of supporting Multics Standard Tapes except from a hardcore interface to the I/O Interfacer. The reason for the size limitation is to avoid consideration at this time of the problems of insuring that a multi-paged buffer resides in contiguous core. As described above, the buffer segment will be unwired except when I/O is taking place. * abs-usable memory consists of memory that is used for mailboxes ~ and I/O buffers. Hence, it is not subject to dynamic reconfiguration. It is usually that memory which is connected to the low-order system controller in the Multics configuration.

Page 4 I/O Interfacer Calling Sequences ioi_$assign This entry is called to make a device known to the I/O Interfacer. iom manager$iom assign is called to make the device known to the iom manager and to assign a device index. This device index is. returned to the caller. It will identify the device on all subsequent calls to the I/O Interfacer. The supplied event ID is used to perform an ipc wakeup when status is received for the device. - declare ioi $assign entry (fixed bin(l2), fixed bin(71), fixed bin(35)); char(*), call ioi_$assign (devx, devname, eventid, rcode); devx is the assigned device index. {output) devname is the name of the device being assigned. {Input) eventid rcode is an ipc event channel ID waking ' he process upon is a standard error code. to be used in I/O completion. (OUtput) ioi_$hardcore_assign This entry is equivalent to ioi $assign, except that it can be called only.by hardcore procedures. I/O completion interrupts will be passed on to an interrupt procedure instead of generating an ipc_ wakeup. declare ioi $hardcore assign entry (fixed cnar(*), ptr, fixed bin(35)); bin(l2), call ioi_$hardcore_assign (devx, devname, intp, rcode); intp is a pointer to the procedure to be called at interrupt time. The calling sequence to the interrupt procedure is described below under Interrupt Procedure Call. {Input)

Page 5 ioi_$unassign Tnis entry is called when a user is finished with a device. Any pending I/O is stopped and all buffer space is released. The iom_manager is called to unassign the device. devx declare ioi $unassign entry btn (35) >; call ioi_$unassign (devx, rcode); (fixed bin ( 12), is the previously-assigned device fixed index. ioi_$workspace Workspace for DCW lists and data is provided as a result of this call. Initially, a limitation of 1024 words will be placed on the size of the workspace buffer. segp seglen declare ioi $workspace entry (fixed bin(l2), ptr, fixed bin(l8), fixed bin(js)); call ioi_$workspace (devx, segp, seglen, rcode) ; is a pointer to the buffer segment to be used to contain DCW lists and data. (output) is the desired length of the buff er segment in words. ioi _$hardcore_ workspace This entry can be called only by hardcore ring procedures. It is used to identify a wired-down buffer space to the I/O Interfacer. The segment must be supplied by the caller and begin on a o mod 512 word boundary. It must be a multiple of 512 word in length and must not span a 256K word boundary. segp declare ioi $hardcore workspace entry (fixed bin(l2), ptr, fixed oin(l8), fixed bin(js)); call ioi $hardcore workspace - rcode) 1 - (devx, segp, seglen, is a pointer to the buffer segment.

Page 6 ioi_$set_timeout This entry establishes a time-out interval for a device. The clock is read each time the device is connected. If a terminate does not occur within the time-out interval, termination will be forced and the user notified. The set timeout entry may be called as many times as desired for a device. If it is never called, a default interval of 30 seconds will be used. declare ioi $set timeout entry (fixed bin(l2), fixed b1n(52f, fixed bin(35))1 call ioi_$set_timeout (devx, time, rcode); time is the time (in microseconds) to be given to allow a device to terminate after a connect. Entri: ioi_$connect The I/O Interfacer will construct a PCW in the hardcore ring to be used in connecting the channel. The PCW will contain a reset status command, and the continue bit will be set. This PCW will be essentially ignored when connecting PSIA channels, and it will act as a null operation when connecting common peripheral channels. The buffer segment will be wired-down (unless the device was attached through the hardcore assign entry) and a call will be made to the iom manager to- connect the channel in relative mode at the place specified by the supplied off set. declare ioi $connect entry (fixed b!n(l8), fixed bin(35)); call ioi_$connect (devx, offset, rcode); bin(l2), fixed off set is the off set into the buff er segment where the channel is to be connected to a DCW list. ioi_$connectycw This entry is identical to the connect entry except that word A of the PCW is supplied by the caller. It is copied into the hardcore ring and used to connect the channel. No modifications are made to the PCW fields, but the call will be rejected if invalid information is found in the PCW. When the buffer segment is wired, the absolute address of the base of the segment will be returned to the caller. This entry is intended

M'l'B-056 Page 7 specifically for use by T & D routines. It can also be used by channels which require a PCW to be supplied (e.g. the Console Channel Adapter). declare ioi $connect_pcw entry bfn (18), nit (36), bin(35)); (fixed bin ( 12), fixed bin(24), fixed fixed call ioi_$connect_pcw (devx, offset, pcwa, absaddr, rcode)j pew a is word A of the PCW to be used in connecting the channel. absaddr is the absolute address of the base of the buffer segment. (output). ioi_$get_status Tnis entry is called to pick up status from the status queue for a device. declare ioi $get status entry fixed oin(35)); (fixed bin(l2), ptr, call ioi_$get_status (devx, sp, rcode); declare 1 ioi stat based (sp) aligned, 2 completion fixed bin(l7), 2 level fixed bin(3), 2 offset fixed bin(l8), 2 padding fixed bin, 2 iom stat bit(72), 2 lpwoitc72); sp completion level is a pointer to the ioi stat structure. is a code indicating the state of the channel and whether or not status has been returned from the status queue. Possible values are as follows: O = No status in queue; channel not in operation. 1 = No status in queue; channel in operation. 2 = Status returned. 3 = Time-out occurred. is the interrupt level which caused the IOM status to be stored.

Page 8 1 = system fault status. 3 = terminate status. 5 = marker status. 7 = special status. off set iom stat lpw is the off set into the buffer segment of the last DCW processed. If completion is equal to 1, offset will be the location of the DCW currently being processed. is the IOM hardware status. is the LPW and LPWX from the channel's mailbox. Interrupt Procedure.!!!.. The interrupt procedure which is called using the intp supplied in the hardcore_assign entry is described below: declare interrupt_procedure entry (fixed bin(l2), ptr); call interrupt_procedure (devx, sp); Sp is a pointer to the ioi stat described above. structure (END)