CS2106

Course Title

Introduction to Operating Systems

Grade

A-

Semester

AY23/24 S1

Review

Wah this one pain. This course is all about the OS. How it manages its CPU, memory, and processes. The first part is all about how the OS schedules tasks on the CPU. Then we learn how the OS manages different threads to run concurrently. Those parts are relatively okay, just need to know the relevant C code.

After that though... hais... We have lots of memory issues. Different processes need to communicate with each other, which means they either use shared memory or have to rely on message passing. Basically, either they share a mailbox, or have a mailman transfer mail between the two mailboxes. The mailman is of course the OS. We need to implement this in the labs, using pipes in C, which allows processes to talk to each other.

But wait, there's more. By enabling concurrency, we introduce a lot of new problems. This is synchronisation, something we need to do to ensure that the correctness of the program is maintained. In C, we are taught to do this using semaphores, which are basically locks that you can put on a resource. If you have the lock, then you can access the resource. If not, then you have to wait. This is a very tricky concept, as you have to ensure that you don't deadlock.

In terms of workload, I'd actually say that it's not very high. There are just 4 labs. Sure, they may take a while to grasp, but once you understand the requirements, the implementation itself isn't that hard. Probably took me 4 hours per lab to complete. Not that bad.

But I think I died in the exams. It's again my worst exam format, testing minute details and small nuances. The calculation questions aren't too good either, as getting one number off will get you no marks. My concepts aren't great either, as I didn't really understand the material too well. As such, I think I got a little lucky with the grade, as I was expecting a B or B+.