Learning goals

This course is introductory in the subject of Operating Systems and its main objective is to understand the general principles of Operating Systems through using and programming in UNIX.

The aim of the course is for students to study and get acquainted with an MS. which was originally created for developers as well as to distinguish the philosophy behind an OS. "Back" from the graphical environments.

The students are invited to understand and consider how to use a shell as well as how it interacts with the operating system.

The purpose of the course is for students to understand how an "Operating System" works and how to use it.

During the course the students have the opportunity to get to know the powerful weapons a developer uses by using an OS on a shell level and to know the philosophy of "I do complicated actions by combining simple autonomous commands that communicate with each other".

Upon successful completion of the course the student should:

  1. has understood the basic principles of the UNIX operating system and how the OS works, files, users, user groups, processes, kernel.
  2. has understood the Applications-Shell-Core relationship.
  3. is able to use shell commands, shell variables, environment variables.
  4. has understood the use of "quotes".
  5. be able to implement basic file management and editing commands.
  6. has understood the operating philosophy of file systems.
  7. is able to use wildcards.
  8. has understood the meaning of processes, their properties and signals and should be able to handle them constructively.
  9. know the ways of process communication and should be able to compose complex commands with a combination of simple commands.
  10. has understood the philosophy of filters and to be able to create filters or to combine constructively existing filters.
  11. has understood the use of regular expressions and be able to create regular expressions.
  12. has understood how the Operating System manipulates scripts and interpreted programs.
  13. knows the capabilities of the shell in relation to command execution, command prompts, and loop structures.
  14. knows the structure of the android operating system.

General Capabilities

Upon completion of the course the student has acquired the following knowledge and skills:

  1. through laboratory exercises, the student has the ability to use constructively a UNIX operating system and can program using known tools given to him by the Operating System.
  2. has understood the basic operating principles of an Operating System to deepen in the lesson "Principles of Designing Operating Systems".
  3. has expanded his / her knowledge and skills with regard to how to use computers beyond classical use through window environments.

Course Content

  1. Introduction to UNIX: Understanding the UNIX operating system, Description of the philosophy and mode of the OS, Files, users, user groups, processes, kernel.
  2. Applications-Shell-Kernel: Introduction to shell usage, use of basic commands, shell variables, environment variables, quotes, basic file management and editing commands.
  3. File system: Access to file system, paths, access permissions, file management, links, basic types of UNIX file systems and other operating systems (fat, ntfs, ext, ...), UNIX devices.
  4. Shell and files: use of wildcards.
  5. Processes: process management, properties, signals, the /proc system.
  6. Process communication: pipelining & redirection, use and programming of filters.
  7. Regular expressions and their use through UNIX tools (grep, sed).
  8. Shell programming: UNIX command interpreters, Command execution check, Command operators, Repeat structures.
  9. Introduction to mobile Operating Systems: Kernel, Users, groups, Applications, File System.

Books

  1. Notes and material can be found on this site.
  2. Greek Students can get from the evdoxus system one of the following:
    1. ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΚΑΙ ΤΟ UNIX/LINUX, Σιδηρόπουλος Αντώνης, ISBN: 9786182210284, Κωδικός Βιβλίου στον Εύδοξο: 122077484
    2. The UNIX Programming Environment, Kernigham & Pike
    3. Linux, Μάργαρης Αθανάσιος, Κωδικός Βιβλίου στον Εύδοξο: 102072090

Bibliography

  1. Greek
    1. Γαρμπής Αριστογιάννης, ΛΕΙΤΟΥΡΓΙΚΆ ΣΥΣΤΉΜΑΤΑ, Πανεπιστημιακές εκδόσεις Αρακυνθος.
    2. Ιωάννης Κάβουρας, “Λειτουργικά Συστήματα”, 6η έκδοση, Εκδόσεις Κλειδάριθμος, 2003.
    3. Μάργαρης Αθανάσιος, "Linux", 1η έκδοση, Εκδόσεις ΕΚΔΟΣΕΙΣ Α. ΤΖΙΟΛΑ & ΥΙΟΙ Α.Ε.
  2. International
    1. Brian W. Kernighan, Rob Pike, "The UNIX Programming Environment"
    2. Augie Hansen, "Introduction to UNIX"
    3. William Stallings, "Operating Systems: Internals and Design Principles"
    4. Andrew S. Tanenbaum, "Modern Operating Systems"
    5. Abraham Silberschatz, Peter Baer Galvin and Greg Gagne, "Operating System Concepts"
    6. Paul Love, Joe Merlino, Craig Zimmerman, Jeremy C. Reed, and Paul Weinstein, “Beginning UNIX”, Wiley Publishing, Inc. 2005
    7. Neil Matthew, Richard Stones, “Beginning Linux®Programming”, Wiley Publishing, Inc. 2004