Operating Systems 2015F Lecture 17
Video
The video from the lecture given on November 11, 2015 is now available.
Notes
Lecture 17
----------
Administration
* Solutions for Assignment 4 are up
* Assigment 5 goes up tonight, is due on November 18th. Solutions
will go up on the 19th.
* Test 2 is on November 20th
Project
Graphics
--------
Devices
- keyboards
- printers
- disks
- tapes
- text displays
- text displays + keyboards = terminals
Abstractions for devices:
- character devices
- non-cached data
- block devices
- cached data
But what about graphics?
How do printer graphics work?
- send raster data (bits/pixels), but at 600dpi+, that's a lot of bits
- fixed function commands (old inkjects)
- text
- simple geometric figures (circles, squares, lines)
- raster images
- create a program to generate the pages
e.g., postscript
Diversion: Kolmogorov complexity
- smallest program that encodes a bitstring
- random data means trivial program plus data
lpr = line printer
So what about the graphics display?
Key difference - interactivity
- how do I update the display, and do so quickly?
Display types
- text
- raster graphics (bitmapped screen)
- generally RAM mapped to screen
- e.g., Apple II's
- hardware accelerated graphics
- manipulating RAM (frame buffer)
- creating circles, lines, text, etc
- fixed function
- GPUs
- send a program to the "display" and have it run the program
- multiple programming languages
- old: display Postscript, used by NeXTStep
- later, display PDF (Quartz), used by Apple MacOS/iOS
- OpenGL (Silicon Graphics, SGI), for 3D graphics
- DirectX, Microsoft's alternative
What about shared displays? (between programs)
Need code to multiplex display between running programs
- sounds like an OS job right?
- could be in the kernel, but it is really complicated
- normal practice is to abstract display management into a userspace process
- kernel still does some low-level work
- the classic display manager on UNIX is the X Window System
- late 1980's
- predated by proprietary UNIX graphics managers, classic MacOS, EARLY
Windows, and Xerox PARC work
Xerox PARC
- company for making paper copies
- created the Palo Alto Research Center (PARC) to develop new technologies
- drew on work by Doug Engelbart (go watch the Mother of All Demos)
- AMAZINGLY successful at developing tech, not so good at commercializing it
- Graphical User Interfaces
- Ethernet
- Laser Printer
X Windows was developed with Distributed Computing in mind
- the X display manager was an "X Server" that served many "clients"
- clients could run anywhere on the network
- actually defined a network protocol for sharing displays, the
X Windows protocol, implemented by a low-level library, Xlib
X Windows is on the way out
- network protocol was designed for fixed-function graphics
- now we want to do compositing rather than manage windows
- overlay graphical elements, not manage programs running in windows
New generation of compositing managers, not network enabled
- Wayland
Fancy way of saying...
- the kernel don't do much with graphics
- there are graphics drivers, but they only have one customer,
the display manager
If you want to display something on the screen coming from the kernel...
- use a userspace helper process!!!
Processes like dbus relay data between processes
- dbus can be slow because it copies data in memory
- Android is faster because it uses a new kernel mechanism, Binder