SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
CS 167: Operating Systems




CS 167              I–1   Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                      I–1
Workload: 167

         • Write five easy-to-moderate-to-difficult
           programs (40%)
              – shell
              – multithreaded programming/high-performance
                I/O
              – user-level threads package
              – system calls and high-level file system
              – low-level file system
         •   Hand in five short homeworks (20%)
         •   One in-class midterm exam (10%)
         •   Final exam (30%)
         •   See http://www.cs.brown.edu/courses/cs167/docs/syllabus.167.htm
CS 167                                       I–2          Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                                      I–2
Workload: 169

         • One large program with a number of
           milestones, resulting in a working operating
           system
             – Kernel 1
             – Kernel 2
             – Virtual file system
             – S5 file system
             – Virtual memory
         • See http://www.cs.brown.edu/courses/cs167/docs/syllabus.169.htm




CS 167                                      I–3         Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                                    I–3
Skills Needed

         • Ability to write and debug largish programs in
           C with POSIX threads
            – CS 36
            – or CS32 with
                - C/C++ minicourse (this week)
                - POSIX threads lectures/labs (next week)
         • Basic computer architecture
            – CS 31




CS 167                           I–4      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                      I–4
What are Operating Systems?

         • Possible definitions:
            – the code that {Microsoft, Sun, Apple, Linus}
              provides
            – the code that you didn’t write
            – the code that runs in privileged mode
            – the code that makes things work
            – the code that makes things crash
            – etc.




CS 167                             I–5     Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                       I–5
Operating Systems

                       • Abstraction
                          – providing an “appropriate” interface for
                            applications
                       • Concerns
                          – performance
                              - time and space
                          – sharing and resource management
                          – failure tolerance
                          – security
                          – marketability



              CS 167                            I–6       Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  The purpose of an operating system is to make the underlying hardware useful. Rather than
forcing programmers to deal with the complicated details of such hardware, more convenient
idealized abstractions of the hardware are devised, implemented, and made available, replacing
the direct interface to the hardware. Thus, as discussed in upcoming slides, we deal with files
rather than disks, virtual memory rather than real memory, threads rather than processors, etc.
  However, in operating systems, even more so than in “ordinary” applications we must cope with
the concerns listed in the slide. Performance is a huge issue. Some portions of the OS might be
invoked often, say thousands of times per second. Reducing the number of instructions used is
extremely important; we must also be concerned with how effectively the code uses the
processor’s caches. Use of memory, both primary and secondary, is also important. If too much
memory is used, the operating system might not “fit” in the available resources. Furthermore, too
much memory use may require shuffling of code and data between primary and secondary
storage, thus wasting time.
  We must also provide various forms of sharing: not only must different applications coexist on a
computer at once, but different users might be using the same computer at the same time. Our
operating system must be tolerant of failures: bugs in one application must not bring down
another. Problems with hardware should not cause catastrophic failure.
  Security is increasingly a problem. We must protect the operating system, the applications
running on it, and data maintained by it, from attack. (This is clearly not a solved problem!)
  Finally, for an OS to be successful, people must want to use it. It’s one thing to build an
operating system that does an excellent job dealing with everything mentioned above, but if none
of our existing applications can be made to run on it and we have to write everything from
scratch, no one is going to want to use it.




                                                                                                                      I–6
Hardware

                                                                r
                                                             so
                                                          es
                                                        oc
                                                      Pr
                 Network




                                  Memory
                                                                 or
                                                               ss
                                                          ro ce
                                                      P



                           Disk          Disk




              CS 167                            I–7               Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  As we’ve just mentioned, one of the major purposes of an operating system is to give its users
an easy-to-use abstraction of a fairly complicated reality. A typical computer system consists of a
number of disk drives (which the operating system accesses through specialized hardware called
controllers), a network interface (also accessed via a controller), some sort of
display/keyboard/mouse combination, and some amount of primary storage.




                                                                                                                              I–7
Abstractions

                       • Hardware                    • Operating system
                          – disks                       – files
                          – memory                      – programs
                          – processors                  – threads of control
                          – network                     – communication
                          – monitor                     – windows,
                          – keyboard                      graphics
                          – mouse                       – input
                                                        – locator



              CS 167                           I–8         Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  The typical user has no desire to deal with the complexities of the underlying hardware,
preferring instead to deal with abstractions and depend upon the operating system to map these
abstractions into reality. For example, the user may have information that needs to be accessed
and perhaps updated over long periods of time. While such information may well be stored on
disk, the user probably doesn’t care how.
  The user’s computation will certainly use temporary storage that need not exist longer than the
computation, but should be quickly accessible during the lifetime of the computation. The user’s
computation will need a “compute engine” to carry out the computation; in some cases it will need
multiple compute engines. Finally, the user may need to communicate with other users or
computations on other computers, and may need to access information stored elsewhere.
  Designing the most suitable abstractions for an operating system to present to its users is a
subject of continuing research. Soon we examine the abstractions provided by a particular
operating system, Unix, that is in widespread use on computer workstations and larger machines.
Later in the course we discuss alternate abstractions.
  Unix provides a relatively simple collection of abstractions (though many argue that Unix has
become much too complicated). In particular, permanent storage is represented as files. We think
of temporary storage as being built from the abstraction of primary memory, known as virtual
memory. Each computation has its own private virtual memory—computations are known in Unix
as processes. Traditionally, each process is embodied as a single abstract compute engine, but
more recently the concept of multithreaded processes has been introduced. In this model, each
process may contain multiple compute engines, or threads, each capable of independent
computation. Communication is not a very well developed concept in Unix systems. The general
idea is that independent processes can transfer data back and forth among one another. We
explore this idea and newer approaches to handling communication in the last section of the
course.




                                                                                                                       I–8
Files


                                                                     Memory




                                                                Disk                    Disk




              CS 167                            I–9       Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  File systems provide a simple abstraction of permanent storage, i.e., storage that doesn’t go
away when your program terminates or you shut down the computer. A user accesses
information, represented as files, and the operating system is responsible for retrieving and
storing this information. We expect files to last a long time and we associate names (as opposed to
addresses) with files.




                                                                                                                      I–9
Issues

                     • Naming
                     • Allocating space on disk (permanent storage)
                        – organized for fast access
                        – minimize waste
                     • Shuffling data between disk and memory
                       (high-speed temporary storage)
                     • Coping with crashes




            CS 167                           I–10      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




Among the issues in implementing the notion of files are those mentioned above.




                                                                                                                   I–10
Programs

                                                                   Memory

                      Data


                      Code                                  Disk                      Disk



                                                                          r                          r
                                                                       so                         so
                                                                    es                         es
                                                             P   roc                    P   roc




             CS 167                           I–11      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  A program is an abstraction that we view as consisting of data and code. Somehow we’ve got to
build programs from the pieces of hardware available to us, in particular memory, disks, and
processors.




                                                                                                                    I–11
Memory
                                     Sharing (1)

                                          Program 1


                                          Program 2


                                          Program 3


                                          Operating
                                           System

                                           Memory


             CS 167                           I–12      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  So that multiple programs, each with their own private libraries and each accessing shared
libraries, can coexist without destroying each other, we must have some means of protecting one
program’s memory from another’s. Furthermore, we must protect the operating system from being
inadvertently or maliciously attacked by programs.
  Using various hardware features, each program is prevented from accessing private portions of
other programs. Shared portions can be accessed, but only in a read-only fashion. When the
operating system is executing, it can access the user programs. But when user programs are
executing, they can access the operating system only to do prescribed requests.




                                                                                                                    I–12
Memory
                                    Sharing (2)
                      Program 1




                      Program 2




                      Program 3                                      Memory



             CS 167                         I–13      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  Another memory-sharing issue arises when the programs that are to share memory are too big
to fit in all at once (or perhaps even individually).




                                                                                                                  I–13
Virtual Memory
                   Program 1



                                                                             Memory
                   Program 2

                                                                        Disk                    Disk



                   Program 3



              CS 167                           I–14      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  One popular approach for dealing with memory-protection and -fitting issues is to employ
