| Course: | MEIC | ||
| Curricular Unit (UC) |
Advanced Operating Systems |
Mandatory | X |
| Optional | |||
| Scientific Area | MEIC | ||
| Year: | Semester: | ECTS: | Total Hours: 67.5 |
||
| Contact Hours | T: | TP: | PL: | S: | OT: |
| Professor in charge |
Jorge Manuel Rodrigues Martins Pião |
||||
T - Theoretical; TP - Theory and practice; PL - Laboratory; S - Seminar; OT - Tutorial.
- Learning outcomes of the curricular unit
Students who successfully complete this course will be able to:
- Design and implement multi-programmed applications for the UNIX (POSIX) computational model.
- Know the fundamentals behind the design and implementation of current operating systems.
- Understand the source code of open-source operating systems.
Extend the functionality of operating systems by building modules and/or device drivers.
- Syllabus
- I. Study of the Unix/Linux computational model and elementary aspects of its architecture: processes; pipes; signals; file systems; process synchronization.
- II. Mechanisms in IA-32 architecture that support the implementation of operating systems: protection and execution modes; memory management and address spaces; handling of exceptions and interrupts.
- III. Implementation of an educational kernel in order to clarify aspects related to protection, memory management, and process management.
- IV. Study of Linux internal architecture: system calls, processes, memory management and address spaces; process synchronization; virtual file system. Extended functionality via dynamic loading of modules.
Development of peripheral modules and device drivers for Linux.
- Demonstration of the syllabus coherence with the curricular unit's objectives
Due to time constraints, introductory operating systems courses can only present concepts in a theoretical way, possibly supported by simulation systems.
In this course, students embody and deepen their knowledge by implementing an educational kernel (section II and III of the syllabus) and by analyzing and extending kernel code of open source systems, namely Linux (sections IV and V).
Additionally, the study and practice of UNIX computational model (section I) provides skills in the development of application software for that operating system family
- Teaching methodologies (including evaluation)
Theoretical and practical teaching is planned during the semester in 30 lectures that correspond to 67.5 of contact hours (15 lessons of 3 hours and 15 of 1.5 hours) and 160 student working hours. The lectures are intended for presentation of topics and practical examples. The main topics are further explored with practical assessments, solved in group.
Learning outcomes are assessed in the final discussion of group work, through the presentation of a topic of study for each group, and individually through a written test.
- Demonstration of the coherence between the teaching methodologies and the learning outcomes
The course contents are exposed in theoretical and practical sessions. Interactive presentation of the materials is complemented with the realization of practical exercises by the students.
The skills listed as learning outcomes are developed in the group work.
Lectures are also dedicated to monitoring and guiding the work of the groups, which also serve to complement the assessment of the overall learning objectives.
- Main Bibliography:
Robert Love, Linux Kernel Development, 3º edição, Sams Publishing, 2010
Richard Stevens, Advanced Programming in the Unix Environment, 2ª edição, Addison-Wesley, 2005







