What is involved in input/output? How does the operating system manage I/O?



Similar documents
Chapter 11 I/O Management and Disk Scheduling

Computer Systems Structure Input/Output

Chapter 5 Busses, Ports and Connecting Peripherals

I/O. Input/Output. Types of devices. Interface. Computer hardware

Computer Performance. Topic 3. Contents. Prerequisite knowledge Before studying this topic you should be able to:

Have both hardware and software. Want to hide the details from the programmer (user).

Logical Operations. Control Unit. Contents. Arithmetic Operations. Objectives. The Central Processing Unit: Arithmetic / Logic Unit.

Chapter 8: Installing Linux The Complete Guide To Linux System Administration Modified by M. L. Malone, 11/05

CS 3530 Operating Systems. L02 OS Intro Part 1 Dr. Ken Hoganson

Network Attached Storage. Jinfeng Yang Oct/19/2015

CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study

Computer Organization & Architecture Lecture #19

1. Computer System Structure and Components

Linux Driver Devices. Why, When, Which, How?

Communicating with devices

Chapter 1 Computer System Overview

TELE 301 Lecture 7: Linux/Unix file

Chapter 6. Inside the System Unit. What You Will Learn... Computers Are Your Future. What You Will Learn... Describing Hardware Performance

COS 318: Operating Systems. I/O Device and Drivers. Input and Output. Definitions and General Method. Revisit Hardware

File System & Device Drive. Overview of Mass Storage Structure. Moving head Disk Mechanism. HDD Pictures 11/13/2014. CS341: Operating System

Operating System Structures

Devices and Device Controllers

Chapter 11 I/O Management and Disk Scheduling

Storage and File Systems. Chester Rebeiro IIT Madras

A+ Guide to Managing and Maintaining Your PC, 7e. Chapter 1 Introducing Hardware

Fall Lecture 1. Operating Systems: Configuration & Use CIS345. Introduction to Operating Systems. Mostafa Z. Ali. mzali@just.edu.

Machine Architecture and Number Systems. Major Computer Components. Schematic Diagram of a Computer. The CPU. The Bus. Main Memory.

Chapter 5 Cubix XP4 Blade Server

Operating System Fundamentals Robert Power & Robert Ford

CS 6290 I/O and Storage. Milos Prvulovic

11: I/O Device Management

Primary Memory. Input Units CPU (Central Processing Unit)

760 Veterans Circle, Warminster, PA Technical Proposal. Submitted by: ACT/Technico 760 Veterans Circle Warminster, PA

H ARDWARE C ONSIDERATIONS

Taurus - RAID. Dual-Bay Storage Enclosure for 3.5 Serial ATA Hard Drives. User Manual

Fastboot Techniques for x86 Architectures. Marcus Bortel Field Application Engineer QNX Software Systems

CPS104 Computer Organization and Programming Lecture 18: Input-Output. Robert Wagner

PARALLELS SERVER BARE METAL 5.0 README

COMPUTER HARDWARE. Input- Output and Communication Memory Systems

BrightStor ARCserve Backup for Linux

Chapter Introduction. Storage and Other I/O Topics. p. 570( 頁 585) Fig I/O devices can be characterized by. I/O bus connections

The Bus (PCI and PCI-Express)

Computer Components Study Guide. The Case or System Box

Survey of Filesystems for Embedded Linux. Presented by Gene Sally CELF

Read this before starting!

Lecture 2: Computer Hardware and Ports.

Module 1 Introduction to Information and Communication Technologies

CHAPTER 2: HARDWARE BASICS: INSIDE THE BOX

PARALLELS SERVER 4 BARE METAL README

Chapter 4 System Unit Components. Discovering Computers Your Interactive Guide to the Digital World

Chapter 1 Lesson 3 Hardware Elements in the Embedded Systems Chapter-1L03: "Embedded Systems - ", Raj Kamal, Publs.: McGraw-Hill Education

Management Challenge. Managing Hardware Assets. Central Processing Unit. What is a Computer System?

Computer Setup (F10) Utility Guide Evo Desktop Family Evo Workstation Family

CHAPTER 17: File Management

Chapter 02: Computer Organization. Lesson 04: Functional units and components in a computer organization Part 3 Bus Structures

Review from last time. CS 537 Lecture 3 OS Structure. OS structure. What you should learn from this lecture