virtual memory. A program executes in a “virtual address space,” which is implemented partially
on real memory and partially on disks. A facility supported as a joint effort of hardware and the
operating-system kernel “maps” each program’s references of virtual memory into real memory
and disk space. Since the operating system controls this mapping, it determines who can access
what.




                                                                                                                     I–14
History of Virtual Memory

                      • 1961: Atlas computer, University of
                        Manchester, UK
                      • 1962: Burroughs B5000
                      • 1972: IBM OS/370
                      • 1979: 3 BSD Unix, UC Berkeley
                      • 1993: Microsoft Windows NT 3.1
                      • 2000: Apple Macintosh OS X




             CS 167                         I–15     Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  The slide lists milestones in the history of virtual memory, from its first instance on
Manchester’s Atlas computer in 1961 (when a working prototype was completed), to Apple’s
recent announcement of VM support for the Macintosh.




                                                                                                                 I–15
Apple Invents VM …

                 Welcome to the Brave New World of Crash-Resistant
                 Computing
                 Let’s start with the notion of protected memory, and why
                 it’s so important. … One of the ways an operating
                 system ensures reliability is by protecting applications
                 through a mechanism called protected memory
                 (essentially walling off applications from each other). …
                 Along with the protected memory mechanism, Darwin
                 provides a super-efficient virtual memory manager to
                 handle that protected memory space. So you no longer
                 have to worry about how much memory an application
                 like Photoshop needs to open large files. …
                          — Apple website, September 2000
              CS 167                           I–16       Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  Apple is the latest of a long line of companies to “discover” virtual memory. The passage quoted
in the slide is from Apple’s web page and is copyright (by Apple) 2000. “Darwin” was the code
name of the kernel of Apple’s OS X operating system.




                                                                                                                      I–16
Concurrency

                                                r                              r                                             r
                                              so                             so                                            so
                                         es                             es                                            es
                                 P   roc                        P   roc                                       P   roc
                              al                             al                                            al
                       Vi rtu                         Vi rtu                                        Vi rtu




                                                                        or
                                                                   ss
                                                             o   ce
                                                           Pr

              CS 167                                        I–17                   Copyright © 2006 Thomas W. Doeppner. All rights reserved.




 Computers are typically multiplexed among a number of users. Multiplexing is a concept that is
well over thirty years old—many users share a computer by dividing its processing time among
one another. It’s often known as multitasking.
 Another equally old, if not older, concept is the notion of concurrency within a computation.
This is the ability of one computation to utilize multiple logical “compute engines,” or threads.
Concurrency means that multiple threads are in progress at one time; on a computer that
employs only a single real processor, the execution of these threads is multiplexed over time.
 Why do this?
     • Optimize the use of computers
          — programs typically compute, perform I/O, compute, perform I/O …
          — when one program is performing I/O, another should be computing
     • Optimize the use of people
          — want several applications active at once
                 – interactive applications
                         · editing
                         · drawing
                 – background applications
                         · mail monitor
                         · printing
                         · file transfer




                                                                                                                                               I–17
Parallelism

                                               r                              r                                             r
                                             so                             so                                            so
                                        es                             es                                            es
                                P   roc                        P   roc                                       P   roc
                             al                             al                                            al
                      Vi rtu                         Vi rtu                                        Vi rtu




                                      or                               or                                            or
                                 ss                               ss                                           ss
                           o   ce                           o   ce                                       o   ce
                         Pr                               Pr                                           Pr

             CS 167                                        I–18                   Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  Parallelism means that multiple threads are executing simultaneously: parallelism requires
multiple processors.
  In this course we make this distinction between parallelism and concurrency; note, however,
that not everyone distinguishes between these terms in this way.




                                                                                                                                              I–18
History of Concurrency

                       • Multiprogramming
                         – 1961, 1962: Atlas, B5000
                         – 1965: OS/360 MFT, MVT
                       • Timesharing
                         – 1961: CTSS (developed by MIT for IBM 7094);
                           BBN time-sharing system for DEC PDP-1
                         – mid 60s
                             - Dartmouth Timesharing System (DTSS)
                             - TOPS-10 (DEC)
                         – late 60s
                             - Multics (MIT, GE, Bell Labs)
                             - Unix (Bell Labs)
              CS 167                            I–19      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  Multiprogramming refers to the notion of having multiple programs active at the same time so
that when the current program can no longer run (for example because it’s blocked waiting for
I/O), another is available to run. Timesharing is an extension of multiprogramming in which the
execution of the active programs is time-sliced: each program runs for a short period of time, then
another is run. A good web site with useful information on Multics is http://www.multicians.org/.
A brief description of CTSS can be found at http://www.multicians.org/thvv/7094.html.




                                                                                                                      I–19
Another Apple Innovation …

                  With Preemptive Multitasking, Everything Happens
                  at Once
                  In today’s fast-paced world, you rarely get to do one
                  thing at a time. Even in the middle of transforming, say,
                  a Photoshop file, you may need to find a crucial piece of
                  information on the web while you compose an urgent
                  reply to a customer. What you need is a computer that
                  can handle several different tasks at once, giving
                  priority to your primary application, but still crunching
                  away at other jobs in the background. …
                  Darwin makes this possible by incorporating a powerful
                  concept called preemptive multitasking. …
                          — ibid.
              CS 167                          I–20      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  So what’s preemptive multitasking? It’s multiprogramming in which one program can preempt
the execution of another. In other words, it’s a necessary ingredient of timesharing, the notion
that was first implemented in the 1960s.
  (Note that Microsoft “innovated” this idea in 1993 with their introduction of Windows NT.)




                                                                                                                    I–20
Brief History of
                                 Operating Systems
                       • Hardware technology
                          – first generation: vacuum tubes
                          – second generation: transistors
                          – third generation: integrated circuits
                          – fourth generation: graphics, personal
                            computers, networking
                       • OS architecture
                          – monolithic operating systems
                          – microkernels
                          – personal-computer operating systems
                          – network operating systems

              CS 167                           I–21      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  In the next several slides we look at the history of operating systems, showing that the design
for the CS169 final project is the culmination of years of operating-system research and
development. We look first at the history of hardware developments and how they affected OS
design, and then at various architectures of operating systems.




                                                                                                                     I–21
First-Generation Hardware

                      • “What you write is all you’ve got”
                         – no operating system
                         – no libraries
                         – no compilers
                         – no assemblers
                         – no nothing




             CS 167                           I–22      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  The earliest electronic computers were, by our standards, amazingly primitive. The hardware
was characterized by the use of vacuum tubes. The software was characterized by its paucity.
Programmers supplied all software that they were to use. Furthermore, this software was written
directly in “machine language” and input to the computer via awkward means, such as paper
tape.




                                                                                                                    I–22
IBM 701




              CS 167                           I–23       Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  The IBM 701 is, reportedly, the first computer to have an operating system (designed by General
Motors (not IBM) and called the Input/Output System). The man on the right is computer pioneer
Herb Grosch, in whose hotel room the notion of an operating system was hashed out in 1953. He
later served as president of ACM. The man on the left is an actor who later served as president of
a large country. The picture is from http://www.fwtunesco.org/musi/museu8.html (the link no
longer works), the web site of FWT UNESCO Computer Museum, Padova, Italy, and was taken in
1956.




                                                                                                                      I–23
Second-Generation Hardware

                       •   Batch systems
                       •   Concurrent I/O and computation
                       •   Compilers
                       •   Assemblers
                       •   Libraries




              CS 167                           I–24      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  The second generation of computer hardware is characterized by the use of transistors.
Improvements in hardware came along with major improvements in software—compilers,
assemblers, and loaders were invented. Libraries were developed and linkers were made available
to ease their use. The early operating systems were known as “batch” systems—a collection, or
batch, of jobs was submitted and their output was written to magnetic tape. After the batch was
completed, the operator would take the tape to another computer that drove a printer and start
the next batch. Thus while one batch was running, the results of the previous batch were printed.
  Also at this time the use of I/O devices such as disks, tapes, and drums became more
advanced. In early systems, all activity on a machine ceased while the computation was waiting
for an I/O operation to complete. In the second generation, the use of separate hardware to
manage I/O and the concept of interrupts made it possible for a program to continue to compute
while I/O was being performed. The difficulty of managing such concurrency helped to spur the
development of operating systems.




                                                                                                                     I–24
