|
|
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.
| |