|2||Undergraduate||Computer Systems Engineering||7 ects|
|Learning Period:||Language of Instruction:||Total Hours:|
|Learning Outcomes of the Curricular Unit:|
|Understand the structure and operation of the operating system. Learn the multi-threaded and multi-task programming concepts. Programming in C language, in GNU/LINUX environment, using the POSIX system call interface. Study different interprocess communication mechanisms. Understand OS mechanisms for coordination among processes and threads. Programming of classic coordination problems between processes and threads. Learn memory management mechanisms in a modern operating system. Study the implementation of file systems. understand the input and output mechanisms in the operating system.|
|Introduction to Operating Systems – What’s an Operating System?; Hardware; Types of Operating systems; Basic operating systems concepts; System Calls; Operating System Structure. Processes and Threads – Processes; Threads; Scheduling; Inter-process Communication; Process and Thread Synchronization; Memory Management – Basic Memory management; Swapping; Virtual memory; Page replacement algorithms. File Systems – Files; Directories; File System Implementation; Examples. Input / Output - input / output hardware; input / output software; Serial and Block devices.|
|Demonstration of the Syllabus Coherence with the Curricular Unit's Objectives:|
|The syllabus presented is consistent with the learning objectives of the curricular unit since there is a large convergence between the table of contents and the knowledge that the student is supposed to acquire in each of the program topics. The fundamental concepts and the Organization of the operating system are presented in the first chapter. Below are presented the concurrent programming mechanisms and using parallel processes and tasks. It follows the study of memory management, file systems and, lastly, input and output mechanisms. The learning objectives are achieved by supplementing the theoretical concepts with concrete examples run in lab environment using the programming examples and the solving worksheets.|
|Teaching Methodologies (Including Evaluation):|
|The transmission of knowledge in this syllabus will be with theoretical oriented lectures and practical classes in laboratory environment. The lectures present the fundamental concepts for understanding the items of the program. In practical classes students are confronted with real problems that need solving eventually resorting to programming tools where suitable. The evaluation is decomposed into two components: the theoretical and the practical. In the first case the assessment results from a set of written tests applied during the semester on the subject that is being taught in the classroom. In the second case stems from practical work proposed by teachers and that are made and defended by students throughout the semester. Another parameter under consideration is the performance of the student in the classroom and their attendance during the academic period. The final grade is a combination of these three components.|
|Demonstration of the Coherence between the Teaching Methodologies and the Learning Outcomes:|
|The teaching/learning methodology applied in this curricular unit as well as its evaluation system is perfectly aligned with the objectives to be attained by the students at the end of the term. The theoretical concepts are presented, discussed, applied and evaluated in the context of lectures, which guarantees students a solid foundation to understand the challenges facing this area of knowledge. On the other hand, so that the study is not restricted to conceptual models, in the practical lessons are presented concrete case studies and implemented solutions for real problems using appropriate equipment and software tools. This combination guarantees training for students that allows them to meet the scientific goals, essential to a good understanding of the theme, as well as the ability to adapt to technological changes. The evaluation process consists of theoretical tests and practical work also guarantees a correct balance between the efforts dedicated to both components. The objective is to train professionals’ specialized in state-of-the-art techniques and tools but also ensure its ability to follow future developments. In this curriculum unit is studied the architecture and operation of a modern operating system. The program starts to analyze the different components of the structure of an operating system. Then analyzes the concurrent and parallel programming techniques using processes and threads. The next chapters are the study of memory management and file systems organization. Finally the input and output mechanisms are presented. These concepts are then applied in the resolution of the chips and practical work in the context of practical classes.|
| José Alves Marques et al. – Sistemas Operativos 2ª Ed. – FCA 2012.|
 Silbershatz, Galvin, Gagne – Operating System Concepts-9th ed. – Wiley 2012.
 Mitchell, Mark et al. – Advanced LINUX programming – Code Sourcery 2001.