shithub: 9intro

ref: 2b99422480d596ebc26921c87c6bb81a07949f3e
dir: /awl.ms/

View raw version
.TL
.\"	eval `{doctype awl.ms} | lp -d stdout | ps2pdf >awl.pdf
.ps -1
Proposal for Publishing
.ps +1

.br
Introduction to Operating Systems Abstractions
.br
Using Plan 9 from Bell Labs
.AU
Francisco J Ballesteros
.SH
Description
.LP
Teaching Operating Systems is complex, because it is a complex and wide
area. After many years of teaching, I have found that the only way that works
is to
.IP 1
Teach how to
.B use
an operating system, while introducing the abstractions provided by a
particular operating system.
.IP 2
Teach the theory (and practice) behind the interface for the abstractions. That is,
what is covered in most operating systems courses.
.IP 3
Teach how an actual system is implemented.
.LP
The problem is that most books regarding this subject fall into one of two
classes. They
are either very practical books about
.I "how to use
a system, or they are very theoretical books for teaching theory. But Operating Systems
is a practical subject! 
Some books try to do it all at once (Like Tanembaum's book describing Minix). In
my experience, this just does not
work. At least, it does not for some introductory courses I teach.
To make an analogy, it is best
to learn first how to drive a car, and then it might be of interest how the car
actually works.
.PP
.B "The proposed book fills a huge gap" ,
that between how-tos and existing operating systems textbooks.
I was very reticent to write this book, but evidence has just forced me to do so.
.PP
The book is intended for a
.B "first semester on Operating Systems" .
This is usually
followed by a second semester where a more classical approach including all
relevant theory can be applied.
.PP
This work is being done to be used in our first semester in Operating Systems
at Rey Juan Carlos University.  It describes, for someone who has (basic) programming
skills, how to effectively use a system. At the same time, it introduces most
of the system abstractions to the student, for the first time. 
.PP
An important point is that the system described is an excellent one. It
is very clean, while being more powerful than other systems. It was implemented by people
very respected in the field. The book describes system interfaces using
Plan 9 from Bell Labs, the system made by the same group that made UNIX
(and C) in the 70s. Using other systems
to teach operating systems, like for example Linux or Windows,
makes the students focus on particular system details
(that are likely to change really soon) instead of learning the concepts and
acquiring the skill of effectively using a system.
In any case, the system used in the book is close enough to UNIX to let
students use Linux effectively really soon after completing the course.
.PP
People that got access to the draft have reported that it is outstanding. Indeed,
I know that it is being recommended by some group working at IBM's
research center in Austin, and by a professor at CMU that had access to the draft
as well. Few peopled had access to the text, but those who had found it very
useful.
.SH
Outstanding features
.IP •
This work describes a system built by some of the most reputed
systems programmers. With clean interfaces. Excellent for teaching purposes,
and still very useful to learn how to use a system for the first time.
.IP •
By reading the book, the reader can learn how to effectively use an entire
system even if he/she just followed some programming courses.
.IP •
The book introduces theory in a very practical way, introducing problems
(solved through the book) that force the student to require more concepts
and tools to solve them. It focuses on the need to motivate students so they
really want to learn more to solve their problems.
.IP •
The book covers topics really necessary, but usually forgotten in operating
systems texts. For example, graphical user interfaces.
.IP •
As far as I know, this is the only book with a description of a
.I modern
system. Most other texts focus on technology that (despite the hype) comes
actually from the 70s. At least, the book prepares the students for things to come,
which is what college is for in the end.
.IP •
Many ideas described in the book haven been applied to Linux and other
systems as advanced features. Therefore, although introductory, the book provides
very useful insights not usually covered on other texts.
.IP •
The system used in the book is open software, and can be download and used
for free.
.IP •
The system used really can be understood by a single person. That does not
happens anymore with UNIX (e.g., Linux) or Windows, which are the systems
of choice for most other books.. This is very frustrating for
students (and professors) that still believe in magic after following a systems course.
.IP •
There is another book available from the author that describes, line by line,
how the system implementation works. So, there is potential for continuing
using the same system in following courses. This book has been a great
success and has been used by most people in the Plan 9 community.  All the
students at Rey Juan Carlos University (and other centers) are using it. It is
available at
.CW http://lsub.org/who/nemo/9.pdf.gz .
.IP •
Last but not least, the book is easy to read. This is very hard to achieve for
systems books, but it seems to be the case according to people with access
to the draft.
.SH
Competition
.IP
.B "Theoretical OS books" .
Most of books on Operating
Systems made to be used as textbooks can be found here. There is no need
to cite them. Their aim is to
introduce the reader to theoretical OS concepts. They are really 
useful in that a newcomer to the field is better exposed to OS issues
by reading first one of them. However, readers still do not know how all this
applies to applications they build, and to systems they use. Despite the examples.
It is hard to teach how a car works to anyone who does not drive.
.IP
.B "Internals books" .
Books describing internals of 
Operating Systems, describe the main design guidelines of operating systems in-use.
I consider these books intermeditate between the classical textbooks and
books describing an implementation. Such books are for more advanced courses
(or more knowledgeable readers) and are not a real competition for the proposed book.
.IP
.B "How-Tos" .
Books like those from O'Really are excellent to get a quick start for particular
tools. However, they are not well suited for teaching, and they do not expose
the reader to the systems abstractions and classic concepts about how to
use a system.
Not to talk about the systems they use. Most of them are more than
30 years old now, and not very appropriate for a University course.
.SH
Pedagogical elements
.LP
Probably the main point of the book is that all the book is a big
example of how a system is used. The reader has available several
versions of the system described and can use it to see how things work.
Furthermore, the system is close enough to Linux to allow the student to
explore his/her Linux system.
.PP
The book has been built according to the experience of the author. He needed
a book to introduce operating systems concepts (by showing what they do, and
how they are used and applied), but sadly, he could not find any such book.
.PP
The book is centered on solving practical problems, motivating students to
learn concepts and tactics for effectively using a system.
.PP
There is more documentation and some other tools available from the author,
that we are using in our lectures.
.PP
In few words,
.B "this is just the book for getting introduced to operating systems.
.SH
Audience/market
.LP
The intended audience is made of  students of introductory
operating systems courses, as well as of people who want to learn
how a system is used. In this respect, the audience is also made of
people wanting to use good interfaces done by well-reputed programmers like
the ones who built UNIX, C, and Plan 9. 
.PP
There is a growing and widespread interest in Linux and Unix like systems
and operating systems in general.
More and more people are interested in how to use effectively
an operating system. Unix
systems have grown to be too complex to be understood by just one person.
.PP
Therefore, audience would include anyone willing to learn how a full
fledge operating system works. This includes hobbyists, professional
programmers and
and CS an CE students. All this is specially true for people interested in
Unix since the system it is based on one which was written by the
people who designed and implemented it after realizing their mistakes.
.LP
After reading the book, the reader will learn:
.IP 1
What a system is
.IP 2
How is it used.
.IP 3
How to automate tasks, to let the machine do the job.
.IP 4
Why most system interfaces have particular functionalities.
.IP 5
How complex things can be done in a (more) simple way.
.LP
The requisite for understanding the book is a to know how to program.
It would help to have knowledge about basic computer architecture concepts.
.SH
Promotion
.LP
The main user group useful to promote the book is the
community of Plan 9 users, which can be reached through
.CW [email protected] .
.PP
In any case, all Linux user communities will be interested on this book, because
after all, it describes the system built after considering that UNIX (hence Linux)
had serious problems regaring networks and other technologies. Most (if not all!)
knowledge gained by reading the book will be very useful for using a UNIX system.
.PP
The book should be shelved in the ``Operating Systems'' bookstore category.
.SH
Support
.LP
The early draft of the book is going to be used during the next semester
course at Rey Juan Carlos University of Madrid. Supplementary material
may be made available on its web site. See
.CW http://lsub.org/cursos .
.PP
A second book, and
the implementation of the Plan 9 system is the main supplementary
material. All the source code for Plan 9 applications and commands is
easy to read and understand after reading the book. There is much to learn
by doing so.
.PP
It is important that the code is available  from the internet, at
.CW http://plan9.bell-labs.com .
It can be downloaded for free by people
following the book, and this is important.
.SH
Status
.LP
An initial draft has been completed. It certainly needs reviewing and more work
but
its current state is good enough to be used in a real OS course.
.PP
The book is about 390 pages long on A4 paper, and has been formatted using
tools from the system described.
.PP
The book itself does not include copyrighted material, as far as I know.
.SH
Reviewers
.LP
Authors of the system can be invaluable reviewers. In fact, Rob Pike
and other authors of the system might be willing to revise
the manuscript. All of them had access to the draft.
.SH
Table of Contents and Sample chapters
.LP
The current version of the draft can be downloaded only for
evaluation purposes from
.CW http://lsub.org/who/nemo/9.intro.pdf .
Please, do not distribute more than needed to review and evaluate.
.SH
Curriculum Vitae Excerpt
.LP
Prof.  Francisco J. Ballesteros (http://lsub.org/who/nemo) got his MS
in CS on 1993 and his PhD on CS on 1998, at Technical University of
Madrid.  While an undergraduate, he got several grants from European
research projects where he developed run-time software for programming
languages.  Later, he worked for several years on telecommunications
companies, doing systems software (He is the (co)author of LiS, a
STREAMS framework for Linux.) Since 1995 he has been a professor at
several Spanish Universities where he has been teaching and developing
Operating Systems.  He developed the Off++ kernel, for the 2K
Operating System jointly with the SRG at University of Illinois at
Urbana Champaign.  2K evolved later into the Gaia OS. He has been
working in R&D on both the Plan 9 from Bell Labs and the Plan B
Operating Systems.  He is the head of the Systems Lab
(http://lsub.org) where Plan B is being developed. At present, he is
teaching five lectures on Operating Systems, and doing research in the
field.
A list of publications can be found at the web page.

ESCET, Universidad Rey Juan carlos. C/ Tulipan s/n 
E-28933 Mostoles (Madrid, Spain).

Phone: +34-91-664-7469 (work) +34-91-684-4123 (home)

Mobile: +34-66-770-1004

Mail: [email protected]