Summer
2014


Operating Systems  I 
 (Bachelor)

    

VL:
and

Tuesday,
Thursday,

RUD 25, 3.001,

13:15-14:45,

Redlich

 

UE:
or

Monday,
Tuesday,

RUD 25, 3.113,
RUD 26, 1.306,

09:15-10:45,
09:15-10:45,

Sombrutzki


Computer Science Department
Systems Architecture Group


Ergebnisse der Klausur vom 28.Juli 2014  >>> hier <<<
(Einsicht fand am 09.August 2014 statt)

 
Abstract: An operating system (OS) is the software responsible for controlling and managing hardware and basic system operations, as well as running application software such as word processing programs, Web browsers, and many others. In general, the operating system is the first layer of software loaded into memory when a computer starts up. All other software that gets loaded after it depends on the operating system to provide various common core services, such as disk access, memory management, process scheduling, and user interfaces. As operating systems evolve, ever more services are expected to be common core. These days, an OS may be required to provide network and Internet connectivity and also to protect the computer's other software from damage by malicious programs, such as viruses. Operating systems in widespread use on personal computers (PC) have consolidated into two families: the Microsoft Windows family and the Unix-like family. Mainframe computers and embedded systems use a variety of different operating systems, many with no direct connection to Windows or Unix.

Building Operating Systems is much about studying existing systems, knowing common problems, knowing what other people did, and figuring out if their ideas can be applied to a given new problem. These long-lasting principles - as opposed to implementation details and user interfaces of today's systems/software - is what this lecture is about.

 
Synopsis:
  • Praktische Informatik, Bachelor 5 SP / Bachelor 8 SP / Diplom 8 SP
  • Offered regularly, at least once every two years, usually in summer.
  • 2 lectures per week, 2h each, over one semester (4SWS VL).
  • 1 lab (Übungen/Praktikum) per week, 2h each, over one semester (2SWS UE).

Credits and grading:

  • There will be a few, short, unannounced, closed-book quizzes to verify your existence and to test your understanding.
  • To qualify for the final written examination (at the end of the semester), you have to complete all lab assignments to the satisfaction of the teaching assistant (70% of all points).
  • Regular class attendance is expected; frequent absences are grounds for a failing grade regardless of other performance. You may be missing up to 1 lecture per semester without prior and reasonable excuse. 'prior' means notification by email before the end of business the day before the lecture. 'reasonable' means sickness or study-related events that require your attendance.
  • Lectures begin on time. Students arriving more than 10 minutes late will not be admitted to the lecture and will be counted as 'missing' that day.

Prerequisites:

  • Expertise with C and common development tools (gcc, make, rpm, cvs) absolutely required. C++ optional.

 

Lab (Standard-Praktikum):

Lab Slides:    https://svn.informatik.hu-berlin.de/svn/osp1/2014-SoSe/labs/    (Informatik-Login)

Exercise Slides:    https://svn.informatik.hu-berlin.de/svn/osp1/2014-SoSe/ue/    (Informatik-Login)

  • C & Assembler
  • Assembler 2
  • Matlab & Statistik
  • Kontextwechsel in Assembler
  • Mutex, Semaphore & Atomic
  • Event & Threads (select,...)
  • Dynamic Linking
  • Klausurvorbereitung


