os231

LINKS


Week 00



  1. 25 Years of Linux (Video)
    This is a YouTube video explaining the basic history of Linux. Pretty good video to watch to get an understanding of the historical context of Linux.

  2. Linux vs Windows Difference
    Why should we download Linux? There are several reasons we should consider, Linux is open and changeable compared to Windows or MacOS

  3. 11 Reasons Why Linux Is Better Than Windows
    This is a quick read that gives us reasons from the author on why he believes Linux is better than Windows. This is not bad at all.

    Week 01



  1. Operating System Course Site for OS231
    This is the Operating System course site. This site contains links to lecture materials, exam questions, and laboratory materials. Obviously, this has to be checked every week for weekly assignments and reports.

  2. Operating System Concepts Slides
    These are slides from the tenth edition of Operating System Concepts, the main texbook on operating systems. These slides are definitely useful to study and prepare for quizes and exams.

  3. Explain Shell
    This is a site to learn command interactively and knows what that command does. It provides some basic functionality commands in linux distribution and some of well known, basic and important apps available with its flags as well. It’s a really good place to learn and explore more about shell commands.

  4. Learning Awk Is Essential For Linux Users (Video)
    AWK is a command-line-based text-processing program which is very useful to extract useful information from raw data, especially from other programs. This video walks through some basic AWK use-cases and basic commands which are often used in real-life, including reated apps such as uniq.

  5. Linux From Scratch
    This is a nice site to show people some basic knowledge of LFS. This site could definitely help me understanding LFS more.

    Week 02



  1. Public Key Cryptography: RSA Encryption Algorithm (Video)
    This is the best RSA Encryption video I’ve ever seen on Youtube. This video is good for me in explaining the first RSA Encryption algorithm which was founded in the 1970s and how you could derive it.

  2. C Programming Language Tutorial
    The C Language is developed by Dennis Ritchie for creating system applications that directly interact with the hardware devices such as drivers, kernels, etc. This tutorial could help me refer and understand the C language.

  3. Symmetric vs. Asymmetric Encryption: What’s the Difference?
    This article tells the readers the differences between symmetric encryption, a single-key encryption technique, and asymmetric encryption, also known as public-key cryptography, which uses private- and public-key pairs of encryption keys. This is well-written and good enough for people to derive benefit from reading this.

  4. Access Control
    Access control is a security technique that regulates who or what can view or use resources in a computing environment. It is a fundamental concept in security that minimizes risk to the business or organization.

  5. How Do Linux File Permissions Work?
    I got to know informations like “chown change WHO owns the file and what group it belongs, while chmod changes HOW the owners and groups can access the file” The article could explain to me how file permissions in Linux work.

    Week 03



  1. An Introduction to Linux File Systems
    The author of this article intended this article to be his high-level discussion of Linux filesystem concepts. And this article for me personally has explained what the popular filesystems in Linux are and how they work in general.

  2. Linux File System/Structure Explained (Video)
    We know there is no Drive C: in Linux. There are no program files. Everything looks like a file, and every Linux distribution have some specified directory. In fact, every operating system that is Linux has its own file structuring. This video has explained linux file system in a nutshell. His way of explaining in the video is quite compact, but meaningful to me.

  3. Explaining File Systems NTFS ,exFAT, and More (Video)
    NTFS, FAT32, exFAT, ext4 and APFS are just some of the file systems used to organize data on storage drives. This video outlines the differences between these and other file systems, and explains how to choose between them. Very useful video to introduce these common file systems in my opinion.

    Week 04



  1. Dynamic Memory Allocation in C
    Array is basically the most primitive and the simplest of all data structures in computer science, it can act as a list of any elements.C has a dynamic memory allocation procedure where arays can be modified during the runtime and provides some functions to achieve these memory-related tasks. This article tells you about four library functions provided by C defined under <stdlib.h\ header file to do dynamic memory allocation in C. It could definitely be interesting for me to understand how dynamic memory allocation in C works.

  2. Logical and Physical Address in Operating System
    Physical Address identifies a physical location of required data in a memory. The user never directly deals with the physical address but can access by its corresponding logical address. The user program generates the logical address and thinks that the program is running in this logical address but the program needs physical memory for its execution, therefore, the logical address must be mapped to the physical address by MMU before they are used. This article has helped me understand more of the difference between physical address and logical address.

  3. Understanding Memory Mapping/)
    The speed at which application instructions are processed on a system is proportionate to the number of access operations required to obtain data outside of program-addressable memory. The system provides two methods for reducing the transactional overhead associated with these external read and write operations. We can map file data into the process address space. We can also map processes to anonymous memory regions that may be shared by cooperating processes. This is worth reading to understand how memory mapping happens.

    Week 05



  1. What is a Paging File or Pagefile (Video)
    The idea is a computer should not put all running process on contiguous segments on itsmain memory. Moreover, it’s bad to run large multiple processes that will be stored in your main memory. The processes should just be stored in a virtual memory, and cache only important files the VM needs at the moment.
    A page map maps the virtual memory to the physical memory. If page faults occur, meaning data in the physical memories are invalid, these pages will try to acquire them again from the slower disk .The YouTube video is not particularly amazing for me but still an informative video to watch.

  2. Thrashing in Operating System
    Thrashing in OS happens when page faults happen too often for a process that the processor needs to swap in and swap out too frequently, that it doesn’t even do the job .
    So, whats the solution then? Get more RAM. The site above explains why computer users shouldn’t run too many programs while browsing. Surely we dont want to get 95% of your RAM usage and make our computer feel really slow? When that happens, thrashing is an issue there.

  3. C structs and Pointers
    The tutorial allows the readers to learn how to use pointers to access members of structs in C programming. We as readers can also learn to dynamically allocate memory of struct types. Sometimes, the number of struct variables we would love to declare is insufficient, so we might be needing to allocate memory during run-time. And unsurprisingly, there is a way to achieve this in C.

    Week 06



  1. Processes
    This site explains that process is a program in execution. The executions of processes have to be done in a sequential fashion. To put it in simple terms, we write our computer programs in a text and when we execute this program, it now becomes a process that performs all the tasks of the program.

  2. Process Scheduling
    Process scheduling is the activity of the process manager that handles the removal of the running process from the CPU and the selection of another process on the basis of a particular strategy. Process scheduling is an essential part of a Multiprogramming operating systems. Such operating systems allow more than one process to be loaded into the executable memory at a time and the loaded process shares the CPU using time multiplexing.

  3. Multithreading Code - Computerphile (Video)
    Threads in Linux might be viewed as tasks. Now some threads of a program can cause a problem when doing a computation. For example, if an “a = a + i” line is executed, there are three different commands being considered - that is loading, adding, and storing back to a register. Immediately after threading is finished, those processes could collide and data could be lost. So in order handle that risk, we can use a method called mutex. The video gives a concise, introductory explaination on what this is and how this is used in multithreading.

  4. All You Need To Know About Processes in Linux
    A process is a program in execution; its a running instance of a program. A new process is normally created when an existing process makes an exact copy of itself in memory. The child process has the same environment as their parent , but the process’s ID number should not be the same. Init (initial) process is the grandmother (parent) of all processes on the system, its the first program that is executed when the Linux system boots up; it manages all other processes on the system. It is started by the kernel itself - in principle it does not have a parent process. This article is like the cheatsheet if I want to deal with processes in Linux. There are lots of command I can type directly from my terminal and try for myself. And if I in the future would work using Linux, this could potentially be useful.

