Download IO Systems - monismith.info

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Burroughs MCP wikipedia , lookup

VS/9 wikipedia , lookup

Distributed operating system wikipedia , lookup

Security-focused operating system wikipedia , lookup

CP/M wikipedia , lookup

Unix security wikipedia , lookup

DNIX wikipedia , lookup

Spring (operating system) wikipedia , lookup

Transcript
I/O Systems
◦ Operating Systems
◦ CS550
Note:
 Based on Operating Systems Concepts by Silberschatz, Galvin, and
Gagne
Strongly recommended to read Sections 12.8 - 12.10
We may not have time to go over them, but there might be a question
about NFS on the final.
Blocking & Non-Blocking I/O
• Blocking - system call suspends application and moves application
to wait queue to wait for system call to complete. Simple and
easy to understand.
• Non-blocking I/O - example - receive keyboard and mouse input
while processing and displaying data on screen. Provided by some
operating systems.
- Does not stop application from running for a long period of time.
- Different from MPI non-blocking operations
Asynchronous system calls
Asynchronous system calls are another means of providing this
• Returns without waiting for I/O to finish
• I/O completed by setting a variable, triggering a signal or causing a SW
interrupt
• Difference from non-blocking I/O is that nonblocking returns whatever
data is available and asynchronous requests that I/O be completed at a
later time.
• Often used in modern operating systems Ex: disk and network I/O
• Both buffer I/O and return to the application.
• Buffers must be flushed, though
• OS usually has a time limit on how long data can stay in the buffer
• OS must also maintain data consistency
Example:
o"select" system call for TCP/IP sockets
ochecks if network I/O is possible by using a wait time of zero as
a parameter This is a non-blocking operation
o"read()" or "write()" must be used to perform data transfer
after calling "select()". These could be blocking, non-blocking,
or asynchronous.
Vectored I/O
 Allow one system call to perform multiple I/O ops in many locations
implemented via "readv" system call, also called "scatter-gather" methods
 read accepts a vector of many buffers and is able to read from all at once
or write to all at once, sometimes as an atomic operation.
 Can occur using vector fields on CPU or via system calls or within libraries
(MPI).
 Can improve read/write speeds
Kernel I/O
 Kernel provides I/O scheduling, buffering, spooling, reservation of devices,
and error checks
 Scheduling has been previously discussed (disk I/O methods like SSTF,
Elevator, etc.)
 A device status table is used by the kernel to assist with this scheduling
 We will discuss many of the other topics with respect to kernel I/O
I/O Buffers
1.
2.
3.
4.
5.
Buffer - stores data being transferred between two devices
Done for 3 reasons
Speed mismatch between producer and consumer
Adapt for device with different transfer sizes
To support copy semantics - guarantee of data consistency between
devices
I/O Caching
1. Cache - fast memory to hold copies of data
2. Difference between caches and buffers - cache holds a copy of data on
a fast storage device whereas buffer may hold the only existing copy of
data.
3. Sometimes memory may be used for both caching and buffering
Spooling
• Spool - a buffer that holds output for a device like a printer
• OS takes all data for a device like a printer and holds it in a spool (e.g. a
file)
• Once device finishes its job, OS gets next item from the spool and sends
it to the device
• Could limit devices to only have one open spool file, if they cannot
multiplex jobs
Error Handling
• OS must protect against HW and application errors when said HW/app
fails
• OS can compensate sometimes
• Ex: on failed "read()" retry "read()" or on failed "send()" issue "resend()"
• System calls typically return an error bit
• UNIX/Linux calls return "errno" which may be one of several hundred
error codes
• Some HW such as SCSI (pronounced "scuzzy") may provide very detailed
information such as a "sense-key" detailing the nature of the error, an
"additional sense code" giving the failure category, and even an
"additional sense code qualifier" with more details.
• These details may be provided in an error log by the OS
I/O Protection
• Require all I/O ops to be privileged instructions
• This will prevent user processes from disrupting the OS
• Protect memory-mapped and I/O memory port locations from user access,
too
• Kernel must provide a locking mechanism to allow only protected access to
these features
Kernel Data Structures
• Linux makes use of a file descriptor that points to a "per-process open-file table" This
is contained within user-process memory
• Within this table there are pointers to file-system records within the kernel memory
• Kernel memory contains:
• System-wide open-file table
• File-system records
• iNode pointer
• pointers to r/w functions, select, ioctl, and close
• Network/socket records
• Pointer to network information
• Pointer to r/w functions
• Pointers to select, ioctl, and close
• iNodes are file control blocks in linux - these contain ownership, permissions, and
location data for files
Performance
• I/O and Network traffic can cause high context switching rates
• Consider keyboard input provided over network.
• May wish to use "front end processors" for keyboard I/O and "I/O channel"
cpus on servers to deal with processing of this input
Performance (Contd..)
Offload this work from the main CPU and we do the following:
• -Reduce # of context switches
• -Reduce memory copying between device and application
• -Reduce interrupt frequency
• -Increase concurrency
• -Use hw commands for I/O processing
• -Have better balance of overall device performance, because more devices
may become idle when others become loaded
Next Class:
• Protection - internal OS problem
• Mechanisms/Policies
• Principles - principle of least privilege
• Domains - hw objects and sw objects
• Access Matrix
• Global table
• Access Lists
• Capability Lists
• Access control
• Language Based Protection
• Security