Introduction to Operating Systems

Daniel Bosk1

Department of Information and Communication Systems (ICS), Mid Sweden University, Sundsvall.

intro.tex 1417 2013-11-05 13:50:22Z danbos

1 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported license. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/. 1 Overview

2 Overview

3 Schedule

The schedule is in the central scheduling system in the Student Portal. This schedule is not synchronised with that in the virtual learning environment (Moodle). The sessions and lectures in the schedule are the only ones offered, so there are no sessions planned after the course.

Daniel is the principal lecturer and grades the final exam. Alexandra and Tobias are the TAs and will tutor you and grade your hand-ins.

4 Literature

Silberschatz2013osc 9th edition [Silberschatz2013osc].

5 Virtual Learning Environment

The virtual learning environment (VLE) used for the course is ”Lärplattformen 2.0”, i.e. Moodle. In the section ”Course Material” found in the VLE you will find recordings of lectures and lecture slides. In the section ”Examination” you will find all things related to the examination, i.e. hand-in assignments. In each hand-in box you will find the instruction for that particular assignment. Read the instructions carefully! The hand-in assignments are numbered starting on 0 and are prefixed with a letter indicating the type of assignment. Theory assignments are prefixed T and laboratory assignments are prefixed L.

6 Examination

Hand-ins: theory assignments, laboratory assignments. These are spread evenly across the course. Final exam the last week of the course.

7 Examination Hand-ins

T0 Overview T1 Processes T2 Memory L3 Paging T4 Storage

8 Examination Final exam

The final exam will cover the entire course. The hand-in assignments serve as a good preparation for the exam.

9 Overview

10 Development

UNIX was originally developed at . This timeline is derived from documents in Bell Labs’ historical archive [BellLabs2002tco].

11 Development timeline The 1960s

1965 Multiplexed Infomation and Computing Service (MULTICS) was a joint effort between MIT, Bell Labs and GE to “develop a convenient, interactive, useable computer system that could support many users” [BellLabs2002tco].

1969 Bell Labs withdrew from the project, but , , Douglas McIllroy, and J. F. Ossanna continued on their own. Started to write the system on a PDP-7, at first simply as a file system. The system then got a shell, an editor, and an assembler.

12 Development timeline The 1960s

1965 Multiplexed Infomation and Computing Service (MULTICS) was a joint effort between MIT, Bell Labs and GE to “develop a convenient, interactive, useable computer system that could support many users” [BellLabs2002tco].

1969 Bell Labs withdrew from the project, but Ken Thompson, Dennis Ritchie, Douglas McIllroy, and J. F. Ossanna continued on their own. Started to write the system on a PDP-7, at first simply as a file system. The system then got a shell, an editor, and an assembler.

12 Development timeline The 1970s

1970 Brian Kernighan suggests the name . They port the current code to a PDP-11. Focused for use in text-processing, patent applications for Bell Labs. 1971 Ritchie improved Thompson’s B into the programming language. 1972 Thompson started rewriting UNIX in C. (And continuous improvement of C.)

13 Development timeline The 1970s

1970 Brian Kernighan suggests the name UNIX. They port the current code to a PDP-11. Focused for use in text-processing, patent applications for Bell Labs. 1971 Ritchie improved Thompson’s B programming language into the C programming language. 1972 Thompson started rewriting UNIX in C. (And continuous improvement of C.)

13 Development timeline The 1970s

1970 Brian Kernighan suggests the name UNIX. They port the current code to a PDP-11. Focused for use in text-processing, patent applications for Bell Labs. 1971 Ritchie improved Thompson’s B programming language into the C programming language. 1972 Thompson started rewriting UNIX in C. (And continuous improvement of C.)

13 Development timeline The 1970s, continued

1973 UNIX completely rewritten in C. Thompson added McIlroy’s concept of pipes. With this came the : “Write programs that do one thing and do it well. Write programs to work together. Write programs that handle text streams, because that is a universal interface.” [BellLabs2002tco]

Ritchie took initiative to manual pages, McIlroy soon took over and is the mind behind the layout of manual pages.

14 Development timeline The 1970s, continued

1973 UNIX completely rewritten in C. Thompson added McIlroy’s concept of pipes. With this came the UNIX philosophy: “Write programs that do one thing and do it well. Write programs to work together. Write programs that handle text streams, because that is a universal interface.” [BellLabs2002tco]

Ritchie took initiative to manual pages, McIlroy soon took over and is the mind behind the layout of manual pages.

