Operating Systems

Base Knowledge

Knowledge of the matters listed below is absolutely essential and necessary:

  • Programming in C (Introduction to Programming, Programming, 1st year)
  • Computer architectures and technologies (Computer Technologies and Architectures, 1st year)

Teaching Methodologies

Classes are theoretical and practical. In theoretical classes, an expository methodology is used to present the theoretical foundations of the subject with application examples. In practical classes, students apply the knowledge of theoretical classes, developing applications, under the supervision of teachers. Outside classes, students develop, in groups of two, a medium-sized project whose progress is checked in an intermediate stage and evaluated in a final stage.

Learning Results

Skills to be acquired and developed by students in this course:

  • Understand, explain and justify the inner workings of modern operating systems
  • Understand, explain and plan the operation and administration of Unix/Linux systems
  • Understand, plan, develop, explain, and justify the development of C applications for the Unix platform
  • Plan and prepare technical documentation on software projects for systems.

Program

The course syllabus is organized into 3 themes:

  • Introduction and functioning of the Unix system and environment and its operation.
  • Development of Unix applications in C.
  • Theoretical foundations of operating systems.

Introduction and operation of the Unix system and environment and its operation:

  • Basic concepts and mechanisms underlying the operation of Linux from a configuration point of view.
    • System startup and startup. Partitions and file systems. Typical Unix file system. Protection and permissions of users and files in Unix. sudo and setuid bit mechanisms. Configuration of Linux basics.
  • Unix commands and Bash programming – System introduction and topics of using the Unix/Linux system from the command line from a user and administrator point of view.
    • Introduction to the Unix system from the user’s point of view. i) Architecture and main components, ii) System startup, iii) login process, iv) File system
    • Unix commands for i) file and directory manipulation, ii) Process management, iii) User management iv) Information extraction and manipulation in structured text files, v) Redirection.
    • Introduction to Shell Script (Bash) programming

 Unix application development in C.

  • Introductory and fundamental aspects of application development for Unix environment.
  • Build process. Source, object, library and executable files. Library functions and system functions.
  • Programs and processes. Creation of processes. Fork and exec mechanisms. Processes management. PID
  • Signals. Simple synchronization mechanisms with signals. Application examples
  • Unix I/O. Files and file table. Redirection and anonymous pipes. Introduction to file system manipulation functions
  • Named pipes in Unix. Applications in client-server model. Synchronous and asynchronous operation.
  • Multithreaded programming in Unix
  • Simple synchronization with binary semaphores and conditional variables

 

Theoretical foundations of operating systems. Theoretical concepts of operating systems covering 1) general topics, 2) architecture, 3) implementation topics, 4) process management, 5) memory management.

  • 1 General concepts.
    • Goals of operating systems. Programs, processes and threads. Types of systems. Operating system architecture. Operating systems kernel.
  • 2 Topics in Multitasking and Synchronization Programming
    • Multi-task programming. Introduction to Synchronization: Logical latches and mutexes. Conditional variables.
  • 3 System Implementation Topics
    • Process implementation. Execution Modes. Kernel space and user space. Interruptions control and their application for system implementation. System call implementation. Implementation of logical latches and mutexes. Kernel mode programming topics.
  • 4 Process management
    • Scheduling types and algorithms. State and life cycle of processes. Scheduling and performance metrics.
  • 5 Memory management
    • Fundamental concepts of memory management. Virtual Addressing. Types of virtual addressing. Virtual memory management algorithms.

Curricular Unit Teachers

Internship(s)

NAO

Bibliography

Main references

Marques, J. A., Guedes, P. (1998). Fundamentos de Sistemas Operativos (4rd ed.), Editorial Presença – 1A-3-114

Silberschatz, A., Galvin, P. B., Gagne, G. (2009). Operating Systems Concepts (8th ed.), Wiley & Sons – 1A-3-137

Matthew, N., Stones R., (1999). Beginning Linux Programming (2nd ed.), Wrox press – 1A-3-155

 

Complementary references

Stallings, W. (2017). Operating Systems: Internals and Design Principles (9th ed.), Pearson
 
Marques, J. A., Ferreira, P., Ribeiro, C., Veiga, L., Rodrigues, R. (2012). Sistemas Operativos (2nd ed.), FCA
  
Wirzenius L., (2021). The Linux System Administrators’ Guide, The Linux Documentation Project, online: https://tldp.org/