os211

Top 10 List of Week 06

1. Understanding Zombie Processes (YouTube Video)

When I first saw the word zombie when I run the top command, I was curious about it. At first, I thought that a zombie process is just a process that will not die; hence the word zombie, the “undead”. It turns out that my assumptions are not completely wrong. A zombie process is when a child process is done with its life and dies (done with its process) but the parent (which is like grim reaper) never actually sends the soul of the child process back to heaven (discard the process) which makes the child process a zombie (arwah penasaran). I really like this video because I like how he explains about zombie processes. He uses terms such as “zombie apocalypse” to explain about the build-up of zombie processes, which I found quite entertaining.

2. Avoiding the Pitfalls of Multithreading (YouTube Video)

“With great power comes great responsibility” This quote from Spiderman is kind of relevant for multithreading. We can achieve many useful things with multithreading. However, we also need to be careful with it. Multithreading has its own issues and pitfalls which could be a threat for our program. Which is why we, as a responsible programmer, need to understand how to avoid this issues and pitfalls. This video will not only explain about the pitfalls of multithreading, but it will also tell us the solutions to avoid it. Even better, he also includes real examples to deal with multithreading for some programming languages such as Java and Python.

3. Creating new processes with fork() (YouTube Video)

This week, we learn about fork(). Basically, fork() will create a new child process that will run the same program. fork() will return 0 if the process is the child process. If the process is the parent process, then fork() will return the PID of the child process, which will be a positive integer. This video will explain more about fork(). I like this video more than the others because his explanation is fun to follow. He also gives out examples so that we can understand fork() better.

4. Concurrency vs Parallelism (YouTube Video)

At first, I thought that concurrency and parallelism are basically the same thing. It turns out that even though both are quite similar, they do still have their own differences. Both deals with “a lot of things at once”. However, for concurrency, it is all about “dealing” it, while parallelism is all about “doing” it. This video has a good explanation about the similarities and the differences between concurrency and parallelism. The video also gives out key points to help us understand the topic better, which I really like.

5. Multithreading Models & Hyperthreading (YouTube Video)

It turns out that there are two different types of threads, a user thread and a kernel thread. These two are related, which means that there must be some kind of relation between them. This relation can either be in a One-to-One, Many-to-One, or Many-to-Many relation (or also Multilevel Model). This video will explain each of the relation model in more detail. Not only that the video has good explanations, but he also provides a little intermezzo activity where we can check whether our system is hyperthreaded or not.

6. Process Scheduling (YouTube Video)

We all know that a computer has a lot of processes running. Now, in order to keep the computer runs smoothly, we need to have someone (or something) that can manage all those processes. This is where a scheduler comes in. A scheduler will manage those processes so that we can maximize our CPU utilization. This video will explain more about this. I really like how he uses real life examples in the video to help us better understand the topic.

7. Types of Schedulers in OS (YouTube Video)

Extra links
This video, at the given timestamp (6:55 mark), has a good diagram that shows where each schedulers work.
Types of Schedulers (YouTube Video)

It turns out that schedulers have its own types. Each type plays a different role in scheduling our computer’s processes. From what I learn, there are three types of schedulers: Long Term Scheduler (LTS), Short Term Scheduler (STS), and Medium Term Scheduler (MTS). More about this on the video. I like this video better (compared to the one attached as extra links) because she goes into details for each of the schedulers. However, the extra links one (at the given timestamp) has a good diagram which shows where each schedulers work.

8. Processes and threads (YouTube Video)

This video will explain about processes and threads and the differences between them. From what I learn from the video, a process is like the whole application while a thread is the “process” that is inside the application. At first, I was still confused about the differences between those two. Luckily, this video also includes very helpful examples that helps me understand the differences between those two better.

9. Process State (YouTube Video)

This topic reminds me of Finite State Machine that we learn in Language Theories and Automata (TBA). It turns out that processes follow a similar way of executing. This video will explain about each of the states that a process needs to go through and what are the “inputs” that is required for a process to change states. I really like this video because the explanations are clear and easy to follow.

10. Process Control Block (YouTube Video)

Each process that runs in our computer are represented by a thing called Process Control Block (PCB). Each PCB contains many things such as the process states, number, PC, registers, and many more. This video will give an explanation about the components of a PCB in more detail. I like this video because of its clear explanation.