<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Operating_Systems_2015F_Lecture_17</id>
	<title>Operating Systems 2015F Lecture 17 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Operating_Systems_2015F_Lecture_17"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Operating_Systems_2015F_Lecture_17&amp;action=history"/>
	<updated>2026-05-01T04:35:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Operating_Systems_2015F_Lecture_17&amp;diff=20379&amp;oldid=prev</id>
		<title>Soma: Created page with &quot;==Video==  The video from the lecture given on November 11, 2015 [http://homeostasis.scs.carleton.ca/~soma/os-2015f/lectures/comp3000-2015f-lec17-11Nov2015.mp4 is now availabl...&quot;</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Operating_Systems_2015F_Lecture_17&amp;diff=20379&amp;oldid=prev"/>
		<updated>2015-11-11T20:21:02Z</updated>

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