Introduction to Operating Systems

General

Educational goals

This course is an introductory course on Operating Systems and aims to the understanding of the general principles of Operating Systems through use and programming at UNIX. The aim of the course is for the students to study and use an OS originally created for developers. Also, to discern the philosophy of an OS "behind" the graphical interface. In the course, the students are invited to understand and consider how to use a shell as well as how it interacts with the OS. The purpose of this course is for students to understand how an "Operating System" works and how they can take advantage of it. During the course, students have the opportunity to get involved with the powerful weapons available to a programmer at the shell level and get to know its philosophy of "doing complicated things by combining simple autonomous commands that communicate with each other". Finally, students will get to know the structure of the Android Operating System, which also belongs to the UNIX Operating System family. Upon successful completion of the course the student should:

  • has understood the basic principles of the UNIX operating system and how the OS works, files, users, user groups, processes, kernel as well as the Applications-Shell-Core relationship.
  • is able to use shell commands, shell variables, environment variables, "quotes", wildcards. Also, is able to implement basic file management and editing commands and has understood the operating philosophy of file systems.
  • has understood the meaning of processes, their properties and signals and should be able to handle them constructively.
  • know the ways of process communication and should be able to compose complex commands with a combination of simple commands.
  • Also, has understood the philosophy of filters and to be able to create filters or to combine constructively existing filters.
  • has understood the use of regular expressions and be able to create regular expressions.
  • has understood the meaning of processes, their properties and signals and should be able to handle them constructively.
  • knows the capabilities of the shell in relation to command execution, command prompts, and loop structures.
  • knows the structure of the android operating system.
General Skills
  • Upon completion of the course the student has acquired the following knowledge and skills:
  • 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.
  • has understood the basic operating principles of an Operating System to deepen in the lesson "Principles of Designing Operating Systems".
  • has expanded his / her knowledge and skills with regard to how to use computers beyond classical use through window environments.

Course Contents

  • Introduction to UNIX: Understanding the UNIX operating system, Description of the philosophy and mode of the OS, Files, users, user groups, processes, kernel.
  • Applications-Shell-Kernel: Introduction to shell usage, use of basic commands, shell variables, environment variables, quotes, basic file management and editing commands.
  • 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.
  • Shell and files: use of wildcards.
  • Processes: process management, properties, signals, the /proc system.
  • Process communication: pipelining & redirection, use and programming of filters.
  • Regular expressions and their use through UNIX tools (grep, sed).
  • Shell programming: UNIX command interpreters, Command execution check, Command operators, Repeat structures.
  • Introduction to mobile Operating Systems: Kernel, Users, groups, Applications, File System.

Teaching Methods - Evaluation

Teaching Method
  • The lectures of the course are held in the classrooms of the Department of Informatics and Electronic Systems Engineering.
Teaching Organization
Activity Semester workload
Lectures52
Laboratory exercises13
Individual study and analysis of literature40
Problem solving and Practice at Home75
Total 180
Students evaluation

Students' grades are computed from the aggregation of laboratory exercises and the final theoretical examination. Laboratory exercises that are graded are examined in the form of a test in the laboratory.

Recommended Bibliography

Recommended Bibliography through "Eudoxus"
  1. Introduction to Operating Systems (Greek), Antonis Sidiropoulos, ISBN: 9786182210284, Code in Evdoxus: 122077484
  2. The UNIX Programming Environment (translated in Greek), Kernigham & Pike, ISBN: 978-960-332-208-5, Code in Evdoxus: 12530814
  3. Linux, Margaris Athanasios, Code in Evdoxus: 102072090
Complementary greek bibliography
  1. Beginning Modern Unix, ISBN: 9781484235287, Code in Evdoxus: 91677536