IBM 7094




              CS 167                             I–25      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  The picture, from http://www.ecs.csun.edu/~dxs/history/histcomp.html, is of an IBM 7094, a midrange
second-generation scientific computer. Among its features were core memory, a disk drive, and a
subroutine-call instruction.




                                                                                                                       I–25
Early Third-Generation
                                         Hardware
                       • Multiprogramming
                       • Time sharing

                       • Big operating systems
                            – OS/360
                            – Multics
                       •   Little operating systems

                            – Unix




              CS 167                                  I–26   Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  In the third generation, characterized by the use of (small-scale) integrated circuits, OS
technology begins to resemble what we have today. Large machines were multiprogrammed,
allowing several jobs to run concurrently. This made security very important, since jobs now had
to be protected from one another. Another important development was time sharing, in which a
programmer could actually interact with a running program. This was considered a rather
expensive frill at first, but has since become the dominant style of computing.
  The most commercially important OS of the day was IBM’s OS/360. This system was based on
the radical concept that a whole range of hardware, from small, slow machines to huge, fast
machines, could all run the same operating system. Unfortunately, it didn’t work exactly as
planned, and OS/360 had to be split into a number of different versions, each targeted to a
particular class of machines. The largest of these OSs, known as OS/MVT, is the forerunner of
the OSs run on large data-processing machines today.
  The most interesting OS of the day was Multics, which was initially a joint project of GE, MIT,
and Bell Laboratories. The latter two eventually dropped out and GE’s computer business was
bought by Honeywell, but under the Honeywell nameplate this OS survived into the ’80s. Many of
the concepts that have just now become commercially viable were pioneered in the Multics
system.
  The dark-horse operating system was Unix, which was developed at Bell Labs after it dropped
out of the Multics project. It gradually became popular among researchers at Bell Labs. Bell Labs
made the radical decision to release of the source code of this OS to universities, and it soon
became very popular in a large number of computer science departments and a few enlightened
industrial organizations. Unix ran principally on DEC PDP-11s, but was ported to a few other
machines and gained the reputation of being the first portable operating system (another very
radical concept for software that had traditionally been written in assembler language and took
advantage of every arcane feature a machine had to offer). A group at the University of California
at Berkeley took Bell Lab’s port of Unix to DEC’s new architecture, the VAX, and embellished it
considerably. This version of Unix, known as BSD (Berkeley Software Distribution), or simply
Berkeley Unix, was adopted by a large number of academic CS departments around the world.




                                                                                                                         I–26
$

         • If you had $10,000 to invest on January 1,
           1962, would you have put it in IBM?




CS 167                          I–27    Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                    I–27
Later Third-Generation
                                  Hardware
                    • Minicomputers
                      – proliferation of platforms and OSes
                          - Digital PDP-11
                              • RSX-11, RSTS-11, RT-11, etc.
                          - Data General Nova, Eclipse
                              • RDOS, SOS, AOS
                          - Hewlett Packard 2100, 3000
                              • BCS, DOS, MPE, MTS
                      – see http://www.cs.wvu.edu/~jdm/classes/cs258/OScat/minis.html




           CS 167                                   I–28          Copyright © 2006 Thomas W. Doeppner. All rights reserved.




The ’70s saw an amazing number of minicomputers.




                                                                                                                              I–28
$$

         • It’s now January 1, 1970; your stake in IBM is
           worth $22,557




CS 167                          I–29     Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                     I–29
PDP-11




              CS 167                            I–30      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  The PDP-11 shown in the left half of the picture (a relatively small configuration) is around 6-
feet tall, making one wonder about the appellation “mini”! On the right is a closeup of the console
of a model 45 (an early high-end model) and a closeup of the backplane of a model 50 (a later,
midrange model).




                                                                                                                      I–30
Late 70s, Early 80s

                       • Super minicomputers
                         – DEC VAX-11, etc.
                       • Workstations
                         – Apollo, Sun
                       • Personal computers
                         – MITS Altair, Apple II, TRS-80, IBM PC, etc.
                       • Xerox PARC
                         – Alto, Dorado, etc.




              CS 167                            I–31     Copyright © 2006 Thomas W. Doeppner. All rights reserved.




   During the late ’70s and early ’80s, the minicomputer manufacturers (particularly DEC) thrived
with big sales of high-end minicomputers. The early 80s saw the beginning of workstation-class
computers, with first the establishment of Apollo, then Sun.
   Meanwhile, computer hobbyists got into the act with the development of the MITS Altair (the
first affordable piece of hardware that you could reasonably call a computer; it came complete
with 256 8-bit words of memory). Steve Wozniak and Steve Jobs developed the successful Apple II
computer. Then IBM galvanized the entire industry with the introduction of the IBM PC in the
early ’80s.
   Perhaps the most important work was being done at Xerox PARC, where the whole notion of
computer workstations and personal computers was invented. (This work actually started in the
early-to-mid ’70s.)




                                                                                                                     I–31
¢¢

         • It’s now January 1, 1975; your stake in IBM
           has gone down to $15,323




CS 167                          I–32    Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                    I–32
VAX-11




                       • Two operating systems
                         – VMS (sort of the predecessor of Windows XP)
                         – Berkeley Unix (definitely the predecessor of
                           Solaris, Linux, and FreeBSD)



              CS 167                           I–33      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  The Digital VAX-11 (a model 780, the first, is shown in the picture) was the most successful of
the superminis. While Digital developed, marketed, and pushed their VMS operating system,
Unix, as modified and developed by a group at UC Berkeley, became extremely popular as well.




                                                                                                                     I–33
Apollo




             CS 167                         I–34     Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  The CS Department at Brown was one of Apollo’s first customers (receiving the 5th and 6th
computers delivered to customers).




                                                                                                                 I–34
Apple II




                      • See http://apple2history.org/

             CS 167                           I–35      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




 The Apple II was a very successful hobbyist computer that eventually made it into the business
world, as well as into the educational world.




                                                                                                                    I–35
PC Operating Systems

                       • Apple II
                          – DOS 3.x
                          – SOS, ProDOS
                       • Z80, 8080
                          – CPM
                             - see http://en.wikipedia.org/wiki/Gary_Kildall
                       • 8086
                          – MS-DOS
                             - See, for example,
                               http://en.wikipedia.org/wiki/MS-DOS



              CS 167                           I–36       Copyright © 2006 Thomas W. Doeppner. All rights reserved.




 The early history of PC operating systems is controversial, interesting, entertaining, etc. Check
out the links given in the slide.




                                                                                                                      I–36
$$$

         • It’s now January 1, 1980; your IBM stake is
           worth $27,493




CS 167                          I–37    Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                    I–37
Further PC Development

         • Apple introduces the Apple III
            – thud …
         • Microsoft, selling software, starts doing better
           in the PC market than IBM, selling hardware
            – $$$$$$$$$$$$$$$
         • Apple introduces the Lisa …
            – thud …
         • Apple introduces the Macintosh

            –BOINNNG!!!

CS 167                           I–38       Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                        I–38
$$$$

         • It’s January 1, 1985; your IBM stake has
           soared to $76,340




CS 167                          I–39    Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                    I–39
$$$$$

                     • It’s March 13, 1986. Microsoft is going public.
                       Do you put $10,000 into their IPO?




            CS 167                          I–40     Copyright © 2006 Thomas W. Doeppner. All rights reserved.




(you didn’t …)

(though my broker has a client who did …)


(and it wasn’t me)

($10,000 got you approximately 477 shares @ $21)




                                                                                                                 I–40
Toy Operating Systems
         • 1987: Andrew Tanenbaum of Vrije
           Universiteit, Amsterdam, publishes Operating
           Systems: Design and Implementation
            – included is source code for a complete, though
              toy, operating system: Minix, sort of based on
              Unix
         • 1991: Linus Torvalds buys an Intel 386 PC
            – MS-DOS doesn’t support all its features (e.g.,
              memory protection, multi-tasking)
            – “soups up” Minix to support all this
         • January 1992: Torvalds releases Linux 0.12
         • January 1992: Tanenbaum declares Linux
           obsolete
