Category: Advanced Operating Systems
-
Making sense of libvrt bit map when calling virDomainPinVcpu
On my iPad this morning, I doodled the above figure to help me better understand how I should be calling the function virDomainPinVcpu (as part of project 1 for my advanced operating systems course). The function requires two parameters which I found a bit confusing: a pointer to the cpu map (i.e. bit map) and…
-
L3 Microkernel
I learned that with an L3 Microkernel approach, each OS runs in their own address space and that they are indistinguishable from the end-user applications running in user land. Because they run in user land, it seems intuitive that this kill performance due to border crossings (not just necessarily context switching, but address space switching…
-
How to build the libvrt documentation from source
If just download the libvert application development guide, click here. How to build the documentation The libvrt developer documentation link is broken (i.e. HTTP 404). But I need the development guide for my advanced OS course so I downloaded the repository and built the documentation from source. If you want to do the same…
-
How to launch and ssh to a KVM instance
This posts assumes that you’ve already synced the OS images on to your virtual box. If you haven’t, check out this blog post. While launching a new virtual machine for project1, I kept on running into variants of the following error: vagrant@ubuntu-bionic:~$ sudo uvt-kvm ssh aos_vm1 ubuntu@192.168.122.183: Permission denied (publickey). To get this to work,…
-
A snapshot of my understanding before beginning project 1 (scheduler, memory coordinator)
Project 1 was released last evening at 08:59 PM PST and this morning, I decided to start on the project by reading through the overview and get the lay of the land. For this project, we’ll need to deliver to operating system components: a scheduler and a memory coordinator (not even sure what that means…
-
Advanced Operating Systems – OS Structure – Exokernel
Unlike the SPIN OS Structure, exokernel approaches extensibility by decoupling the authorization to hardware from its actual use, by using something called secure bindings. OS libraries will request secure bindings, the Exokernel returning an encrypted key that grants that particular service to specific resources. One other way that the exokernel manages these underlying OS services…
-
Advanced Operating Systems: The SPIN Approach
What did I learn? What are the main takeaways? The concept of border crossing pops up over and over again. This is a new term I never heard of prior to this class. The term is almost synonymous to a context switch but it is subtly different in the sense that a context switch (switch…
-
Selecting research papers to read for Advanced Operating Systems
For advanced operating systems course, us students are required to sign up for (at least) two research papers that we summarize. Although two papers doesn’t sound like much, many former students of the course suggested ignore the other research papers and instead, focus on watching the lectures (which do cover the papers, sort of), banging…
-
Thinking out loud – Not fully understanding virtually indexed physically tagged (VIPT) details
I’m really struggling to intimately understanding virtually index privately tagged concept. From a high level, I get that VIPT is an optimization technique, parallelizing both the translation of virtual addresses to physical and the cache look up of the physical address. This seems impossible at first since the cache depends on the physical frame number…
-
OS Structure Overview
In the context of an operating system, what does structure even mean and why is it important? Structure determines how the operating system serves application in regards to the underlying hardware and how it balances the following qualities: protection, performance, flexibility, scalability, agility, and responsiveness. To obtain the above qualities, several designs exist including monolithic…
-
How to go beyond physical memory ?
How can the OS make use of a larger, slower device to transparently provide the illusion of a large virtual address space? Overview Why try and create a large virtual address space, a virtual address space that is larger than the physical amount of address memory installed on the system? Well, the illusion of a…
-
Operating Systems – Memory Virtualization – Paging
In my other blog post on memory segmentation, I talked about diving the process’s virtual address space into segments: code, heap, stack. Memory segmentation is just one approach to memory virtualization and another approach is paging. Whereas segmentation divides the address space into segments, paging chops up the space into fixed-sized pieces. Each piece is…
-
Memory segmentation
This blog post contains notes I took on memory segmentation, from “OS in Three Easy Pieces Chapter 16”, one strategy for implementing virtual memory systems. In the next blog post, I’ll cover a different approach: paging. 16.1 Segmentation: Generalized Base / Bounds Summary We use segmentation to divide the virtual address space into three distinct…
-
My classmates syllabus in excel form
One of my virtual class mates took the poorly formatted syllabus living on Canvas and converted the document into a beautifully organized excel sheet (above). I appreciate him sharing this screenshot since it saves me at least 15 minutes from copying and pasting and wrestling with inevitable formatting issues. On top of that, I now…
-
Snapshotting my understanding before tackling homework assignment #1
Before tackling the homework assignment, I’m going to rate myself on the questions (below), from a scale of 1 (no freaking clue) to 5 (truly understand). The point of this exercise that I just made up myself is that I want to capture my understanding (or lack thereof) at a moment and time. Why do…
-
Done with advanced operating systems refresher course
I’ve finished watching the lectures and taking notes for the operating systems refresher course1 that covers operating system fundamentals, the course covering topics including virtual memory system (e.g. paging, virtually indexed physically tagged) and file systems (e.g. FAT, EXT, inodes) and multi-threaded program (e.g. mutexes, conditional variables, synchronization) and networking2. The notes can be found…
-
Advanced Operating System Notes (File Systems)
Although I’ve covered file systems in previous courses, including graduate introduction of operating systems, I really enjoy learning more about this concept in a little depth. The file system’s module is packed with great material, the material introducing a high level introduction of file system and then jumps into the deep end unveils what an…
-
Daily Review – 2020/08/20
This post reviews yesterday, Wednesday August 19th 2020. Should I change the title to yesterday’s date or keep today’s date? Not sure, but I should probably stay consistent in my posts moving forward. Although I’m physically exhausted and tired than usual from waking up early (around 04:30 to 05:00) every day to crank out studying…
-
Advanced Operating Systems – Day 3 Recap
The below write up consists of notes that I took while watching Multi-Threaded programming module from the Advanced Operating system’s refresher course1. I watched this third module before the second module (on File Systems, the next lecture series I’ll watch) because I started tackling the homework assignment that has us students debug a buggy multi-threaded…
-
Advanced Operating System Notes – Memory Systems (2/2)
Notes below are from my first study session at 05:00 AM, before I hit the rest of my morning routine: walking the dogs at the local park, blending a delicious fruit smoothy (see my blog post on best vegan smoothie), then jumping behind the desk for hours for work. In the evening, I detoured from…
-
Daily Review – 2020/08/18
Seems like my mind and body know to wake me early in the morning (around 05:00 AM), a small window in time in which I can cram in a lot of work before everyone else wakes up Thinking about daily reviews rolling up into weekly reviews, into monthly reviews, etc Out of the corner of…
-
Advanced OS – Study Notes Reflection (from day 1)
I divided studying into two sessions: one in the morning (around 04:30 am) and one in the evening after work and after my daughter has gone to bed. In the morning, I completed the administrative tasks and watched lectures that cover new material and in the evening I refreshed my memory by taking the operating…
-
How to configure Ubuntu w/ nested virtualization using Vagrant and Virtualbox on MacOS
If you are taking advanced operating systems course at Georgia Tech (OMSCS) and want to run the the lab environment on your mac laptop (or desktop) using Virtualbox, then follow the below instructions. Below, you’ll find a Vagrantfile that will launch a virtual machine, install Ubuntu and configure nested virtualization:
-
Advanced operating systems – Pre-assessment (81% prepared for the course)
As mentioned in my first post this morning, today marks the first day of Fall 2020 and I’m taking advanced operating systems (AOS), a systems class I’ve had a burning desire to take close to two years ago. The first assignment assigned in course is a pre-assessment, consisting of 22 yes/no answers, designed to to…