Operating Systems

Base Knowledge

Algorithms and Programming I, Algorithms and Programming II, Computer Architecture and Mathematics Analysis I.
Although there is no defined precedence, the student should have basic knowledge in several areas, namely algorithms and programming, mathematical logic, problem interpretation, algorithmic modeling and representation (at least procedural/structured) of problem solutions.

Teaching Methodologies

Classes are taught in a theoretical-practical regime, using computers and digital tools. A dynamic teaching and learning process will be used, fundamentally interactive, with support for digital tools and based on the “Scrum” and “Flipped Classroom” methodologies (type of “Blended learning”), student-centred, provision of teaching materials in advance, development of activities and classes almost entirely aimed at applying the concepts.

Learning Results

Aims:
Study of operating systems, including their organization, services provided and their programming. More specifically, process management, communication between processes, deadlock situations, process scheduling, memory management, file systems, input and output management and protection and security. Introduction to Shell script programming and cooperative multitasking programming.

Learning Outcomes:
Acquisition of fundamental knowledge used in the design of modern operating systems.
Identification of potential risk events inherent to concurrent programming and use of appropriate control mechanisms.
Acquisition of practical knowledge about Linux-based operating systems and ability to use the main services provided by the operating system for application development, covering cooperative multitasking programming.
Acquisition of programming knowledge in Shell Script.

Program

Theoretical Component
1. Introduction to Operating Systems
2. Operating Systems Structure
3. Process Management: Processes, Threads and Concurrency, CPU Scheduling
4. Concurrency Programming Concept: communication, and process and threads synchronization
5. Deadlocks
6. Memory Management: main memory and virtual memory
7. Storage Management: Mass-Storage Structure, I/O Systems and File System
8. Security and Protection
9. Case Studies: The Linux System, Windows 10 and the Mobile Phone Operating Systems

Practical Component
1. Linux Operating System
2. Linux Shell:
2.1 Command Interpreter
2.2 Files, directories and permissions
2.3 redirect, pipes and filters
2.4 Meta-characters and regular expressions
2.5 Processes control
2.6 Shell Scripts programming
3. Project Management in Linux:
3.1 The tool make
3.2 The C pre-processor (cpp)
3.3 C compilers
3.4 Linker and libraries management
4. Cooperative Multitask Programming in Linux:
4.1 Process and threads creation
4.2 Process Communication
4.3 Process Synchronization

Curricular Unit Teachers

Internship(s)

NAO

Bibliography

1. A. Silberschatz, G. Gagne, and P. B. Galvin (April 2018) “Operating System Concepts”, 10th Ed., John Wiley & Sons, Inc., ISBN: 978-1119320913
2. R. Love (2013) “Linux System Programming”, 2nd Ed., O’Reilly & Media Inc. ISBN: 978-1449339531
3. A. H. Lashkari, and M. Moradhaseli (2011) “Mobile Operating Systems and Programming: Mobile Communications”, VDM Verlag Dr. Müller. ISBN: 978-3639369175
4. S. Tanenbaum, and H. Boss (2014) “Modern Operating Systems”, 4th ed., Pearson ISBN: ‎ 978-1292061429
5. W. Stallings (2018) “Operating Systems: internals and design principles”, 9th Ed., Pearson ISBN-13: 978-0134670959
6. K. A. Robbins, S. Robbins (2015) “UNIX SYSTEMS Programming: Communication, Concurrency, and Threads”, 2nd Ed., Pearson ISBN-13: 978-0134424071
7. A. Rubini, J. Corbet (2005) “Linux Device Drivers”, 3rd Ed., O’Reilly & Associates (https://lwn.net/Kernel/LDD3/)
8. Dora Melo (2022) “Apontamentos Teóricos e Práticos de Sistemas Operativos”, Polytechnic of Coimbra, Coimbra Business School | ISCAC