Copyright © Antonio D'Angelo, Univ. of Udine

S.O. Lab

Last Winter 2008

Operating Systems are difficult to understand and, moreover, they grow both in complexity and userfriendless through even more sofisticated graphic interfaces. These difficulties are generally recognized as they stem from an inherently different approach to the solution of the resource management problem system administrators are faced with.
Within this perspective, the best way to grasp how operating systems "operate" over computers to give a chance to final users to "use" them is to learn about shell scrpits and languages. In the case of Unix dialects, such as Linux, the job is moderately simplified because such systems provide users which a very powerful and easy to use shall language: bash.
Thus, the first goal is to provide students with practical tools to understand how operating systems operate on computers, starting from system installation and tuning, file system mounting, service control and updating, and so on.
The second goal is to gain better insights on the so called kernel of the system: C programming becomes a powerful tool to understand and have acquaitance with sequential processes, by accessing the kernel and the system resources. In this framework, threads and message passing
(implemented with buffered channels and syncronizing semaphores) can be used as target resources by which parallel processes are really implemented. Also socket creation and handling are very useful to understand how programs communicate and cooperate along computer networks.