CS 167                            I–41     Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                       I–41
$$$$$$

                      • It’s January 1, 1990. Your stake in IBM is
                        worth $64,775.
                      • The $10,000 you didn’t put into Microsoft
                        would now be worth $66,071.




             CS 167                          I–42      Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  (though note that, unlike Microsoft’s, IBM’s stock has always returned dividends. Microsoft
started returning dividends in 2004)




                                                                                                                   I–42
Late 80s/Early 90s
         • 1988: Most major Unix vendors get together
           and form OSF to produce a common Unix:
           OSF/1, based on IBM’s AIX
         • 1989: Microsoft begins work on NT
         • 1990: OSF abandons AIX, restarts with Mach
         • 1991: OSF releases OSF/1
         • 1992: Sun releases Solaris 2
            – many SunOS (Solaris 1) programs are broken
         • 1993: All major players but DEC have
           abandoned OSF/1
         • 1993: Microsoft releases Windows NT 3.1
         • 1994: Linux 1.0 released
CS 167                          I–43    Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                    I–43
$$$$$$$

         • It’s January 1, 1995. Your IBM stake has
           dropped to $57,476
         • Your Microsoft stake would have been worth
           $391,339




CS 167                        I–44    Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                  I–44
Late 90s

         • IBM has three different versions of Unix, all
           called “AIX”
         • 1996: DEC renames its OSF/1 “Digital Unix”
         • 1996: Microsoft releases Windows NT 4
         • 1996: Linux 2.0 released
         • 1998: DEC is purchased by Compaq; “Digital
           Unix” is renamed “Tru64 Unix”
         • 1999: Sun’s follow-on to Solaris 2.6 is called
           Solaris 7




CS 167                          I–45     Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                     I–45
The ’00s
         • 2000: Microsoft releases Windows 2000 and Windows
           Me
         • 2000: Linux 2.2 is released
         • 2000: IBM “commits” to Linux (on servers)
         • ~2000: Apple releases OS X, based on Unix (in
           particular, OSF/1)
         • 2001: Linux 2.4 is released
         • 2001: Microsoft releases Windows XP
         • 2002: Compaq is purchased by HP
         • 2003: SCO claims their code is in Linux, sues IBM; IBM
           countersues
            – (trial currently scheduled for Feb. 2007)
         • 2004: Linux 2.6 is released
         • 2005: IBM sells PC business to Lenovo

CS 167                                    I–46            Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                                      I–46
$$$$$$$$$$$$$$$$

                      • It’s January 1, 2000
                      • Your IBM stake is worth $377,423
                      • Your Microsoft stake would have been worth
                        $5,927,143
                      • You should have sold instantly
                         – on September 5, 2006
                            - your IBM stake is worth $282,894
                            - your Microsoft stake would have been
                              worth $3,518,199
                      • If you’d traded all your MS stock for Google at
                        their IPO on 8/18/2004, you’d now have
                        $17,209,146
             CS 167                          I–47     Copyright © 2006 Thomas W. Doeppner. All rights reserved.




  On September 5, 2006 you own 3499 shares of IBM stock. Check out
http://www.microsoft.com/msft/download/IPOsharecalc.xls for information on Microsoft stock.
On 8/18/2004, your Microsoft investment would have been worth $3,765,942. Google sold their
stock for $85/share at their IPO on 8/18/2004. On 9/5/2006, it sold for $384.36/share.




                                                                                                                  I–47
CS167/169 Operating Systems
                         An Abbreviated History—Part 1
                • Prehistory
                     – IBM 360-like simulator written in PL/1
                     – simple OS written in IBM 360 assembler
                • Dawn of civilization
                     – Intel 8086-like architecture
                     – simple OS written in pseudo code
                         - paper-only design
                • Classical period
                     – Motorola 68000 simulator written in C
                        - first ran on 68000-based Apollos, then on 68000-
                          based Suns, then on SPARC-based Suns
                     – very simple OS design
                     – OSes first written in 68000 assembler, later in C
            CS 167                            I–48       Copyright © 2006 Thomas W. Doeppner. All rights reserved.




We finish this lecture with a brief history of the OS project of CS 167 and 169.




                                                                                                                     I–48
CS167/169 Operating Systems
              An Abbreviated History—Part 2

   • The Enlightenment
         – new simulator for “simple architecture” written in C
              - no virtual memory
              - much faster than previous simulators
         – first OS: Unix-like, no virtual memory
         – second OS: SLO (Solaris-Like OS)
              - first to have a name
              - microkernel architecture
                   • an architecture designed to ease OS writing
                   • few students completed the project ...



CS 167                            I–49     Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                       I–49
CS167/169 Operating Systems
              An Abbreviated History—Part 3

         • The Industrial Revolution: Objects for the
           Masses
            – same simulator as used in the enlightenment
            – OS design based on Sun’s Spring object-
              oriented OS; OSes written in C++
                - FallOS
                - Doors 95
                - Doors NT
                - OpenDoors




CS 167                          I–50     Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                     I–50
CS167/169 Operating Systems
              An Abbreviated History—Part 4

         • The Post-Modern Age
           – new simulator, written in C
              - supports dynamic address translation
           – OS design based on Linux
              - virtual memory
              - “network capable”
              - completely documented (well, almost …)
              - marketed under the name Weenix™
           – consumer version
                                       Gone the way of
              - Weenie™                 Windows Me

CS 167                          I–51        Copyright © 2006 Thomas W. Doeppner. All rights reserved.




                                                                                                        I–51

Mais conteúdo relacionado

Mais procurados

Type of Embedded core
Type of Embedded core Type of Embedded core
Type of Embedded core mukul bhardwaj
 
Unix operating system basics
Unix operating system basicsUnix operating system basics
Unix operating system basicsSankar Suriya
 
Analysis of interrupt latencies in a real-time kernel
Analysis of interrupt latencies in a real-time kernelAnalysis of interrupt latencies in a real-time kernel
Analysis of interrupt latencies in a real-time kernelGabriele Modena
 
Linux Kernel Programming
Linux Kernel ProgrammingLinux Kernel Programming
Linux Kernel ProgrammingNalin Sharma
 
Unix operating system
Unix operating systemUnix operating system
Unix operating systemABhay Panchal
 
Processes in unix
Processes in unixProcesses in unix
Processes in unixmiau_max
 
Kernel module programming
Kernel module programmingKernel module programming
Kernel module programmingVandana Salve
 
tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3
tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3
tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3WE-IT TUTORIALS
 
Linux architecture
Linux architectureLinux architecture
Linux architecturemcganesh
 
Unix Internals OS Architecture
Unix Internals OS ArchitectureUnix Internals OS Architecture
Unix Internals OS ArchitectureKhader Shaik
 
Transcendent memoryupdate xensummit2010-final
Transcendent memoryupdate xensummit2010-finalTranscendent memoryupdate xensummit2010-final
Transcendent memoryupdate xensummit2010-finalThe Linux Foundation
 
Part 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module ProgrammingPart 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module ProgrammingTushar B Kute
 
June 07 MS3
June 07 MS3June 07 MS3
June 07 MS3Samimvez
 

Mais procurados (20)

Type of Embedded core
Type of Embedded core Type of Embedded core
Type of Embedded core
 
Unix operating system basics
Unix operating system basicsUnix operating system basics
Unix operating system basics
 
Analysis of interrupt latencies in a real-time kernel
Analysis of interrupt latencies in a real-time kernelAnalysis of interrupt latencies in a real-time kernel
Analysis of interrupt latencies in a real-time kernel
 
Priority Inversion on Mars
Priority Inversion on MarsPriority Inversion on Mars
Priority Inversion on Mars
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
Energy efficient storage in vm
Energy efficient storage in vmEnergy efficient storage in vm
Energy efficient storage in vm
 
Linux Kernel Programming
Linux Kernel ProgrammingLinux Kernel Programming
Linux Kernel Programming
 
Unix operating system
Unix operating systemUnix operating system
Unix operating system
 
Processes in unix
Processes in unixProcesses in unix
Processes in unix
 
Unix v6 Internals
Unix v6 InternalsUnix v6 Internals
Unix v6 Internals
 
Case study windows
Case study windowsCase study windows
Case study windows
 
Embedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile DevicesEmbedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile Devices
 
Kernel module programming
Kernel module programmingKernel module programming
Kernel module programming
 
tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3
tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3
tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3
 
Linux architecture
Linux architectureLinux architecture
Linux architecture
 
Unix Internals OS Architecture
Unix Internals OS ArchitectureUnix Internals OS Architecture
Unix Internals OS Architecture
 
Transcendent memoryupdate xensummit2010-final
Transcendent memoryupdate xensummit2010-finalTranscendent memoryupdate xensummit2010-final
Transcendent memoryupdate xensummit2010-final
 
Part 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module ProgrammingPart 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module Programming
 
June 07 MS3
June 07 MS3June 07 MS3
June 07 MS3
 
Linux kernel
Linux kernelLinux kernel
Linux kernel
 

Semelhante a CS 167 Operating Systems Syllabus

Chap1
Chap1Chap1
Chap1adisi
 
Computer hardware1
Computer hardware1Computer hardware1
Computer hardware1paniseema
 
Operating Systems As a Product
Operating Systems As a ProductOperating Systems As a Product
Operating Systems As a ProductHarshit Srivastava
 
Principles of operating system
Principles of operating systemPrinciples of operating system
Principles of operating systemAnil Dharmapuri
 
Operating Systems
Operating SystemsOperating Systems
Operating Systemscostavo
 
Bsc cs 1 fit u-3 operating systems
Bsc cs 1 fit u-3 operating systemsBsc cs 1 fit u-3 operating systems
Bsc cs 1 fit u-3 operating systemsRai University
 
Bsc cs 1 fit u-3 operating systems
Bsc cs 1 fit u-3 operating systemsBsc cs 1 fit u-3 operating systems
Bsc cs 1 fit u-3 operating systemsRai University
 
CSE 370 - Introduction to Operating Systems
CSE 370 - Introduction to Operating SystemsCSE 370 - Introduction to Operating Systems
CSE 370 - Introduction to Operating SystemsDev Khare
 
Nt introduction(os)
Nt introduction(os)Nt introduction(os)
Nt introduction(os)NehaTadam
 
Operating System Unit 1
Operating System Unit 1Operating System Unit 1
Operating System Unit 1SanthiNivas
 
11. operating-systems-part-1
11. operating-systems-part-111. operating-systems-part-1
11. operating-systems-part-1Muhammad Ahad
 
Mba i-ifm-u-3 operating systems
Mba i-ifm-u-3 operating systemsMba i-ifm-u-3 operating systems
Mba i-ifm-u-3 operating systemsRai University
 
Mba i-ifm-u-3 operating systems
Mba i-ifm-u-3 operating systemsMba i-ifm-u-3 operating systems
Mba i-ifm-u-3 operating systemsRai University
 

Semelhante a CS 167 Operating Systems Syllabus (20)

Chap1
Chap1Chap1
Chap1
 
Computer hardware1
Computer hardware1Computer hardware1
Computer hardware1
 
Operating Systems As a Product
Operating Systems As a ProductOperating Systems As a Product
Operating Systems As a Product
 
Principles of operating system
Principles of operating systemPrinciples of operating system
Principles of operating system
 
Unit 4
Unit  4Unit  4
Unit 4
 
Operating Systems
Operating SystemsOperating Systems
Operating Systems
 
os_1.pdf
os_1.pdfos_1.pdf
os_1.pdf
 
Operating Systems
Operating SystemsOperating Systems
Operating Systems
 
Cs1 3-operating systems
Cs1 3-operating systemsCs1 3-operating systems
Cs1 3-operating systems
 
Bsc cs 1 fit u-3 operating systems
Bsc cs 1 fit u-3 operating systemsBsc cs 1 fit u-3 operating systems
Bsc cs 1 fit u-3 operating systems
 
Bsc cs 1 fit u-3 operating systems
Bsc cs 1 fit u-3 operating systemsBsc cs 1 fit u-3 operating systems
Bsc cs 1 fit u-3 operating systems
 
Advanced_OS_Unit 1 & 2.ppt
Advanced_OS_Unit 1 & 2.pptAdvanced_OS_Unit 1 & 2.ppt
Advanced_OS_Unit 1 & 2.ppt
 
Chapter - 1
Chapter - 1Chapter - 1
Chapter - 1
 
CSE 370 - Introduction to Operating Systems
CSE 370 - Introduction to Operating SystemsCSE 370 - Introduction to Operating Systems
CSE 370 - Introduction to Operating Systems
 
Nt introduction(os)
Nt introduction(os)Nt introduction(os)
Nt introduction(os)
 
Os concepts
Os conceptsOs concepts
Os concepts
 
Operating System Unit 1
Operating System Unit 1Operating System Unit 1
Operating System Unit 1
 
11. operating-systems-part-1
11. operating-systems-part-111. operating-systems-part-1
11. operating-systems-part-1
 
Mba i-ifm-u-3 operating systems
Mba i-ifm-u-3 operating systemsMba i-ifm-u-3 operating systems
Mba i-ifm-u-3 operating systems
 
Mba i-ifm-u-3 operating systems
Mba i-ifm-u-3 operating systemsMba i-ifm-u-3 operating systems
Mba i-ifm-u-3 operating systems
 

Último

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 

Último (20)

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 