14 Development timeline The 1970s, continued

1973 UNIX completely rewritten in C. Thompson added McIlroy’s concept of pipes. With this came the UNIX philosophy: “Write programs that do one thing and do it well. Write programs to work together. Write programs that handle text streams, because that is a universal interface.” [BellLabs2002tco]

Ritchie took initiative to manual pages, McIlroy soon took over and is the mind behind the layout of manual pages.

14 Development timeline The 1970s, continued

1975 Thompson is visiting professor at University of California-Berkeley (UCB). While there he developed version 6 of UNIX. 1978 Professors at Berkeley continued the enhancement of UNIX and distributed their work as Berkeley Software Distribution (BSD).

15 Development timeline The 1970s, continued

1975 Thompson is visiting professor at University of California-Berkeley (UCB). While there he developed version 6 of UNIX. 1978 Professors at Berkeley continued the enhancement of UNIX and distributed their work as Berkeley Software Distribution (BSD).

15 Development timeline The 1980s

1983 Sockets API added to BSD (4.2BSD), i.e. TCP/IP made easily available. David Korn develops the Korn Shell scripting language. Bjarne Stroustrup develops the first version of C++. 1984 AT&T, owner of Bell Labs, started selling UNIX-licenses to companies.

16 Development timeline The 1980s

1983 Sockets API added to BSD (4.2BSD), i.e. TCP/IP made easily available. David Korn develops the Korn Shell scripting language. Bjarne Stroustrup develops the first version of C++. 1984 AT&T, owner of Bell Labs, started selling UNIX-licenses to companies.

16 Development timeline Present

To this day, UNIX-like operating systems operate “most large Internet servers, businesses and universities, and a major part of academic and industrial research in operating systems is based on UNIX” [BellLabs2002tco].

17 Evolution of UNIX

1969 Unics 1969 Open Source 1971 to 1973 UnixTSS 1 to 4 Mixed/Shared Source 1971 to 1973 1974 to 1975 UnixTSS PWB/Unix 5 to 6 Closed Source 1974 to 1975 1978 BSD 1978 1.0 to 2.0 UnixTSS 1979 7 1979 Unix 32v

1980 BSD 1980 3.0 to 4.1 1981 Xenix System III 1.0 to 2.3 1981 1982 Xenix 1982 3.0 1983 BSD 4.2 Sun OS System V 1983 1 to 1.1 R1 to R2 1984 SCO Xenix 1984 UnixTSS 1985 8 SCO Xenix 1985 AIX W286 System V 1986 BSD 4.3 1.0 R3 HP/UX Sun OS 1.0 to 1.2 1986 1.2 to 3.0 SCO Xenix 1987 UnixTSS V386 1987 (Time Sharing HP/UX 1988 System) BSD 4.3 System V R4 2.0 to 3.0 1988 9 to 10 Tahoe SCO Xenix 1989 W386 1989 BSD 4.3 1990 Reno 1990 BSD NET/2 1991 Linux 0.0.1 1991 Sun OS Minix 4 1.x NEXTSTEP/ 386BSD OPENSTEP 1992 1992 1.0 to 4.0 HP/UX NetBSD 6 to 11 Linux BSD 0.8 to 1.0 1993 1993 0.95 to 1.2.x SCO Unix 4.4 to 3.2.4 Unixware FreeBSD 4.4 lite2 1.x to 2.x 1994 1994 1.0 to 1995 2.2.x NetBSD OpenBSD 1995 1.1 to 1.2 OpenServer 1.0 to 2.2 5.0 to 5.04 Solaris 1996 AIX 2.1 to 10 1996 3.x to 6.x 1997 1997 NetBSD 1.3 1998 FreeBSD 1998 3.0 to 3.2 Minix OpenServer Unixware 1999 2.x Mac OS X 5.0.5 to 5.0.7 7.x Linux Server 2000 1999 2.0 to 2.6.x OpenBSD 2.3 to 4.x 2000 FreeBSD NetBSD 2001 to 2004 3.3 to 8.0 1.3 to 5.x 2001 to 2004 Mac OS X HP/UX 11i to 11i v3 2005 10.0 to 10.7 2005 Minix (Darwin) OpenServer OpenSolaris 3.x 6.x 2008.05 and 2006 to 2010 later 2006 to 2010

Figure: A simplified overview of UNIX history. For details see http://www.levenez.com/unix/. Image: https: //en.wikipedia.org/wiki/File:Unix_history-simple.svg.

18 ReferenserI

19