Operating Systems

Base Knowledge

Previous completion of the following courses is recommended:

– Programming Fundamentals;

– Data Structures.

Teaching Methodologies

The following teaching methodologies are used in this course:

1 – Expository method: explanatory method where theoretical foundations and concepts are presented by the teacher and discussed with the class, followed by demonstrative examples;

2 – Experimental method: active method where the student develops knowledge through problem solving, and via the development of individual or group laboratory projects.

Learning Results

At the end of the course unit the student should be able to:

1. Classify the different types of Operating Systems (OS). Identify the structure and services of an OS. Define system calls. Identify the types of Virtual Machines.

2. Define the concept of process. Recognize the components involved in scheduling. Summarize the creation and termination of processes, and design software that performs these actions. Discuss and create programs that implement communication between processes.

3. Explain the concept of threads and create programs that demonstrate their usage. Classify multithreading models and thread libraries.

4. Define scheduling. Explain the CPU-IO cycle concept. Identify and compare scheduling algorithms.

5. Analyze the synchronization mechanism. Plan and build programs that use semaphores. Explain deadlocks and synthesize existing methods to avoid them.

6. Identify the different types of memory. Analyze the techniques used in its management.

7. Illustrate and analyze the interface and implementation of file systems. Explain the structure of RAID systems.

8. Design, operate and modify computer systems based on Linux and Windows distributions.

Program

1. Evolution of Operating Systems (SO). Structure and services of an OS. Interface with an OS. System calls. Virtual Machines.

2. Processes. Scheduling: queues, schedulers and context switch. Creation and termination of processes. Communication between processes: shared memory systems and message passing systems. Communication in Client-Server systems: sockets, RPC and RMI.

3. Threads. Multithreading models. Thread libraries.

4. Scheduling. CPU-IO cycle concept and CPU scheduler. Scheduling algorithms.

5. Synchronization. Semaphores. Classic synchronization problems. Monitors. Deadlocks.

6. Memory. Memory Management. Paging. Segmentation. Main and Virtual Memory. Swapping.

7. Storage. Storage Management. File Access and Allocation Methods. Free space management. RAID.

8. Linux distributions. Windows systems. Booting. Software installation. Graphic environments. File, Process and User Management. Scripting and task automation. Troubleshooting.

Curricular Unit Teachers

Internship(s)

NAO

Bibliography

Bresnahan, C. (2020). LPIC-1: Linux Professional Institute certification study guide (5th ed.). Sybex.

Marques, J. (2012). Sistemas operativos (2nd ed.). FCA.

Robbins, K., & Robbins, S. (2015). Unix systems programming: Communication, concurrency and threads (2nd ed.). Prentice Hall.

Silberschatz, A. (2018). Operating system concepts (10th ed.). Wiley.

Stallings, W. (2017). Operating systems: Internals and design principles (9th ed.). Pearson.

Tanenbaum, A. (2014). Modern operating systems (4th ed.). Pearson Education.