[TUHS] ATC/OSDI'21 joint keynote: It's Time for Operating Systems to Rediscover Hardware (Timothy Roscoe)

Theodore Ts'o tytso at mit.edu
Fri Sep 17 12:48:32 AEST 2021


On Thu, Sep 16, 2021 at 06:10:11PM -0700, Jon Steinhart wrote:
> 
> You made a big assumption that I was suggesting tossing prior work and API
> specs which I wasn't.  Would you have wanted to have the 32 bit system call
> API frozen because it worked and not wanted 64 bit versions?  History shows
> plenty of good work going into compatibility when the underlying technology
> evolves.

Unfortunately, Implementing all of the old API specs is not easy if
you're starting from scratch as you create your new OS.  As David
wrote in an earlier paragraph:

> For a while, it was possible to have a “POSIX emulation”
> module/layer/whatever (was Mach the first to go this route?) as a
> shortcut to this but the breadth of the APIs needed to run,
> eg. Chrome/ium is again orders of magnitude more work than what was
> needed to port vi/emacs/rn/etc.

And this is the same observation Rob Pike made in his cri du coeur in
2000:

  * To be a viable computer system, one must honor a huge list of
    large, and often changing, standards: TCP/IP, HTTP, HTML, XML,
    CORBA, Unicode, POSIX, NFS, SMB, MIME, POP, IMAP, X, ...

  * A huge amount of work, but if you don't honor the standards,
    you're marginalized.

  * I estimate that 90-95% of the work in Plan 9 was directly or
    indirectly to honor externally imposed standards.

> Don't know how much time you spend with "the kids" these days.  I make it a
> point to do so when I can; SIGCOVID has cut into that unfortunately.  One
> can get a CS degree without ever taking an OS course at many respectable
> institutions.  Many are not so much making a choice as doing what they can
> which is inadequate in my opinion.
> 
> Was discussing this with someone the other day.  I'm glad that I have an
> engineering degree instead of a computer science degree.  And I'm also glad
> that I prevailed with one of my mentees to double major in EE and CS when
> he wanted to bail on the EE.  While it's a generalization, as an engineeer I
> was educated on how the universe worked - chemistry, physics, and so on.  It
> was up to me to figure out how to apply that knowledge - I wasn't taught how
> to lay out a circuit board or to use a CAD package or to write an app.  A
> modern CS degree at many institutions is vocational training in programming.
> It's not the same thing.

When I studied CS in the late 80's, MIT's EE/CS department required
all EE's and CS's to take 2 foundational CS classes, and 2
foundational EE classes.  This meant that CS folks needed to
understand how to build op-amps from transitors (6.002) and descrete
and continuous FFT's (6.003).  And EE folks needed to be able
understand Lambda calculus (6.001), and to build stack and general
register computers using 74XX TTL chips on a breadbroad (6.004).
Furthermore, CS students needed to take an OS course and/or a compiler
course, so by the time you graduated, you understood computers from a
"full stack" perspective --- from transitors, to AND/OR gates, to CPU
design, to compilers, to OS's, to systems issues around desining big
systems like Multics and the SABRE Airline Reservations systems.

These days, at MIT, one of things students are taught is how figure
out what an under-documented abstraction (implemented in Python),
partially by reading the code (but it's way too complex), so it's
mostly by deducing the abstraction by running experiments on the
Python Library code in question.  Given how complex computers have
gotten, that's probably more realistic anticipation of what students
will need once they graduate, but yeah, it does seem a bit like
"vocational training in programming".  And that's quite a change.

When I was an undergraduate, MIT was proud of the fact that they
didn't teach CS students the C language; after all, that would be
*way* too practical/vocational.  The assumption was after you learned
Scheme and CLU, you'd be able pick up other languages on the fly.
(And they didn't really *teach* Scheme per se; the first lecture in
6.001 was about the Lambda calculus, and if you couldn't figure out
Scheme syntax from the reference manual so you could do the first
problem set, well, the EE/CS department was heavily over-subscribed
anyway, and it was a good way of filtering out the less committed
undergraduates.  :-)

      	       	  	    	- Ted


More information about the TUHS mailing list