UTM is an alternative to VirtualBox that runs on the Apple Silicon Chip (M1). Our fantastic lecturer Pak RMS has kindly prepared an in-depth tutorial on how to setup a Debian VM with UTM.
FileZilla is an FTP client like WinSCP, except of course WinSCP is not available on MacOS. FileZilla functions
almost identically to WinSCP, though you may first need to run the Configuration Wizard under Settings > FTP > Overview
. Make sure passive mode is
prioritized and enable your external IP address if given the option.
Being a Mac M1 user has exactly one benefit in the Operating Systems course: familiarity with Bash (or Bash-based, like Zsh) scripting languages. The video linked is not exactly a tutorial but it gives a pretty neat big-picture view of it. Bash is ESSENTIAL to making the most use of Linux (and Mac, to an extent) so don’t hesitate to search for more in-depth Bash guides.
Where to start with Regex? This website provides step-by-step lessons for understanding Regex while still giving you freedom to experiment with it along the way.
After doing the Week 02 assignments, you may have questions about the SHA checksum and myscript.sh. I know I did, but fortunately this page along with Pak RMS’ thorough explanation had made clear what exactly myscript.sh does.
The two links above are excellent complements to Week 02’s C Programming Demos.
I found this while trying to learn about File Systems. This page contains a concise summary of each chapter from Silberschatz’s OSC textbook, eighth edition. Do note that the edition difference means not everything is up-to-date.
TLDR is a man-like package that serves as a tldr page for various commands and packages, instead of an in-depth manual (like man). A friend told me about this and I found this handy while trying to understand new linux commands.
The page above is a good read to prepare for Week 03 assignments. It helps to really understand what you’re doing instead of copy-pasting commands.
The playlist above provides excellent explanations into certain areas about Virtual Memory. I specifically found the video on Page Tables helpful.
This week we delve deeper into C, with a highlight on pointers. My Week 02 links have been a good place to start, but the video above explains it in more detail.
This article explains the concept of page faults very well, even goes through memory swapping and more.
This video from MIT OCW is a good starter to understand the idea of paging.
This article from Techtarget explains about Virtual vs Physical memory, as well as what address space is. The page also demonstrates how interconnected W04 and W05 are.
This guide on upgrading your kernel is comprehensive and useful to refer back if ever needed again.
While pstree is not installed by default, this command is a useful tool to help visualize processes and their child threads.
One of the main points of interest this week were zombie & orphan processes. The page above helps to get a better understanding of zombies in particular.
The critical section problem is an issue where there is a resource that can only be used by one process at a time, but multiple processes want to use it. That concept is visualized with an analogy by the video above, which helps to understand the criteria/conditions for solving this problem.
The page above is an excellent summary (though still very long and detailed) of the entire chapter of Synchronization, from its concept to different solutions like Peterson’s Solution (software-based) and Semaphores (hardware solution). The page also includes snippets of C code to help us understand the problems and solutions in practice.
Aside from mutual exclusion (mutex), another approach that you can take in solving the critical section problem is using semaphores. The video above is quite informative and well-explained.
This is a brief video that some concepts of thread scheduling such as the difference between user-level threads and kernel-level threads. The video explains that user-level threads are mapped to kernel-level threads, and also differentiates Process Contention Scope (PCS) with System Contention Scope (SCS). This video also uses the reference textbook OSC10.
This article by Scaler elaborates how scheduling works in multiple processor systems and multi-core processors. They summarize concepts from this chapter very concisely.
This clean and useful article by Nicolas Julian explains a problem that some people and I encountered while building Linux from Scratch. The solution and explanation offered actually worked and allowed me to continue compiling packages without my debian host hanging :’)
During the building of Linux from Scratch, I had to dig deeper into what the swap partition of /var/tmp.swapfile.bin was for, and what it actually did. Tip: Don’t be like me, read Chapter 2.7 carefully and make sure you append the swap partition to /etc/fstab.
The link above from CS Old Dominion University notes provides a good overview and explanation of mass storage structures and the different types of disk scheduling algorithms. It also goes into selecting which algorithm to choose and briefly about RAID.
Another uni course note, but these seriously help me out. UIC Course Notes as always summarize Silbershcatz’ OSC10 very concisely and this link goes into muchmore depth on RAID (Redundant Array of Inexpensive Disks) Structure than the previous one. Additionally this link explains performance issues of different mass storage structures.