Posts

Weeks 30 & 31

 And now here I am at the end of our fifth class in the program. I don't know whether or not its too early to say I'm past the 50% mark yet. I can't say I'm not nervous going forward with the program, I still have a foreign language requirement to consider, and the capstone is still something I have more questions than ideas for. Still, I have asked the questions about the language requirement, and I have a couple of potential questions about the capstone drafted to ask later, once the Operating Systems final is over and done with. There is something that's been settled: I'm using Sam's format for these journal posts going forward. So much more interesting to write about. As for week 7's topics, we covered: I/O Devices - Things like mice, disk drives, and keyboards and the various busses used to connect everything together. A fair bit of what was covered here had been seen, albeit briefly, elsewhere. Or, at least, I had seen it elsewhere, can't remem...

Week 29

Another week down, another set of projects finished. Not much more to say really. There is still the topic of needing to take a foreign language course to sate the requirements, but that's its own matter. As for this week in Operating Systems: The topics were on  Condition Variables -  The book itself expressly calls them 'queues', despite behaving like a memory variable. Threads can place themselves onto said 'queue' when a condition isn't satisfied. While waiting for the condition to be satisfied, the thread goes to sleep. No, really. While the condition the thread is waiting on isn't met, that thread would still be 'spinning', or 'running around in circles in place'. This wastes precious CPU time. The thread enters the sleep-like waiting state with the wait() method, which frees up the CPU to work on other threads. When another thread has done what it needs to it uses the signal() method to wake up a sleeping thread once the condition has ...

Week 28

Normally, I'd have something more to say in this little prelude, I guess, before getting into the post itself. I'm convinced I've said it several times at this point, but I always fall short of things to say. And, now that I'm writing, I don't think that's really changed. Far and away, the main source of these recent posts content has been Sam's prompt. Might end up keeping it for my future classes. As for this week, once the midterm and its difficulties were done and out of the way, we covered: Concurrency and Threads - The general idea of, and motivation to use threads. Threads are, for lack of a better phrase, processes within processes. Strings of executions of instructions within the same process. Up until now we've had single-threaded examples, with one memory block for code, one for the heap, and one for the stack. And much of what happens between threads is about the same as what happens between processes, switching from one thread to another wit...

Week 27

 Halfway through the class already. Not sure what to make of it, beyond that it's all progress. Much of this weeks work was on memory management, with a lot of emphasis on the paging process. I didn't expect to catch on quite so quick this week but here we are. I've put off any sort of serious work until Thursday. Because tomorrow is April 1st. April Fool's day. The day I can't get anything serious done. Anyhow onto the weekly framework for the class. I've mentioned it before, but I'll mention it again: I like the framework that Sam's given us for the weekly journal. This week was a continuation of the memory management techniques learned last week. The topics included: Free Space management - Or "How to Keep the Free Spaces in Memory From Becoming Too Small to Use". It happens more often with segmentation than paging, but external fragmentation is a problem that occurs when the spaces between reserved spaces get too small for anything useful t...

Week 26

The OS work is continuing at steady pace now. This week's work wasn't as much of a headache as I thought that it would be. Going forward, there is now the additional task of a group project. In which, we are to read a foundational systems paper, and produce a summary, video presentation, and a personal reflection on it. I've opted to go it alone, if only to try and break a procrastination issue I've had for years.  As for the Week's work, we covered: Address Spaces - Blocks of memory set aside by an OS for programs to work in. They're usually composed of a three segments: The program code, the heap, and the stack. The Heap contains dynamic data structures and any data storage requested via the malloc() method. The stack contains local variables, arguments for routines, return values, etc. OSs have three goals when virtualizing memory: transparency, which actually means the program doesn't realize its memory is virtual, efficiency, in terms of time and space,...

Week 25

 So this is the week I did adjust all the week numbers on the posts. Still feel like I'm missing numbers but I'm not in position to fret about it at the moment. Sam has setup the framework that I used for last weeks post to be used every week for his course's duration. Honestly, no complaints here. In my posts for the Intro to Database Systems course, I had mentioned not having very much to write about in these posts, so Sam having this framework in place is definitely making it easier. The subjects we covered this week were: Processes, the fundamental abstraction of the OS. Running programs, simply put, and all the components of them, how memory is allocated, the states they can be in, and so on. The core focus of the OS' operations. The Process API. How to create and control processes through the bash shell and C language. New processes can be created by the fork() or exec() commands depending on whether you're copying an already running process or running a new p...

Week 24

 I know I've skipped a number, but I've learned I've had two posts both labeled 'Week 11'. I should have that sorted by next week. As for the Operating Systems course: It's only the first week of it, and I've already experienced assignments completely disintegrating as I try to complete them. Sam, our instructor for this course, has provided a prompt explicitly for the journal entries. So I do appreciate that much. He's provided the following points and asks we treat them as steps. Identify the topics we covered in class -- you can start by listing them Explain what each of the topics were in your own terms -- take the identified topics and add a sentence or two describing them Identify least-understood topics -- of these topics, which was the hardest for you to write the descriptions? Explain the nature of your confusion -- for these difficult topics, what pieces of them make sense and what pieces are difficult to describe? Identify "aha" mome...