WEEK 07



  1. Synchronization
    The tutorial is one introduction to the concept of process synchronization in operating systems. Synchronization is made and used to deal with arrising issues of multiple processes being executed.

  2. Process Synchronization: Critical Section Problems in Operating Systems
    Process synchronization could be defined as the task of coordinating the execution of processes so that no two processes can access the same shared data and resources at one time. A critical section can be defined as a segment of code which can be accessed by a signal process at a specific point of time. The critical section problem here refers to the problem of how to ensure that at most one process is executing its critical section at a given time.

  3. [Race Conditions and How to Prevent them - Understanding Dekker’s Algorithm (Video)] (https://www.youtube.com/watch?v=MqnpIwN7dz0/)
    This video is a prety decent video on Dekker’s algorithm or also known as Peterson’s algorithm. This algorithm makes use of the wait flag and the turn variable to prevent two processes from using the same resources at one time. This one is a short watch and the algorithm itself is interesting for being one of the first algorithms designed to solve the critical section problem.

  4. Introduction of deadlock in operating system
    A deadlock is a situation where a group of processes are blocked because each process is holding one resource and waiting for the other processes to acquire other resources. Consider an example of two trains traveling toward each other on the same track, only one track, and neither train can move once they are in front of each other. A similar situation might occur in an operating system, in which there are two or more processes holding some resources and waiting for resources held by other processes.

  5. The difference between starvation and deadlock
    Deadlock is a situation where no process is blocked and no process proceeds. And starvation is a situation where a low priority process is blocked while a high priority process continues.

WEEK 08



  1. What is Multiprocessor?
    A multiprocessor is basically a working system with several processors. And with the existence of multiple processors it is obviously complex to design an effective scheduling algorithm.

  2. Multiple-Processor Scheduling in Operating System
    In a multiple-processor scheduling multiple CPUs are available and hence Load Sharing is possible. However multiple processors scheduling is more complicated than single processor scheduling. In multiple processor scheduling there are cases when the processors are identical i.e. HOMOGENEOUS, in terms of their functionality, we can use any processor available to run any process in the queue. The writing explains all of that quite clearly.

  3. Welcome to Linux From Scratch!
    Linux From Scratch (LFS) is a guide project that provides readers with step-by-step instructions for building their own custom Linux system, entirely from source code(s).

  4. Chapter 5. Compiling a Cross-Toolchain
    This LFS chapter shows how to build a cross-compiler and its associated tools. Although here cross-compilation is faked, the principles are the same as for a real cross-toolchain.

  5. Linux Really From Scratch
    This project was made by a programmer from Persia named Mostafa Razavi. The guy read the LFS guide and decided to build Linux really from Scratch, not using that infamous LFS guide. Very interesting insights from experience of a person who tried but didn’t get to finish this guide of a project!