Week 1 - Operating Systems

This week marks the official start of the Operating Systems course at CSUMB, and I am quite excited to learn about how these systems relate to modern computers. For the first week, I have read the introduction to the online book OSTEP from module one where the authors discuss what an operating system is and why it is so important. The book begins with explaining that running a program may execute numerous CPU instructions that follow the Von Neumann model, but it delves into thinking about how computers don't just run one program. Modern computing involves running many programs at the same time with the concrete limits of resources and in this case the OS is the main component that manages these operations. OS manages to do these operations by allowing the multiple run of programs to share CPU time, managing the memory, managing the I/O devices and storages. The book introduces the core concepts that make up how operating systems can handle running multiple programs at once by talking about the ideas of virtualization from memory and CPU where each program runs its own private cpu/memory, concurrency where the OS handles the tasks simultaneously together correctly and efficiently, and persistence that covers the idea of file systems and storage for durability and security when a machine may crash or restart. In order to achieve how these fundamentals of operating systems work, an approach or design strategy for operating systems that was mentioned in the lecture slides must be thought through. It involves creating a working and simple design, by finding the simplest solution to the problem and adding some complexity if it does not do it well. In addition, thinking about it through the use of mechanisms, which are the low-level building blocks of how something is done in an OS or the general implementations, and the policies which are the chosen actions of what should be done or the rules/strategies.

In addition to this week's contents I have also learned about the history of Unix and its influence on other systems. Also the development of GNU/Linux as an open source operating system by Linus Torvald. Linux acts as the kernel or the management system and the GNU is the utilities and standard libraries. I considered the command line lecture as a review because I have already been exposed to unix environments in previous courses along with the computer architecture and math addendum lectures. Though learning about the power of 2 concept was quite new to me as I didn’t recall reviewing that in my assembly course. C programming was by far the newest concept to me. What I have learned from that lecture is that C is a low level language that has influenced many other high level programming languages from Java, Rust, GO, C#, C++ and much more. C is not object oriented and contains basic data types, it also involves derived types such as pointers, arrays, structures and functions. The biggest things to pay attention to in C Lang is the allocation of memory using malloc and free instead of using the new/delete keywords such as in C++ and the new keyword in Java. Lastly the use of structs as a way to create custom types and the importance of pointers allowing for modification of data directly in memory. This week was quite heavy loaded with information but also fun to review and understand the many things we will utilize in this course from C programming to the use of Linux, and binary/hexadecimals.


Comments