Difference between revisions of "Introduction"

From Soma-notes
Jump to navigation Jump to search
Line 1: Line 1:
== Lecture Notes: September 10th, 2007 ==
TBA
 
This lecture covered Administrative items and a part of the Introduction.
 
=== Administrative ===
 
==== Textbook ====
 
Dr Somayaji has used the 3rd edition textbook before.  It isn't ideal, but it will suffice.  If you wish to a different textbook, you're expected to ensure that it covers the topics as covered in class.
 
==== Exams, Tests, Quizzes, Labs, Assignments ====
 
There will be no quizzes and no final exam.  There will be 4 labs, 2 tests, and a term paper.  We may collaborate on the labs, but not on the quizzes and term paper.
 
<math>\tfrac{1}{2}</math> to <math>\tfrac{2}{3}</math> of a test is designed to be easy, with the remainder being more difficult.
 
==== Term Paper ====
 
Choice of topic for term paper is fairly flexible. Take what you know in other areas of computer
science and integrate them in the paper. Include your own interests.  The most common mistake seen
is to take an idea for the exact paper, and then do research to fulfill the paper.  Do research first, then come up
with a topic, as the thing you want to write on may not have been written about yet.
 
For bibliographies, use the form found in most papers and journals.  Bibtex is great for bibliographies.
 