Syllabus:

    Administrative Information   [ slides]

  1. Introduction  
    What is an OS? History.   
    [ slides]
    Typical OS structures. System Call.   
    [ slides]

     
    Aufzählung Dijkstra: The structure of the THE multiprogramming system  (THE)
    Aufzählung Corbato: An Experimental Time-Sharing System (CTSS)
    Aufzählung Feiertag: The Multics Input Output system (MULTICS)
    Aufzählung Ritchie: The UNIX time-sharing system (UNIX)
    Aufzählung Rashid: Accent - A communication oriented network OS kernel (MACH)
     
    Aufzählung Kaashoek: Exterminate all operating system abstractions
    Aufzählung Kaashoek: Exokernel: An operating system architecture for application-level resource management


     

  2. Processes   
    1. Process Abstraction (in Unix and Windows)    [ slides]
      Process state. Process Control Block. Context Switch. Protection.
       
      AufzählungUnix Programming FAQ - Process Control
       
    2. CPU Scheduling      [ slides]
      Latency vs. throughput, Optimization goals. FIFO, Round Robin, SJF, Priority scheduling, multi-level feedback queue, lottery scheduling.
       
      Aufzählung Mitzenmacher:The Power of Two Choices in Randomized Load Balancing
      Aufzählung linux-cfs.pdf
      Aufzählung sched-design.CFS.txt
       
    3. Threads      [ slides]
      User-level/kernel-level threads. Shared variables. Lost update problem.
       
      Aufzählung An Introduction to Programming with Threads
      Aufzählung Getting Started With POSIX Threads
      Aufzählung Multithreaded Programming Guide
      Aufzählung Engelschall: Portable Multithreading  (signal stack trick for User-Level Threads)
       
    4. Concurrency and Synchronization          [ slides]
      Race condition. Atomic instructions. Mutual exclusion. Spin locks, blocking locks, semaphores, monitors, optimistic (wait-free) synchronization.
       
      Aufzählung Lamport: A fast mutual exclusion algorithm
      Aufzählung Fast Mutual Exclusion for Uniprocessors (Restartable Atomic Sequence)
      Aufzählung Lampson: Experience with Processes and Monitors in Mesa
      Aufzählung The Little Book of Semaphores
       
    5. Deadlocks         [ slides]
      Coffman Conditions. Deadlock Prevention, Avoidance, Detection&Recovery; Lifelock.
       
      Aufzählung Coffman: System Deadlocks
      Aufzählung EWD 623: The mathematics behind the Banker’s Algorithm
       

     

  3. Memory Management
    1. Virtual Memory          [ slides]
      Virtual Address. Page Table, MMU. Memory protection. Shared memory.
       
    2. Demand Paging and Trashing          [ slides]
      Demand paging. Trashing, Page fault frequency, Working set, Balance set.
       
      Aufzählung Balady's Anomaly: FIFO anomaly is unbounded
       
    3. Linking           [ slides]
      Static linking. Dynamic linking. Shared libraries.
       
      Aufzählung How To Write Shared Libraries
      Aufzählung ELF format.pdf
      Aufzählung GNU Assembler
      AufzählungLinkers and Loaders (book manuscript): http://www.iecc.com/linker/

       
  4. Mass Storage
    1. Disk Storage    [ slides]
      Hard Disk Drive (HDD), Access time (seek/rotational/transfer delay). RAID 0,1,2,4,5,6. Storage Center.
       
      Aufzählung Hard Disk Drive Basics
      Aufzählung RAID: High-Performance, Reliable Secondary Storage
       
    2. File Systems      [ slides]
      Dos-FAT, Unix-FS (i-node), NTFS.
      Log-structured File Systems, e.g. Flash File Systems
       
    3. Flash File Systems      [ slides]
      NAND, NOR-Flash, FTL, JAFFS
       

Further Readings:

AufzählungSilberschatz, Galvin, Gagne. Operating System Concepts. 6th Edition. John Wiley & Sonns, 2003. ISBN 0-471-25060-0
AufzählungWilliam Stallings. Betriebssysteme – Prinzipien und Umsetzung. 4. Auflage. Prentice Hall, 2003. ISBN 3-8273-7030-2
AufzählungAndrew Tanenbaum. Moderne Betriebssysteme. 2002. ISBN 3827370191
AufzählungThomas Anderson, Michael Dahlin. Operating Systems - Principles and Practice. , Recursive Books, 2012. ISBN 978-0-9856735-1-2
AufzählungR. G. Herrtwich and G. Hommel. Kooperation und Konkurrenz - Nebenläufige, verteilte und echtzeitabhängige Programmsysteme. Springer-Verlag, 1989. ISBN 3-540-51701-4.
AufzählungH. Kopetz. Real-Time Systems: Design Principles for Distributed Embedded Applications. Kluwer Academic Publishers, 1997. ISBN 0-7923-9894-7.
AufzählungJoseph Pranevich, The Wonderful World of Linux 2.6.
http://www.kniggit.net/wwol26.html (cached pdf)
AufzählungUnix Programming FAQ: http://www.erlenstar.demon.co.uk/unix/faq_toc.html
 Links
Stanford
CS 140
Middleware
(Prof.Redlich, HU-B)
Security Engineering
(Dr.Müller, HU-B)
Secure SysAdmin
(Dr.Bell, HU-B)
Unix API and Tools
(Dr.Bell, HU-B)
IBM Mainframes
(Profs.Redlich/Spruth)
Rechnerkommunikation I
(Dr.Sommer, HU-B)
Rechnerkommunikation II
(Dr.Sommer, HU-B)
Mobile/Embedded Systems
(Dr.Richling, HU-B)

Book: Silberschatz
OS Principles

Open VMS
HP Documentation

HPI-Potsdam
Prof. Polze: Operating Systems Principles

MIT
Exokernel Operating System

Legal disclaimer. .  © 2024 Humboldt-Universität zu Berlin, Computer Science Department, Systems Architecture Group. Contact: sar@informatik.hu-berlin.de .