Operating Systems

Base Knowledge

Previous completion of the following course units is recommended:

– Programming Fundamentals;

– Data Structures.

Teaching Methodologies

No classes will be taught in this course unit.

Learning Results

At the end of the course unit, the student will be able to:

1. Classify the different types of Operating Systems (OS). Identify the structure and services of an OS. Discuss the use of virtual machines, docker and kubernetes in cloud computing.

2. Define the concept of process. Identify the constituents of a process. Recognize the components involved in scheduling. Summarize the creation and termination of processes. Build software that performs the previous actions. Create programs that implement inter-process communication.

3. Explain the concept of threads. Create programs that demonstrate the use of threads. Classify multithreading models and thread libraries.

4. Summarize the scheduling. Explain the concept of CPU-IO cycle. Discuss scheduling algorithms. Compare the previous algorithms.

5. Discuss the synchronization mechanism. Build programs that implement synchronization techniques. Explain deadlocks. Synthesize existing methods to avoid deadlocks.

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

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

8. Analyse the open source software. Describe the types of software licensing. Identify organizations, operating systems, and software within open source software. Install and operate a Linux distribution.

9. Discuss shell configuration. Explain the organization of directories and ways of handling files. Create and modify directories and files.

10. Demonstrate how to obtain information regarding processes and hardware. Explain the process of creating and terminating user and group accounts. Create and modify users and groups. Modify ownership and permissions of files and directories.

Program

1. Introduction. Evolution of Operating Systems (OS). Function, structure and services of an OS. Interface with an OS. System calls. Cloud computing: virtual machines, docker and kubernetes.

2. Processes. Scheduling: queues, schedulers and context switching. Creation and termination of processes. Inter-process communication: signals, pipes, shared memory and message queues. Communication in client-server systems: sockets.

3. Threads. Multithreading approaches. Thread Libraries. Software implementation.

4. Scheduling. Concept of CPU-IO cycle and CPU scheduler. Scheduling algorithms.

5. Synchronization. Semaphores. Classic synchronization problems. Monitors. Deadlocks. Implementation of synchronization solutions in software.

6. Memory. Memory management. Paging. Segmentation. Main and virtual memory. Swapping.

7. Storage. Storage management. File access and allocation methods. Free space management. RAID systems.

8. Open source software. Licensing types. UNIX and the Open Group. BSD distributions. FSF and the GNU project. Linux distributions. Booting: system V, systemd.

9. Shells. Help sources. Shell variables. Configuration files. Aliases. Quoting. Directory structure. File and directory management. Globbing. Reading and editing text files. Pipes. Redirection. Regular expressions. Scripts and task automation.

10. Process and hardware management. System and user security. User Accounts. Management of groups and users. Ownership and permissions.

Curricular Unit Teachers

Internship(s)

NAO

Bibliography

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

Marques, J. A., Ferreira, P., Ribeiro, C., Veiga, L., & Rodrigues, R. (2012). Sistemas operativos (2nd ed.). FCA.

Matthew, N., & Stones, R. (2007). Beginning Linux Programming (4th ed.). Wrox.

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.