Google scholar is a great place to start looking for papers.  Many journals are only accessible by subscription, however the [http://library.carleton.ca Carleton University Library] provides access to students both onsite and off.  You will need your student ID in order to authenticate from off-site.  While on-site, you should be able to access the journals without authentication.
 
A useful trick is to take the URL of a journal article and append ''proxy.library.com'' to the domain name portion of the URL.
 
==== Extra Credit ====
 
Dr Somayaji would like to build a class notes wiki.  You can get up to 3 percent added to your final mark if you participate and do an outstanding job.  Lower quality jobs will result in less extra credit.  You will be able to volunteer once during term. 
 
==== Labs ====
 
You are expected to attend the first lab for each lab assignment, as there
will be marks given for work done in class. This is sort of a way to take
attendance, as well as to help students get started with assignments. This
means there's 4 mandatory tutorials. Students are encouraged to attend all of
the labs. Labs will take longer than one assignment. Don’t be discouraged by
students who manage to finish labs in one hour, as they may have experience
with operating systems already, or may have taken the course before.
 
==== Term Papers ====
 
You may talk to each other about papers to get feedback, but each paper is
supposed to be your own work.
 
Plagiarism is a big deal, and some students of COMP3000 have been caught plagarizing in
the past. '''Do not plagiarize.''' The official policy requires handing over the
plagiarized paper and student to the dean for discipline.
 
You can't just cut and paste. If a section in
another person's work is fundamentally the same as yours, this is still
plagiarism. The paper is supposed to be your own work. Figures cannot just be cut
and pasted. You must redraw it yourself, then cite it. Using a thesaurus to
rephrase every word will not work.  This is still fundamentally someone else's work.
 
This issue carries over into the commercial world, even in code: Free code may
not be free -- read the licenses. Incorporating some 3rd party code may
require your company to divulge all of their code into the wild.
 
Watch out for incorporating something but only tweaking it. 
 
You should read your sources, put them away, and then pull them back out to
put the citations in...  This should help avoid plagiarizing, unless you have a
photographic memory.
 
==== Lectures ====
 
Question from the floor:  How do you structure the lectures?
 
Dr Somayaji tries to keep the tests to the material in the text and tests.
The lectures will vary, and he considers them to be a performance.  Skipping
class will result in some interesting material getting missed, but you should
do acceptably by reading the text and doing the assignments.  The goal of the
lectures, however, is to make it worth your time to attend.
 
One of the things that universities are struggling with is, especially with the
compute science field, is why are we still requiring students to attend in person?  Part
of this is that lectures and other interactions with professors an TAs encourage
a different learning due to physical presence.  There is a different type of energy, different
type of synergy.  Being able to see reactions of students helps to fine tune the lecture.
 
 
==== Optional Reading ====
 
Over thanksgiving, students are encouraged to read the [http://web.mac.com/nealstephenson/Neal_Stephensons_Site/Home.html Neal Stephenson]'s article [http://www.cryptonomicon.com/beginning.html In the Beginning was the Command Line]. While
he's not entirely correct that UNIX is the one true computer science operating
system, it is almost true. UNIX wasn't built to fulfill a commercial niche. It was
built for programmers by programmers. It has survived because it has been
useful to programmers.
 
One of the first things that tends to happen to most new Operating Systems or
platforms is that some part of unix or some variant of unix is ported to it (such as [http://www.netbsd.org/ NetBSD] or [http://www.linux.org/ Linux].
Additionally, things like cygwin will pop up to allow you to port applications
and programs over. [http://www.cygwin.com/ Cygwin] works fairly well, but not perfectly.  This is like
a handyman going to a new job.  He's going to bring some of his favorite tools
with him to use at the new job.  You bring along your favorite tools because
you're familiar with them and can do powerful things with them. 
 
While we mostly hear about unix in class, we'll still hear about windows some.
 
=== Introduction ===
 
What is an operating system?
 
Student: A large piece of software that interfaces with the machine's hardware
to allow a user to interact with the computer to perform actions.
 
Dr Somayaji doesn't like the size qualifier.
 
The operating system turns the hardware (the computer that you have) into the
computer that you want (the applications).
 
{|align="right"
|[[Image:Comp3000_lecture1_figure1.png]]
|}
Ideally an application should not depend on specific hardware, but rather
generic things - not a specific brand of mouse, but rather any mouse by
abstraction.
 
This is an interesting time to talk about operating systems, as this model
of operating system is becoming more and more obsolete. Part of this is that
more and more big applications are becoming part of the operating system (eg
browsers). Even the protection and privilege level separation is becoming
blurred. For example, Internet Explorer's HTML rendering engine is an object that can be used
by many other applications, making it an operating system service. This has
resulted in lawsuits surrounding what an Operating System is. Dr. Somayaji tends to take the
larger view that rather than the more specific view that the layer that talks to
the hardware is the Operating System.
 
What's newer, even if the idea is old, is an idea that has become really hot
in the last 5 years (but has been around for 10 years). Virtualization. VMWare
is now worth many billions of dollars. Xensource got bought by citrix.
 
How many people like to install Windows?  (Nobody raised their hand).
 
The reason that this is important is that its a huge pain to install operating
systems. So system administrators turn around and turn the OS into an
application, and just take copies of a new image and replace the OS image with
the new image to upgrade with instead.
 
OS <math>\leftrightarrow</math> Application interface is the system calls.
 
{|align="right"
|[[Image:Comp3000_lecture1_figure2.png]]
|}
OS <math>\leftrightarrow</math> Hypervisor interface/provides virtual hardware to the OS (eg: here's an abstract
disk, keyboard, network). This abstraction is mapped as the hypervisor sees
fit onto hardware.
 
Having software provide virtual hardware requires a few tricks, as some
instructions on a processor go straight to the hardware making virtualization
hard.  Fortunately, Intel and AMD have provided extensions to help with this
(VTx).
 
The main point to keep in mind here is that operating systems have
traditionally provided imaginary or virtual things for applications to play
with. Such as "Oh, you want memory?", I'll give you memory.. But what it gives
you may not correspond to memory at all. Say you asked for a megabyte of
memory, it may not actually give you it at that time, but only give it to you
when you use it.  The same goes with CPUs and the hypervisor.  It may not give
you a real CPU at that time.
 
The other big trend going on that makes things interesting that is going has
to do with gaming systems.  Game manufacturers want to write their game for
all of the platforms...  The hardware, however, is remarkably different. 
Modern PCs are moving towards 2-4 cores plus graphics processors.  Managing
multiple CPUs is a bit tricky, but we know how to do it.  The hard part
comes in with the graphics processors and non-traditional processors, such as
the cell processor:  The cell processor is 9 cores, but each core is specialized
and not symmetric.  They're not all general purpose.
 
{|align="right"
|[[Image:Comp3000_lecture1_cell_processor.png]]
|}
A standard cell processor has 8 SPUs and a central core, but one can be bad.
The PS3 has 7 SPUs+Central CPU. It is a standard PPC (Power PC) core. The SPUs implement
SIMD. This takes one instruction and
applies it to multiple data items. Can do the op to an entire array at once.
Processing graphics and sound need to process big arrays.  This is what
graphics cards to to a large extent.  This means that they're not good for
general purpose code.  There's no decision making capability (branching).
 
; SISD : Single Instruction Single Data.  Plain vanilla processors.
; SIMD : Single instruction multiple data
; MIMD : Multiple Instructions Multiple Data.
 
How do you use these? How do you co-ordinate these processors? How do you
abstract this division between CPU and GPU.
 
The XBox 360 is closer to a PC in that it has multiple CPUs and a GPU.
Developing for the PS3 versus the XBox is thus very different.
 
Hardware is becoming more and more parallel, but more and more dedicated
purpose.

Revision as of 21:55, 15 September 2007

TBA