Subject description
The course provides an in-depth look at the key components of computer systems that every developer, system designer and cybersecurity expert needs to be familiar with. Topics cover many of the tasks of modern operating systems, including ensuring abstraction, performance, and security. We will focus on understanding the lifecycle of processes, process scheduling, and memory management. Special emphasis will be given to inter-process communication and synchronisation, as well as potential problems in this area. We will learn about the concept of atomicity and its role both in interprocess communication and in the context of databases and database transactions. Other important topics include drivers and access to peripherals, file systems and virtualisation, as well as distributed systems and the challenges and solutions encountered there. Both virtualisation and distributed systems will provide a good basis for later understanding of cloud computing, and all the topics covered in the course are also key to understanding the complex challenges of security vulnerabilities and protection of systems from a cybersecurity perspective.
The subject is taught in programs
Objectives and competences
The objective of the course is to provide an overview of the basic principles and concepts for independent design and development of software in communication systems. The course incudes the foundations of modern operating systems, distributed systems, databases, virtualization and software design.
Teaching and learning methods
Lectures for theoretical aspects, laboratory exercises and team work for real-case scenarios and problem solving through project work. Part of the pedagogical process will be carried out with the help of ICT technologies and the possiblities they offer.. Study visits and invited lecturers.
Expected study results
After successful completion of the course, students should be able to:
- describe the basic principles and workings of an operating system;
- explain atomicity and its applications in the context of software and database systems;
- develop a multi-threaded program with mutually exclusive access to a shared resource;
- use multiple mechanisms for inter-process communication in practice;
- evaluate the decisions in the design of a distributed computing system;
- explain different server virtualization techniques.
Basic sources and literature
- Modern Operating Systems, Andrew S. Tanenbaum, Prentice Hall; 3rd ed (2007)
- Silberschatz A, Galvin P.B., Gagne G., Operating System Concepts, 7th ed, John Wiley &Sons, New York, 2004,
- Bic L.F., Shaw A.C, Operating Systems Principles, Prentice Hall, New Jersey, 2003,
- Benvenuti C., Understanding LINUX Network Internals, O'Reilly, 2005,
- Članki, objavljenih v revijah, npr. / Articles published in magazines, i.e.: IEEE Communications Surveys & Tutorials, http://www.comsoc.org/livepubs/surveys/index.html