Category: Advanced Operating Systems
-
Squeezing the most out of your study sessions (midterm and final exam preparation)
Why publish my studying techniques? This semester, I manage to pull off an A not only for the midterm and final exams, but for the class as a whole. My intention of revealing my grade is not to boast (that’s poor taste), but to give some credibility to the techniques and strategies below, techniques and…
-
Giant Scale Services – Summary and notes
Introduction We’ll address some questions like “how to program big data systems” and how to “store and disseminate content on the web in scalable manners” Quiz: Giant Scale Services Basically almost every service is backed by “Giant Scale” services Tablet Introduction This lesson covers three issues: system issues in giant scale services, programming models for…
-
Free E-book: Advanced operating systems (AOS) refresher course – summary and study guide
Click here to download “Advanced OS refresher course – summary and study guide” I compiled my various blog posts from the advanced operating systems refresher course and bundled them together into a nicely packed e-book. So, if you are about to enroll in Georgia Tech’s advanced operating system course (AOS) and want to step through…
-
Enterprise Java Beans – notes and summary
Introduction Key Words: EJB, enterprise java beans Discuss how we can structure system software for large scale distributed sytem service Inter Enterprise View Key Words: monolithic, supply chain model, amalgam, survivability, complexity From a user perspective, we view a system (like Ebay or Google) as a blackbox. But in reality, much more complex than that…
-
Recovery management in Quicksilver – Notes and Summary
The original paper “Recovery management in quicksilver” introduces a transaction manager that’s responsible for managing servers and coordinates transactions. The below notes discusses how this operating system handles failures and how it makes recovery management a first class citizen. Cleaning up state orphan processes Key Words: Ophaned, breadcrumbs, stateless In client/server systems, state gets created…
-
Operating System Transactions – Summary and notes
This post is a cliff notes version I scrapped together after reading the paper Operating Systems Transactions. Although I strongly recommend you read the paper if you are interested in how the authors pulled inspiration from database systems to create a transactional operating system, this post should give you a good high overview if you…
-
RioVista – Summary and notes
Introduction Key Words: ACID, transactions, synchronous I/O RioVista picks up where LRVM left off and aims for a performance conscience transaction. In other words, how can RioVista reduce the overhead of synchronous I/O, attracting system designers to use transactions System Crash Key Words: power crash, software crash, UPS power supply Super interesting concept that makes…
-
Lightweight recoverable virtual machine – Summary and Notes
Summary and main take away As system designers, we can make persistence into the virtual memory manager, offering persistence to application developers. However, it’s no easy feat: we need to ensure that the solution performs well. To this end, the virtual machine manager offers an API that allows developer to wrap their code in transactions;…
-
Distributed File Systems – Summary and notes
This lesson introduces network file system (NFS) and presents the problems with it, bottlenecks including limited cache and expensive input/output (I/O) operations. These problems motivate the need for a distributed file system, in which there is no longer a centralized server. Instead, there are multiple clients and servers that play various roles including serving data…
-
Testing your gRPC services using grpc_cli
This post may be helpful for you if you are building gRPC services and want a convenient way to test your service using a command line tool. Similar to using cURL when testing HTTP(s) services, I wanted an easy way to test the gRPC services that I’m building. Originally, I had originally planned to whip…
-
Distributed Shared Memory (Part 2 of 2) Notes
An example Summary Key Words: Conditional variable, pthread_signal, pthread_wait in the concrete example (screenshot below), P1 instructions that update memory (e.g. flag = 1) can be run in parallel with that of P2 because of release consistency model Advantage of RC over SC Summary In a nutshell, we gain performance in a shared memory…
-
Distributed Shared Memory (Part 1 of 2) Notes
Introduction Summary Main question is this: can we make a cluster look like a shared memory machine Cluster as a parallel machine (sequential program) Summary One strategy is to not write explicit parallel programs and instead use language assisted features (like pragma) that signal to the compiler that this section be optimized. But, there are…
-
Global memory systems (part 1 of 2) notes
Introduction Summary Lessons will be broken down into three modules: GMS (i.e. can we use peer memory for paging across LAN) and DSM (i.e. can we make the cluster appear as a shared memory machine) and DFS (i.e. can we use cluster memory for cooperative caching of files) Context for Global Memory Systems Summary Key…
-
Distributed Systems – Latency Limits (Notes)
Introduction Summary Lamport’s theories provided deterministic execution for non determinism exists due to vagaries of the network. Will discuss techniques to make OS efficient for network communication (interface to kernel and inside the kernel network protocol stack) Latency Quiz Summary What’s the difference between latency and throughput. Latency is 1 minute and throughput is 5…
-
Daily Review: Day Ending in 2020/10/18
Family and Friends Celebrated Elliott’s 1 year birthday. Jess and I are two weeks late but to be fair, the two of us were in the midst of moving the entire house, making it difficult to celebrate properly. And now that we moved in — but not quite fully unpacked — it’s easy to let…
-
Daily Review: Day Ending in 2020/10/15
Family Difficult time comforting Jess when she’s upset. It’s insane but it’s so easy for me to gently console other people (like friends or even strangers) when they are upset but I find it incredibly difficult to do the same for Jess. The words just don’t come out. It’s difficult to put into words why…
-
Project 3 – Snapshotting my understanding (gRPC)
Unfamiliar Technologies Never heard of or used gRPC. According to their website, it’s a high performance open source RPC framework. I’m wondering if this package is used outside of academia. Probably is and probably is actually used within Amazon. What I do know Google Protobuf. Fortunately, I have some experience with Google Protobufs since we…
-
Not putting all your eggs in one basket and Daily Review: Day ending in 2020/10/14
Mental Health Best Part(s) of My Day Swinging on the swings with Elliott. She was sitting on my lap, facing my direction, as swung us on the swing back and forth. The entire time she was smiling and when her cold chubby cheeks brushed up against mine, some dad love feelings ran through my body.…
-
Lamport’s Clocks (notes)
[ez-toc] Introduction Summary Now that we talked about happened before events, we can talk about lamport clocks Lamport’s Logical Clock Summary A logical clock that each process has and that clock monotonically increases as events unfold. For example, if event A happens before event B, then the event A’s clock (or counter value) must be…
-
What I learned from writing synchronization barriers
Before starting project 2 (for my advanced operating systems course), I took a snapshot of my understanding of synchronization barriers. In retrospect, I’m glad I took 10 minutes out of my day to jot down what I did (and did not) know because now, I get a clearer pictur eof what I learned. Overall, I…
-
Deadlocking in centralized counting barrier implementation
For project 2 of my advanced operating systems course, I quickly typed up what I thought was a functional simple centralized counting barrier implementation. However, after launching the compiled executable multiple times in a row, I noticed the program would hang and not immediately exit … damn deadlock. Instead of loading the debugger and inspecting…
-
Distributed Systems Introduction notes
The main take away with the introduction to distributed systems lectures is that as system designers, we need to carefully inspect our program and identify what events in our system can run concurrently (as well as what cannot run concurrency or must be serialized). To this end, we need to identify what events must happen…
-
OpenMP tutorial notes (Part 1)
I’m watching the YouTube learning series called “Introduction to OpenMP” in order to get a better understanding of how I can use the framework for my second project in advanced operating systems. You might find the below notes useful if you don’t want to sit through the entire video series. Introduction to OpenMP: 02 part…
-
Project 2 (barrier synchronization) – Snapshot of my knowledge
The purpose of this post is to take a snapshot of my understanding before I begin working on project 2: implementing (two) synchronization barriers. Although I picked up some theoretical knowledge from both this course (i.e. advanced operating systems) and GIOS (i.e. graduate introduction to operating systems) on barrier synchronization, I actually never implemented barriers…