CS 167 Operating Systems Syllabus

  • 1. CS 167: Operating Systems CS 167 I–1 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–1
  • 2. Workload: 167 • Write five easy-to-moderate-to-difficult programs (40%) – shell – multithreaded programming/high-performance I/O – user-level threads package – system calls and high-level file system – low-level file system • Hand in five short homeworks (20%) • One in-class midterm exam (10%) • Final exam (30%) • See http://www.cs.brown.edu/courses/cs167/docs/syllabus.167.htm CS 167 I–2 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–2
  • 3. Workload: 169 • One large program with a number of milestones, resulting in a working operating system – Kernel 1 – Kernel 2 – Virtual file system – S5 file system – Virtual memory • See http://www.cs.brown.edu/courses/cs167/docs/syllabus.169.htm CS 167 I–3 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–3
  • 4. Skills Needed • Ability to write and debug largish programs in C with POSIX threads – CS 36 – or CS32 with - C/C++ minicourse (this week) - POSIX threads lectures/labs (next week) • Basic computer architecture – CS 31 CS 167 I–4 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–4
  • 5. What are Operating Systems? • Possible definitions: – the code that {Microsoft, Sun, Apple, Linus} provides – the code that you didn’t write – the code that runs in privileged mode – the code that makes things work – the code that makes things crash – etc. CS 167 I–5 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–5
  • 6. Operating Systems • Abstraction – providing an “appropriate” interface for applications • Concerns – performance - time and space – sharing and resource management – failure tolerance – security – marketability CS 167 I–6 Copyright © 2006 Thomas W. Doeppner. All rights reserved. The purpose of an operating system is to make the underlying hardware useful. Rather than forcing programmers to deal with the complicated details of such hardware, more convenient idealized abstractions of the hardware are devised, implemented, and made available, replacing the direct interface to the hardware. Thus, as discussed in upcoming slides, we deal with files rather than disks, virtual memory rather than real memory, threads rather than processors, etc. However, in operating systems, even more so than in “ordinary” applications we must cope with the concerns listed in the slide. Performance is a huge issue. Some portions of the OS might be invoked often, say thousands of times per second. Reducing the number of instructions used is extremely important; we must also be concerned with how effectively the code uses the processor’s caches. Use of memory, both primary and secondary, is also important. If too much memory is used, the operating system might not “fit” in the available resources. Furthermore, too much memory use may require shuffling of code and data between primary and secondary storage, thus wasting time. We must also provide various forms of sharing: not only must different applications coexist on a computer at once, but different users might be using the same computer at the same time. Our operating system must be tolerant of failures: bugs in one application must not bring down another. Problems with hardware should not cause catastrophic failure. Security is increasingly a problem. We must protect the operating system, the applications running on it, and data maintained by it, from attack. (This is clearly not a solved problem!) Finally, for an OS to be successful, people must want to use it. It’s one thing to build an operating system that does an excellent job dealing with everything mentioned above, but if none of our existing applications can be made to run on it and we have to write everything from scratch, no one is going to want to use it. I–6
  • 7. Hardware r so es oc Pr Network Memory or ss ro ce P Disk Disk CS 167 I–7 Copyright © 2006 Thomas W. Doeppner. All rights reserved. As we’ve just mentioned, one of the major purposes of an operating system is to give its users an easy-to-use abstraction of a fairly complicated reality. A typical computer system consists of a number of disk drives (which the operating system accesses through specialized hardware called controllers), a network interface (also accessed via a controller), some sort of display/keyboard/mouse combination, and some amount of primary storage. I–7
  • 8. Abstractions • Hardware • Operating system – disks – files – memory – programs – processors – threads of control – network – communication – monitor – windows, – keyboard graphics – mouse – input – locator CS 167 I–8 Copyright © 2006 Thomas W. Doeppner. All rights reserved. The typical user has no desire to deal with the complexities of the underlying hardware, preferring instead to deal with abstractions and depend upon the operating system to map these abstractions into reality. For example, the user may have information that needs to be accessed and perhaps updated over long periods of time. While such information may well be stored on disk, the user probably doesn’t care how. The user’s computation will certainly use temporary storage that need not exist longer than the computation, but should be quickly accessible during the lifetime of the computation. The user’s computation will need a “compute engine” to carry out the computation; in some cases it will need multiple compute engines. Finally, the user may need to communicate with other users or computations on other computers, and may need to access information stored elsewhere. Designing the most suitable abstractions for an operating system to present to its users is a subject of continuing research. Soon we examine the abstractions provided by a particular operating system, Unix, that is in widespread use on computer workstations and larger machines. Later in the course we discuss alternate abstractions. Unix provides a relatively simple collection of abstractions (though many argue that Unix has become much too complicated). In particular, permanent storage is represented as files. We think of temporary storage as being built from the abstraction of primary memory, known as virtual memory. Each computation has its own private virtual memory—computations are known in Unix as processes. Traditionally, each process is embodied as a single abstract compute engine, but more recently the concept of multithreaded processes has been introduced. In this model, each process may contain multiple compute engines, or threads, each capable of independent computation. Communication is not a very well developed concept in Unix systems. The general idea is that independent processes can transfer data back and forth among one another. We explore this idea and newer approaches to handling communication in the last section of the course. I–8
  • 9. Files Memory Disk Disk CS 167 I–9 Copyright © 2006 Thomas W. Doeppner. All rights reserved. File systems provide a simple abstraction of permanent storage, i.e., storage that doesn’t go away when your program terminates or you shut down the computer. A user accesses information, represented as files, and the operating system is responsible for retrieving and storing this information. We expect files to last a long time and we associate names (as opposed to addresses) with files. I–9
  • 10. Issues • Naming • Allocating space on disk (permanent storage) – organized for fast access – minimize waste • Shuffling data between disk and memory (high-speed temporary storage) • Coping with crashes CS 167 I–10 Copyright © 2006 Thomas W. Doeppner. All rights reserved. Among the issues in implementing the notion of files are those mentioned above. I–10
  • 11. Programs Memory Data Code Disk Disk r r so so es es P roc P roc CS 167 I–11 Copyright © 2006 Thomas W. Doeppner. All rights reserved. A program is an abstraction that we view as consisting of data and code. Somehow we’ve got to build programs from the pieces of hardware available to us, in particular memory, disks, and processors. I–11
  • 12. Memory Sharing (1) Program 1 Program 2 Program 3 Operating System Memory CS 167 I–12 Copyright © 2006 Thomas W. Doeppner. All rights reserved. So that multiple programs, each with their own private libraries and each accessing shared libraries, can coexist without destroying each other, we must have some means of protecting one program’s memory from another’s. Furthermore, we must protect the operating system from being inadvertently or maliciously attacked by programs. Using various hardware features, each program is prevented from accessing private portions of other programs. Shared portions can be accessed, but only in a read-only fashion. When the operating system is executing, it can access the user programs. But when user programs are executing, they can access the operating system only to do prescribed requests. I–12
  • 13. Memory Sharing (2) Program 1 Program 2 Program 3 Memory CS 167 I–13 Copyright © 2006 Thomas W. Doeppner. All rights reserved. Another memory-sharing issue arises when the programs that are to share memory are too big to fit in all at once (or perhaps even individually). I–13
  • 14. Virtual Memory Program 1 Memory Program 2 Disk Disk Program 3 CS 167 I–14 Copyright © 2006 Thomas W. Doeppner. All rights reserved. One popular approach for dealing with memory-protection and -fitting issues is to employ virtual memory. A program executes in a “virtual address space,” which is implemented partially on real memory and partially on disks. A facility supported as a joint effort of hardware and the operating-system kernel “maps” each program’s references of virtual memory into real memory and disk space. Since the operating system controls this mapping, it determines who can access what. I–14
  • 15. History of Virtual Memory • 1961: Atlas computer, University of Manchester, UK • 1962: Burroughs B5000 • 1972: IBM OS/370 • 1979: 3 BSD Unix, UC Berkeley • 1993: Microsoft Windows NT 3.1 • 2000: Apple Macintosh OS X CS 167 I–15 Copyright © 2006 Thomas W. Doeppner. All rights reserved. The slide lists milestones in the history of virtual memory, from its first instance on Manchester’s Atlas computer in 1961 (when a working prototype was completed), to Apple’s recent announcement of VM support for the Macintosh. I–15
  • 16. Apple Invents VM … Welcome to the Brave New World of Crash-Resistant Computing Let’s start with the notion of protected memory, and why it’s so important. … One of the ways an operating system ensures reliability is by protecting applications through a mechanism called protected memory (essentially walling off applications from each other). … Along with the protected memory mechanism, Darwin provides a super-efficient virtual memory manager to handle that protected memory space. So you no longer have to worry about how much memory an application like Photoshop needs to open large files. … — Apple website, September 2000 CS 167 I–16 Copyright © 2006 Thomas W. Doeppner. All rights reserved. Apple is the latest of a long line of companies to “discover” virtual memory. The passage quoted in the slide is from Apple’s web page and is copyright (by Apple) 2000. “Darwin” was the code name of the kernel of Apple’s OS X operating system. I–16
  • 17. Concurrency r r r so so so es es es P roc P roc P roc al al al Vi rtu Vi rtu Vi rtu or ss o ce Pr CS 167 I–17 Copyright © 2006 Thomas W. Doeppner. All rights reserved. Computers are typically multiplexed among a number of users. Multiplexing is a concept that is well over thirty years old—many users share a computer by dividing its processing time among one another. It’s often known as multitasking. Another equally old, if not older, concept is the notion of concurrency within a computation. This is the ability of one computation to utilize multiple logical “compute engines,” or threads. Concurrency means that multiple threads are in progress at one time; on a computer that employs only a single real processor, the execution of these threads is multiplexed over time. Why do this? • Optimize the use of computers — programs typically compute, perform I/O, compute, perform I/O … — when one program is performing I/O, another should be computing • Optimize the use of people — want several applications active at once – interactive applications · editing · drawing – background applications · mail monitor · printing · file transfer I–17
  • 18. Parallelism r r r so so so es es es P roc P roc P roc al al al Vi rtu Vi rtu Vi rtu or or or ss ss ss o ce o ce o ce Pr Pr Pr CS 167 I–18 Copyright © 2006 Thomas W. Doeppner. All rights reserved. Parallelism means that multiple threads are executing simultaneously: parallelism requires multiple processors. In this course we make this distinction between parallelism and concurrency; note, however, that not everyone distinguishes between these terms in this way. I–18
  • 19. History of Concurrency • Multiprogramming – 1961, 1962: Atlas, B5000 – 1965: OS/360 MFT, MVT • Timesharing – 1961: CTSS (developed by MIT for IBM 7094); BBN time-sharing system for DEC PDP-1 – mid 60s - Dartmouth Timesharing System (DTSS) - TOPS-10 (DEC) – late 60s - Multics (MIT, GE, Bell Labs) - Unix (Bell Labs) CS 167 I–19 Copyright © 2006 Thomas W. Doeppner. All rights reserved. Multiprogramming refers to the notion of having multiple programs active at the same time so that when the current program can no longer run (for example because it’s blocked waiting for I/O), another is available to run. Timesharing is an extension of multiprogramming in which the execution of the active programs is time-sliced: each program runs for a short period of time, then another is run. A good web site with useful information on Multics is http://www.multicians.org/. A brief description of CTSS can be found at http://www.multicians.org/thvv/7094.html. I–19
  • 20. Another Apple Innovation … With Preemptive Multitasking, Everything Happens at Once In today’s fast-paced world, you rarely get to do one thing at a time. Even in the middle of transforming, say, a Photoshop file, you may need to find a crucial piece of information on the web while you compose an urgent reply to a customer. What you need is a computer that can handle several different tasks at once, giving priority to your primary application, but still crunching away at other jobs in the background. … Darwin makes this possible by incorporating a powerful concept called preemptive multitasking. … — ibid. CS 167 I–20 Copyright © 2006 Thomas W. Doeppner. All rights reserved. So what’s preemptive multitasking? It’s multiprogramming in which one program can preempt the execution of another. In other words, it’s a necessary ingredient of timesharing, the notion that was first implemented in the 1960s. (Note that Microsoft “innovated” this idea in 1993 with their introduction of Windows NT.) I–20
  • 21. Brief History of Operating Systems • Hardware technology – first generation: vacuum tubes – second generation: transistors – third generation: integrated circuits – fourth generation: graphics, personal computers, networking • OS architecture – monolithic operating systems – microkernels – personal-computer operating systems – network operating systems CS 167 I–21 Copyright © 2006 Thomas W. Doeppner. All rights reserved. In the next several slides we look at the history of operating systems, showing that the design for the CS169 final project is the culmination of years of operating-system research and development. We look first at the history of hardware developments and how they affected OS design, and then at various architectures of operating systems. I–21
  • 22. First-Generation Hardware • “What you write is all you’ve got” – no operating system – no libraries – no compilers – no assemblers – no nothing CS 167 I–22 Copyright © 2006 Thomas W. Doeppner. All rights reserved. The earliest electronic computers were, by our standards, amazingly primitive. The hardware was characterized by the use of vacuum tubes. The software was characterized by its paucity. Programmers supplied all software that they were to use. Furthermore, this software was written directly in “machine language” and input to the computer via awkward means, such as paper tape. I–22
  • 23. IBM 701 CS 167 I–23 Copyright © 2006 Thomas W. Doeppner. All rights reserved. The IBM 701 is, reportedly, the first computer to have an operating system (designed by General Motors (not IBM) and called the Input/Output System). The man on the right is computer pioneer Herb Grosch, in whose hotel room the notion of an operating system was hashed out in 1953. He later served as president of ACM. The man on the left is an actor who later served as president of a large country. The picture is from http://www.fwtunesco.org/musi/museu8.html (the link no longer works), the web site of FWT UNESCO Computer Museum, Padova, Italy, and was taken in 1956. I–23
  • 24. Second-Generation Hardware • Batch systems • Concurrent I/O and computation • Compilers • Assemblers • Libraries CS 167 I–24 Copyright © 2006 Thomas W. Doeppner. All rights reserved. The second generation of computer hardware is characterized by the use of transistors. Improvements in hardware came along with major improvements in software—compilers, assemblers, and loaders were invented. Libraries were developed and linkers were made available to ease their use. The early operating systems were known as “batch” systems—a collection, or batch, of jobs was submitted and their output was written to magnetic tape. After the batch was completed, the operator would take the tape to another computer that drove a printer and start the next batch. Thus while one batch was running, the results of the previous batch were printed. Also at this time the use of I/O devices such as disks, tapes, and drums became more advanced. In early systems, all activity on a machine ceased while the computation was waiting for an I/O operation to complete. In the second generation, the use of separate hardware to manage I/O and the concept of interrupts made it possible for a program to continue to compute while I/O was being performed. The difficulty of managing such concurrency helped to spur the development of operating systems. I–24
  • 25. IBM 7094 CS 167 I–25 Copyright © 2006 Thomas W. Doeppner. All rights reserved. The picture, from http://www.ecs.csun.edu/~dxs/history/histcomp.html, is of an IBM 7094, a midrange second-generation scientific computer. Among its features were core memory, a disk drive, and a subroutine-call instruction. I–25
  • 26. Early Third-Generation Hardware • Multiprogramming • Time sharing • Big operating systems – OS/360 – Multics • Little operating systems – Unix CS 167 I–26 Copyright © 2006 Thomas W. Doeppner. All rights reserved. In the third generation, characterized by the use of (small-scale) integrated circuits, OS technology begins to resemble what we have today. Large machines were multiprogrammed, allowing several jobs to run concurrently. This made security very important, since jobs now had to be protected from one another. Another important development was time sharing, in which a programmer could actually interact with a running program. This was considered a rather expensive frill at first, but has since become the dominant style of computing. The most commercially important OS of the day was IBM’s OS/360. This system was based on the radical concept that a whole range of hardware, from small, slow machines to huge, fast machines, could all run the same operating system. Unfortunately, it didn’t work exactly as planned, and OS/360 had to be split into a number of different versions, each targeted to a particular class of machines. The largest of these OSs, known as OS/MVT, is the forerunner of the OSs run on large data-processing machines today. The most interesting OS of the day was Multics, which was initially a joint project of GE, MIT, and Bell Laboratories. The latter two eventually dropped out and GE’s computer business was bought by Honeywell, but under the Honeywell nameplate this OS survived into the ’80s. Many of the concepts that have just now become commercially viable were pioneered in the Multics system. The dark-horse operating system was Unix, which was developed at Bell Labs after it dropped out of the Multics project. It gradually became popular among researchers at Bell Labs. Bell Labs made the radical decision to release of the source code of this OS to universities, and it soon became very popular in a large number of computer science departments and a few enlightened industrial organizations. Unix ran principally on DEC PDP-11s, but was ported to a few other machines and gained the reputation of being the first portable operating system (another very radical concept for software that had traditionally been written in assembler language and took advantage of every arcane feature a machine had to offer). A group at the University of California at Berkeley took Bell Lab’s port of Unix to DEC’s new architecture, the VAX, and embellished it considerably. This version of Unix, known as BSD (Berkeley Software Distribution), or simply Berkeley Unix, was adopted by a large number of academic CS departments around the world. I–26
  • 27. $ • If you had $10,000 to invest on January 1, 1962, would you have put it in IBM? CS 167 I–27 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–27
  • 28. Later Third-Generation Hardware • Minicomputers – proliferation of platforms and OSes - Digital PDP-11 • RSX-11, RSTS-11, RT-11, etc. - Data General Nova, Eclipse • RDOS, SOS, AOS - Hewlett Packard 2100, 3000 • BCS, DOS, MPE, MTS – see http://www.cs.wvu.edu/~jdm/classes/cs258/OScat/minis.html CS 167 I–28 Copyright © 2006 Thomas W. Doeppner. All rights reserved. The ’70s saw an amazing number of minicomputers. I–28
  • 29. $$ • It’s now January 1, 1970; your stake in IBM is worth $22,557 CS 167 I–29 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–29
  • 30. PDP-11 CS 167 I–30 Copyright © 2006 Thomas W. Doeppner. All rights reserved. The PDP-11 shown in the left half of the picture (a relatively small configuration) is around 6- feet tall, making one wonder about the appellation “mini”! On the right is a closeup of the console of a model 45 (an early high-end model) and a closeup of the backplane of a model 50 (a later, midrange model). I–30
  • 31. Late 70s, Early 80s • Super minicomputers – DEC VAX-11, etc. • Workstations – Apollo, Sun • Personal computers – MITS Altair, Apple II, TRS-80, IBM PC, etc. • Xerox PARC – Alto, Dorado, etc. CS 167 I–31 Copyright © 2006 Thomas W. Doeppner. All rights reserved. During the late ’70s and early ’80s, the minicomputer manufacturers (particularly DEC) thrived with big sales of high-end minicomputers. The early 80s saw the beginning of workstation-class computers, with first the establishment of Apollo, then Sun. Meanwhile, computer hobbyists got into the act with the development of the MITS Altair (the first affordable piece of hardware that you could reasonably call a computer; it came complete with 256 8-bit words of memory). Steve Wozniak and Steve Jobs developed the successful Apple II computer. Then IBM galvanized the entire industry with the introduction of the IBM PC in the early ’80s. Perhaps the most important work was being done at Xerox PARC, where the whole notion of computer workstations and personal computers was invented. (This work actually started in the early-to-mid ’70s.) I–31
  • 32. ¢¢ • It’s now January 1, 1975; your stake in IBM has gone down to $15,323 CS 167 I–32 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–32
  • 33. VAX-11 • Two operating systems – VMS (sort of the predecessor of Windows XP) – Berkeley Unix (definitely the predecessor of Solaris, Linux, and FreeBSD) CS 167 I–33 Copyright © 2006 Thomas W. Doeppner. All rights reserved. The Digital VAX-11 (a model 780, the first, is shown in the picture) was the most successful of the superminis. While Digital developed, marketed, and pushed their VMS operating system, Unix, as modified and developed by a group at UC Berkeley, became extremely popular as well. I–33
  • 34. Apollo CS 167 I–34 Copyright © 2006 Thomas W. Doeppner. All rights reserved. The CS Department at Brown was one of Apollo’s first customers (receiving the 5th and 6th computers delivered to customers). I–34
  • 35. Apple II • See http://apple2history.org/ CS 167 I–35 Copyright © 2006 Thomas W. Doeppner. All rights reserved. The Apple II was a very successful hobbyist computer that eventually made it into the business world, as well as into the educational world. I–35
  • 36. PC Operating Systems • Apple II – DOS 3.x – SOS, ProDOS • Z80, 8080 – CPM - see http://en.wikipedia.org/wiki/Gary_Kildall • 8086 – MS-DOS - See, for example, http://en.wikipedia.org/wiki/MS-DOS CS 167 I–36 Copyright © 2006 Thomas W. Doeppner. All rights reserved. The early history of PC operating systems is controversial, interesting, entertaining, etc. Check out the links given in the slide. I–36
  • 37. $$$ • It’s now January 1, 1980; your IBM stake is worth $27,493 CS 167 I–37 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–37
  • 38. Further PC Development • Apple introduces the Apple III – thud … • Microsoft, selling software, starts doing better in the PC market than IBM, selling hardware – $$$$$$$$$$$$$$$ • Apple introduces the Lisa … – thud … • Apple introduces the Macintosh –BOINNNG!!! CS 167 I–38 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–38
  • 39. $$$$ • It’s January 1, 1985; your IBM stake has soared to $76,340 CS 167 I–39 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–39
  • 40. $$$$$ • It’s March 13, 1986. Microsoft is going public. Do you put $10,000 into their IPO? CS 167 I–40 Copyright © 2006 Thomas W. Doeppner. All rights reserved. (you didn’t …) (though my broker has a client who did …) (and it wasn’t me) ($10,000 got you approximately 477 shares @ $21) I–40
  • 41. Toy Operating Systems • 1987: Andrew Tanenbaum of Vrije Universiteit, Amsterdam, publishes Operating Systems: Design and Implementation – included is source code for a complete, though toy, operating system: Minix, sort of based on Unix • 1991: Linus Torvalds buys an Intel 386 PC – MS-DOS doesn’t support all its features (e.g., memory protection, multi-tasking) – “soups up” Minix to support all this • January 1992: Torvalds releases Linux 0.12 • January 1992: Tanenbaum declares Linux obsolete CS 167 I–41 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–41
  • 42. $$$$$$ • It’s January 1, 1990. Your stake in IBM is worth $64,775. • The $10,000 you didn’t put into Microsoft would now be worth $66,071. CS 167 I–42 Copyright © 2006 Thomas W. Doeppner. All rights reserved. (though note that, unlike Microsoft’s, IBM’s stock has always returned dividends. Microsoft started returning dividends in 2004) I–42
  • 43. Late 80s/Early 90s • 1988: Most major Unix vendors get together and form OSF to produce a common Unix: OSF/1, based on IBM’s AIX • 1989: Microsoft begins work on NT • 1990: OSF abandons AIX, restarts with Mach • 1991: OSF releases OSF/1 • 1992: Sun releases Solaris 2 – many SunOS (Solaris 1) programs are broken • 1993: All major players but DEC have abandoned OSF/1 • 1993: Microsoft releases Windows NT 3.1 • 1994: Linux 1.0 released CS 167 I–43 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–43
  • 44. $$$$$$$ • It’s January 1, 1995. Your IBM stake has dropped to $57,476 • Your Microsoft stake would have been worth $391,339 CS 167 I–44 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–44
  • 45. Late 90s • IBM has three different versions of Unix, all called “AIX” • 1996: DEC renames its OSF/1 “Digital Unix” • 1996: Microsoft releases Windows NT 4 • 1996: Linux 2.0 released • 1998: DEC is purchased by Compaq; “Digital Unix” is renamed “Tru64 Unix” • 1999: Sun’s follow-on to Solaris 2.6 is called Solaris 7 CS 167 I–45 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–45
  • 46. The ’00s • 2000: Microsoft releases Windows 2000 and Windows Me • 2000: Linux 2.2 is released • 2000: IBM “commits” to Linux (on servers) • ~2000: Apple releases OS X, based on Unix (in particular, OSF/1) • 2001: Linux 2.4 is released • 2001: Microsoft releases Windows XP • 2002: Compaq is purchased by HP • 2003: SCO claims their code is in Linux, sues IBM; IBM countersues – (trial currently scheduled for Feb. 2007) • 2004: Linux 2.6 is released • 2005: IBM sells PC business to Lenovo CS 167 I–46 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–46
  • 47. $$$$$$$$$$$$$$$$ • It’s January 1, 2000 • Your IBM stake is worth $377,423 • Your Microsoft stake would have been worth $5,927,143 • You should have sold instantly – on September 5, 2006 - your IBM stake is worth $282,894 - your Microsoft stake would have been worth $3,518,199 • If you’d traded all your MS stock for Google at their IPO on 8/18/2004, you’d now have $17,209,146 CS 167 I–47 Copyright © 2006 Thomas W. Doeppner. All rights reserved. On September 5, 2006 you own 3499 shares of IBM stock. Check out http://www.microsoft.com/msft/download/IPOsharecalc.xls for information on Microsoft stock. On 8/18/2004, your Microsoft investment would have been worth $3,765,942. Google sold their stock for $85/share at their IPO on 8/18/2004. On 9/5/2006, it sold for $384.36/share. I–47
  • 48. CS167/169 Operating Systems An Abbreviated History—Part 1 • Prehistory – IBM 360-like simulator written in PL/1 – simple OS written in IBM 360 assembler • Dawn of civilization – Intel 8086-like architecture – simple OS written in pseudo code - paper-only design • Classical period – Motorola 68000 simulator written in C - first ran on 68000-based Apollos, then on 68000- based Suns, then on SPARC-based Suns – very simple OS design – OSes first written in 68000 assembler, later in C CS 167 I–48 Copyright © 2006 Thomas W. Doeppner. All rights reserved. We finish this lecture with a brief history of the OS project of CS 167 and 169. I–48
  • 49. CS167/169 Operating Systems An Abbreviated History—Part 2 • The Enlightenment – new simulator for “simple architecture” written in C - no virtual memory - much faster than previous simulators – first OS: Unix-like, no virtual memory – second OS: SLO (Solaris-Like OS) - first to have a name - microkernel architecture • an architecture designed to ease OS writing • few students completed the project ... CS 167 I–49 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–49
  • 50. CS167/169 Operating Systems An Abbreviated History—Part 3 • The Industrial Revolution: Objects for the Masses – same simulator as used in the enlightenment – OS design based on Sun’s Spring object- oriented OS; OSes written in C++ - FallOS - Doors 95 - Doors NT - OpenDoors CS 167 I–50 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–50
  • 51. CS167/169 Operating Systems An Abbreviated History—Part 4 • The Post-Modern Age – new simulator, written in C - supports dynamic address translation – OS design based on Linux - virtual memory - “network capable” - completely documented (well, almost …) - marketed under the name Weenix™ – consumer version Gone the way of - Weenie™ Windows Me CS 167 I–51 Copyright © 2006 Thomas W. Doeppner. All rights reserved. I–51