Sistemas Operativos

Base Knowledge

Previous completion of the following course units is recommended:

– Programming Fundamentals;

– Data Structures.

Teaching Methodologies

The following teaching methodologies are used in this course unit:

1. Expository method: explanatory method where theoretical foundations and concepts are presented by the teacher and discussed with the class. Concepts and information will be presented to students through, for example, slide presentations or oral discussions. It will be used in classes to structure and outline the information.

2. Demonstrative method: based on the example given by the teacher of a technical or practical operation that one wishes to be learned. It focuses on how a given operation is carried out, highlighting the most appropriate techniques, tools and equipment. It will be used, for example, in practical and laboratory classes.

3. Interrogative method: process based on verbal interactions, under the direction of the teacher, adopting the format of questions and answers. It allows for greater dynamics in the classroom and consolidates learning. It will be used, for example, to remember elements of previous classes and in revisions of the lectured content.

4. Active methods: pedagogical techniques will be used in which the student is the center of the learning process, being an active participant and involved in his own training. The teacher assumes the role of facilitator, stimulating critical thinking, collaboration, creativity and student autonomy. They will be applied in classes to achieve a dynamic and more lasting learning environment.

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

Grading Methods

Periodic Evaluation
  • - Theoretical Test 2 - 25.0%
  • - Report - 50.0%
  • - Theoretical Test 1 - 25.0%
Final evaluation
  • - Report - 50.0%
  • - Report - 50.0%

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.