Product Support Bulletin

Chapter 11: File System Implementation. Operating System Concepts with Java 8 th Edition

Kernel. What is an Operating System? Systems Software and Application Software. The core of an OS is called kernel, which. Module 9: Operating Systems

H ARDWARE C ONSIDERATIONS

EUCIP IT Administrator - Module 1 PC Hardware Syllabus Version 3.0

CSC 2405: Computer Systems II

WILLIAM PATERSON UNIVERSITY OF NEW JERSEY COLLEGE OF SCIENCE AND HEALTH Computer Science Department Course Outline

Guest PC. for Mac OS X. User Guide. Version 1.6. Copyright Lismore Software Systems, Ltd. All rights reserved.

Discovering Computers Living in a Digital World

Filesystems Performance in GNU/Linux Multi-Disk Data Storage

AcerAltos-1200_2CPU_PIII-866. Hardware Certification Report Vendor and Model Information

2.5" XTreme Files OS & Data Backup/Restore User Manual Please read the Instruction manual before using the XTreme Files (X Series) 1.

Chapter 10 Case Study 1: LINUX

Chapter 6, The Operating System Machine Level

Operating System Overview. Otto J. Anshus

Supported File Systems

File Systems for Flash Memories. Marcela Zuluaga Sebastian Isaza Dante Rodriguez

Chapter 3: Computer Hardware Components: CPU, Memory, and I/O

Computer Architecture Prof. Mainak Chaudhuri Department of Computer Science and Engineering Indian Institute of Technology, Kanpur

Agenda. Enterprise Application Performance Factors. Current form of Enterprise Applications. Factors to Application Performance.

Support for Storage Volumes Greater than 2TB Using Standard Operating System Functionality

IDE/ATA Interface. Objectives. IDE Interface. IDE Interface

TEST CHAPTERS 1 & 2 OPERATING SYSTEMS

SOFTWARE TECHNOLOGIES

Mother Board Component

Chapter Contents. Operating System Activities. Operating System Basics. Operating System Activities. Operating System Activities 25/03/2014

ADVANCED PROCESSOR ARCHITECTURES AND MEMORY ORGANISATION Lesson-17: Memory organisation, and types of memory

Module I-7410 Advanced Linux FS-11 Part1: Virtualization with KVM

Abstract. Microsoft Corporation Published: November 2011

is605 Dual-Bay Storage Enclosure for 3.5 Serial ATA Hard Drives FW400 + FW800 + USB2.0 Combo External RAID 0, 1 Subsystem User Manual

Converting Linux and Windows Physical and Virtual Machines to Oracle VM Virtual Machines. An Oracle Technical White Paper December 2008

PC Boot Considerations for Devices >8GB

2-Serial/1-Parallel Port PCI Adapter RC303 User Manual

Enterprise Erase LAN

Bitten by The NAS Bug

Lizy Kurian John Electrical and Computer Engineering Department, The University of Texas as Austin

LBNC and IBM Corporation Document: LBNC-Install.doc Date: Path: D:\Doc\EPFL\LNBC\LBNC-Install.doc Version: V1.0

How To Manage Your Volume On Linux (Evms) On A Windows Box (Amd64) On A Raspberry Powerbook (Amd32) On An Ubuntu Box (Aes) On Linux

MC514 Sistemas Operacionais: Teoria e Prática 1s2006. Gerenciamento de Entrada e Saída

TECHNOLOGY BRIEF. Compaq RAID on a Chip Technology EXECUTIVE SUMMARY CONTENTS

Computer Literacy. Hardware & Software Classification

Parallels Desktop for Mac

Serial Communications

COMPUTER ARCHITECTURE. Input/Output

Transcription:

Input/Output Input and Output Reference: Operating Systems, Fourth Edition, William Stallings, Chapters 11, 12 Nick Urbanik<nicku@nicku.org> Copyright Conditions: GNU FDL (seehttp://www.gnu.org/licenses/fdl.html) A computing department What is involved in input/output? How does the operating system manage I/O? I/O Enormous Variety OSSI Input/Output ver. 1.1 p. 1/50 OSSI Input/Output ver. 1.1 p. 2/50 Differences in I/O Devices Three main categories: Human readable: video displays, printers, keyboard, mouse Machine readable: disk, CDROM, tape drives, sensors, controllers, actuators Communications: network cards, modems Data rate: Speeds of I/O devices vary greatly: Fast: Gigabit Ethernet 10 9 bps, Slow: keyboard 10 2 bps Application: OS Policies and supporting utilities required depend on application. Disks holding files need file management support. Disks for swap require virtual memory hardware and software. Complexity of control: A printer has a simple control interface; a disk has a complex control interface. Unit of transfer: Can transfer a stream of bytes (e.g., keyboard), or large blocks of data (e.g., disk I/O) Data representation: Different data encoding schemes Error conditions: Type of errors, way they are reported vary greatly OSSI Input/Output ver. 1.1 p. 3/50 OSSI Input/Output ver. 1.1 p. 4/50

Techniques of I/O Programmed I/O: CPU gives I/O command; CPU polls in a loop waiting for I/O to complete (busy waiting) Interrupt-driven I/O: CPU gives I/O command, continues with some other work, then I/O module sends interrupt to CPU when it is finished. Direct memory access (DMA): A DMA controller moves data between memory and I/O device independently of CPU. CPU simply tells DMA controller where to move data, and how much, DMA controller does the rest. DMA controller interrupts CPU when finished. What is I/O? Involves transferring data to/from hardware, e.g. Printers, hard disks, mice, displays, cameras, networks,... Hardware often has support for data transfer independent of main CPU, e.g., DMA, CPU on I/O device. CPU will have some involvement Disk I/O is very important, and most effort in improving I/O in OS goes into improving disk I/O I/O (usually) limits execution OSSI Input/Output speed ver. 1.1 p. 5/50 PC architecture OSSI Input/Output ver. 1.1 p. 6/50 Most processes perform a burst of: CPU activity I/O activity CPU activity I/O activity... Even with maximum priority, most processes are limited by the I/O they perform. We say that most processes are I/O bound If a process performs much computation, but little I/O, it is said to be CPU bound Level 2 cache AGP CPU PCI Bridge SCSI USB ISA Bridge PCI bus Main memory mouse key board legacy ISA bus OSSI Input/Output ver. 1.1 p. 7/50 OSSI Input/Output ver. 1.1 p. 8/50

I/O ports Registers in I/O interface, often grouped into: Control registers Status registers Input register Output register Originally mostly connected to I/O bus Use onlyin,out machine instructions Memory mapped I/O ports more common now PCI cards use high addresses Memory mapped I/O I/O ports can be mapped into the same address space as RAM, ROM. Full range of normal instructions can be used to access I/O ports Fuller address space available I/O mapped I/O 1OSSI Input/Output ver. 1.1 p. 9/50 I/O mapped I/O 2OSSI Input/Output ver. 1.1 p. 10/50 CPU RAM ROM address bus data bus control bus i/o data I/O port I/O port I/O interface I/O port address The diagram may be just conceptual There is a logically separate data and address bus for I/O ports Some hardware provides a separate bus dedicated to I/O, e.g. PCI Limited special instructions perform input or output to port. On Intel architecture, only 2 16 different port addresses available for ISA devices OSSI Input/Output ver. 1.1 p. 11/50 OSSI Input/Output ver. 1.1 p. 12/50

I/O interface Examples of I/O interfaces An I/O interface is a hardware circuit between some I/O ports and their device controller Often connected to Programmable Interrupt controller through IRQ line Can have Custom I/O interface, or General purpose I/O interface Custom interfaces Specialised to a particular function Examples: Keyboard Graphic display Disk Network General interfaces Can plug in many types of device Examples: Parallel port Serial port USB port PCMCIA SCSI I/O controller OSSI Input/Output ver. 1.1 p. 13/50 Methods of I/O OSSI Input/Output ver. 1.1 p. 14/50 Hardware used by complex devices, e.g., disk controller Interprets high level commands received by interface through I/O ports Converts these to complex operations on the hardware Simpler devices have no device controller, e.g., PIC and PI/T There are three basic methods of I/O: DMA (Direct Memory Access) Interrupt-driven I/O polling OSSI Input/Output ver. 1.1 p. 15/50 OSSI Input/Output ver. 1.1 p. 16/50

DMA Used on PCI bus and ATA hard disks A special processor called a DMA controller (DMAC) takes over from CPU Transfers data rapidly, no need to fetch instructions Called a bus master because it takes over the buses from CPU PC has five ISA DMA channels, and also special DMA controllers built into PCI controller Interrupts PC supports 15 hardware interrupts Each interrupt is a hardware connection from I/O device to CPU Goes through a PI/T (Programmable interrupt controller) module Interrupts have different priorities Notice that I/O devices usually use interrupts What is an interrupt? Example OSSI Input/Output ver. 1.1 p. 17/50 Interrupt example: UART OSSI Input/Output 2ver. 1.1 p. 18/50 Use serial port (UART) as an example UART = Universal Asynchronous Receiver/Transmitter = an IC Receives/transmits characters one bit at a time. Frame each char with start/stop bit When character is finally received by UART: 1. UART sends hardware signal to CPU 2. CPU determines whether priority higher than current task if so, 3. CPU stores program counter (PC), some other registers on stack 4. Executes a subroutine called an ISR (interrupt Service Routine) that allows CPU to copy character(s) from UART to buffer in RAM 5. CPU restores PC, registers, continues from where it left off. OSSI Input/Output ver. 1.1 p. 19/50 OSSI Input/Output ver. 1.1 p. 20/50

I/O device has a register Polling CPU checks a flag in this register in a loop. CPU may be busy, unable to do other tasks, so waste time But simpler than other I/O methods Input/Output: how? In the old days, (MS-DOS), application programs would write directly to input/output hardware Examples: hardware = registers in UART, or DMAC, other registers in I/O device Problems: if program has bug, whole system hangs: unreliable What if two processes want the same resource? OSSI Input/Output ver. 1.1 p. 21/50 I/O: how now? 2 Advantages of device drivers OSSI Input/Output ver. 1.1 p. 22/50 Each hardware device has a device driver. High level command Device driver low level actions Application uses same high level commands with different hardware Provides modularity Reliability OS controls access to the hardware Modular system possible, e.g. Linux has dynamically loading modules Separate kernel from low-level details of hardware. In Linux, device drivers part of the kernel distribution. OSSI Input/Output ver. 1.1 p. 23/50 OSSI Input/Output ver. 1.1 p. 24/50

Installing a driver (e.g. for NIC) To install the driver for a 3Com 3c59x card in Linux, simply do: modprobe 3c59x To install it permanently foreth0, Edit/etc/modules.conf Add the line: alias eth0 3c59x Restart networking on that NIC withifup eth0 Do not reboot! Commandlsmod lists all installed drivers; drivers are usually loadable modules. Block and character devices Block devices include disks Provide random access Data transferred in fixed-sized blocks Character devices include serial devices, printers Transfer data in variable sized chunks Provide sequential access I/O Buffering 1OSSI Input/Output ver. 1.1 p. 25/50 I/O Buffering 2OSSI Input/Output ver. 1.1 p. 26/50 Buffering provides two benefits: Improves performance Allows process to be swapped out of RAM while OS performs I/O for the process If transfer I/O data directly to or from a slow device to a process, the memory page getting or providing the data must stay in RAM So OS could not completely swap out this process More efficient to use buffering: perform input transfer before the data is required perform output sometime later than when request is made. OSSI Input/Output ver. 1.1 p. 27/50 OSSI Input/Output ver. 1.1 p. 28/50

Single Buffer OS requests one block of data before it is needed read ahead. I/O device fills block Application finds data is there immediately it is required Double Buffer Use two memory buffers instead of one. While OS fills one buffer, user process empties the other. Very important for process that continuously provides data, such as data acquisition, since data may be lost with a single buffer, as the input cannot be paused while emptying the buffer ready for new data ase Study: OSSI Input/Output ver. 1.1 p. 29/50 DMA and Double Buffering 1 Case Study: OSSI Input/Output ver. 1.1 p. 30/50 DMA and Double Buffering 2 I wrote software some years ago to collect data, analyse the data, graph the data, and write the data to disk Used DMA on the ISA bus (A Data Translation DT2821 data acquisition card) The DT2821 used an interrupt and two DMA channels The device driver initialised the two DMA channels with this information: The direction of data transfer (read or write) The address of the DMA buffer The size of the DMA buffer The device driver enables the DMA controller The DMA controller transfers data from DT2821 to the DMA buffer When DMA buffer filled, DMAC raises an interrupt The Interrupt Service Routine (ISR) starts the other DMA channel, then re-programs the DMA controller that has just finished. OSSI Input/Output ver. 1.1 p. 31/50 OSSI Input/Output ver. 1.1 p. 32/50

Buffer in Process or Device Driver? Main Effects of Buffering Should we put the buffers in the process that uses the data or should we put it in the device driver? For most applications, should put buffers in device driver Allows process to be swapped out during I/O Avoids problems with special memory needs of special I/O devices: High speed DMA requires the buffer to be continuous memory, not pages scattered about in RAM Smooth out peaks of I/O demand Allow processes to be swapped in and out, regardless of state of I/O for the process Device files 1 OSSI Input/Output ver. 1.1 p. 33/50 Device files 2 OSSI Input/Output ver. 1.1 p. 34/50 In Linux and Unix, most I/O devices are accessed through a device file These are in the/dev directory. Why? Allows device access to be managed using file access permissions Provides a uniform access method to all I/O devices, similar to those used to access files Example: a temperature controller device file may give the current temperature when read it Example: the samewrite() system call can write data to an ordinary file or send it to a printer by writing to the/dev/lp0 device. There are two types of device files as mentioned in slide 26: block and character Each device file has two numbers: Major number Minor number These two numbers, and the type, uniquely identify a device and its device file. $ ls -l /dev/hd[a-d] brw-rw---- 1 root disk 3, 0 Oct 22 22:53 /dev/hda brw-rw---- 1 root disk 3, 64 Aug 31 2002 /dev/hdb brw-rw---- 1 root disk 22, 0 Aug 31 2002 /dev/hdc brw-rw---- 1 root disk 22, 64 Aug 31 2002 /dev/hdd Note: major number is on the left, minor number is on the right; for/dev/hdd, major is 22, minor is 64 OSSI Input/Output ver. 1.1 p. 35/50 OSSI Input/Output ver. 1.1 p. 36/50

Device files 3 How do I know what device numbers my hardware should have? see the filedevices.txt that is part of the kernel source code: $ rpm -ql kernel-doc grep /devices.txt /usr/share/doc/kernel-doc-2.4.18/devices.txt How do I create a device file if it is missing (for eaxample, on a rescue disk?) Use themknod command. See also the command/dev/makedev, which also has its manual page. Monitoring I/O performance Bothvmstat andprocinfo provide information about I/O. Alsosar -b iostat gives details of data transfers to/from each hard disk The commandhdparm -tt gives some basic performance parameters for your hard disks. hdparm andhdparm -i gives other info about your hard disks. netstat -i,ifconfig andip -statistics -statistics link give details of network performance Types of hard disk OSSI Input/Output ver. 1.1 p. 37/50 Getting info about I/O devices OSSI Input/Output ver. 1.1 p. 38/50 Currently have two choices: ATA133, or SCSI. ATA is cheaper, now reasonable performance compared with SCSI for a small number of disks. A cost effective method is to: add a number of IDE controllers to a server, Add one disk to each IDE channel Use software RAID for reliability & speed SCSI controller has processor to reduce load on main CPU, ATA adds load to main CPU Coming soon: serial ATA and serial SCSI, reducing size of cables, increasing data rate (early models are already on the market) Can list all PCI devices withlspci Can list all devices withlsdev List all modules that are currently loaded into kernel withlsmod The/proc file system contains all you ever wanted to know about your hardware and OS See which hard disks are the busiest withiostat OSSI Input/Output ver. 1.1 p. 39/50 OSSI Input/Output ver. 1.1 p. 40/50

Virtual Filesystem Linux supports many file systems: Filesystems for Linux: Ext2, Ext3, ReiserFS Filesystems for other Unixs: SYSV, UFS, MINIX, Veritas VxFS Microsoft filesystems: MS-DOS, VFAT, NTFS Filesystems for CDs and DVDs: ISO9660, Universal Disk Format (UDF) HPFS (OS2), HFS (Apple), AFFS (Amiga), ADFS (Acorn) Journalling filesystems from elsewhere: JFS from IBM, XFS from SGI Same commands and system calls work with all! How does it all work? Virtual Filesystem (VFS) 2 VFS is a kernel software layer handles all system calls to a file system Provides a common interface to all filesystems Also handles network filesystems, including NFS, SMB (used in Microsoft networking), NCP (Novell) Also handles special or virtual file systems, such as the/proc filesystem, and supports block devices such as/dev/loop0 which allow mounting a file as if it were a disk partition. Volume Managers OSSI Input/Output ver. 1.1 p. 41/50 Redundant Array of Independent OSSI Input/Output Disks ver. 1.1 p. 42/50 A Volume Manager is a software layer built into an OS that allows logical disk partitions to be created from physical disks. Allows logical partitions to be dynamically resized (without rebooting the computer) Very useful for large systems with rapidly changing data Examples: Logical Volume Manager (LVM) from Sistina on Linux, a standard part of the kernel Can be built on top of software RAID, a good choice Microsoft Dynamic Disks (seehttp://www.winnetmag.com/ WindowsServer2003/Index.cfm?ArticleID=27085) RAID Allows disks or disk partitions to be combined to appear to be one disk Aims: Performance Increase because data can be transferred from many disks in parallel Redundancy RAID above level 0 allows one or more disks to fail without losing any data: system continues to be available Can be implemented in hardware or software Software RAID earned a bad name on Microsoft OS, but reliable and efficient on Linux OSSI Input/Output ver. 1.1 p. 43/50 OSSI Input/Output ver. 1.1 p. 44/50

Example: RAID and LVM on Linux Server Example Use of RAID and LVM 2 Have two IDE controller cards, two IDE interfaces on motherboard Five 80 GB hard disks, one on each of the six IDE interfaces, set as master, Partition all hard disks the same way: boot 500MB 3GB 76.5GB swap root LVM hda hdc hde hdg hdi Boot partitions, RAID 1, 500MB, 500MB total Partitions for swap, RAID 5, 500 MB each, 1GB, total Partitions for root, RAID 5, 3GB each, 12GB total Example Use of OSSI Input/Output ver. 1.1 p. 45/50 RAID and LVM 3 Partitions for LVM, RAID 5, 76.5GB each, 306GB total Example Use of OSSI Input/Output ver. 1.1 p. 46/50 RAID and LVM 4 Combine hda1, hdc1 into RAID 1, specify as the/boot partition: md0 installgrub into Master Boot Record of bothhda andhdc so can still boot if either fails Combinehde1,hdg1,hdi1 into RAID 5 for the swap partition: md1 Combinehda2,hdc2,hde2,hdg2,hdi2 into RAID 5 for the root partition/: md2 Combinehda3,hdc3,hde3,hdg3,hdi3 into RAID 5 for large flexible LVM storage for/home and/var: md3 Runpvcreate on/dev/md3 to initialise the disks ready to hold LVM information Usevgcreate to create a logical volume groupmain Usevgextend to add the RAID devicemd3 to the volume group Uselvcreate to create two logical volumes, one for /var and the other for/home. Format the two logical volumes and start using them. In the future, if/var is full and/home is not as full, then can dynamically resize both partitions, removing storage from the/home logical volume, and add to the /var logical volume, without needing to reboot or shut down the server OSSI Input/Output ver. 1.1 p. 47/50 OSSI Input/Output ver. 1.1 p. 48/50

Summary of RAID, Volume Managers The use of RAID provides two benefits: Higher performance (in example, because can read or write to five disks at once through five separate IDE interfaces) Redundancy: if any disk fails, server can continue to operate normally, (with reduced disk performance), without data loss, until disk is replaced. The use of a volume manager, such as LVM on top of RAID, adds the benefit of flexibility, allowing system administrator to resize logical volumes, add new disks, re-arrange storage without disrupting service to the customers References Daniel P. Bovet and Marco Cesati, Understanding the Linux Kernel, Second Edition, O Reilly, Dec 2002, Chapter 13: Managing I/O Devices. William Stallings, Operating Systems, Fourth Edition, Prentice Hall, 2001, Chapters 11 and 12. Andrew S. Tanenbaum, Modern Operating Systems, Prentice Hall, 2001, Chapter 5, Input/Output. Gary J. Nutt, Operating Systems: A Modern Perspective, 2nd Edition, Lab Update, Addison-Wesley, 2002, Chapter 5, Device Management. LVM HOWTO, http://tldp.org/howto/lvm-howto/ OSSI Input/Output ver. 1.1 p. 49/50 OSSI Input/Output ver. 1.1 p. 50/50