Search results
Build device drivers Statically • A new device driver requires reboot OS Dynamically • Download a device driver without rebooting OS • Almost every modern OS has this capability How to down load device driver dynamically? Load drivers into kernel memory
Explore how software for device I/O is architected. Discuss OS considerations at multiple software layers. Investigate an example device driver. How do we enable interactions with so many varied devices? Abstraction: everything is a file! They can be created in hierarchies. Example: int ioctl(int fd, unsigned long request, ...);
" Large number of device drivers to support " Device drivers run in kernel mode and can crash systems! Goals of the OS " Provide a generic, consistent, convenient and reliable way to access I/O devices " As device-independent as possible " Don’t hurt the performance capability of the I/O system too much
What Does A Device Driver Do? Init, Open, Close, Read, Write, ... POSIX P1003.4 Asynchronous I/O interface functions: (available in Solaris, AIX, Tru64 Unix, Linux 2.6,...) Why Buffering in Kernel? Open(1,...) How much of OS code is device drivers? How to deal with address translation? Another example: blocked read w. DMA.
•Instructions are executed to transfer data from a device to memory (input) and from memory to a device (output) •Program must execute instructions to check for I/O ready/completion
Discuss I/O devices and how a computer connects to them. Understand two different methods of reading/writing device data. What is a bus anyways? How many wires in the bus? Single controller or multiple with arbitration? Half-duplex (one direction of communication at a time) or full-duplex? Ethernet is a bus too!
Example: Disk, audio devices. Layers of the I/O system and the main functions of each layer. one device type (e.g., mouse) one class of closely related devices (e.g., SCSI disk driver to handle multiple disks of different sizes and different speeds.). Control the device by issuing a sequence of commands.