April 6th, 2026 Journal Entry Week 5
April 6th, 2026
Journal Entry Week 5
This week we studied concurrency and threading concepts heavily. Topics were processes vs threads, user level vs kernel level, and concurrency vs parallelism. We looked at synchronization tools and how the OS manages CPU scheduling between the threads. We covered how memory is either shared or isolated between threads and processes with them tying back into previous week discussions about the virtual addresses.
A process is basically a container that has memory it owns and threads are small units of execution inside each process that they can share most of the memory. Concurrency is many tasks appear to run at the same time. Parallelism is when they actually run at the same time on many cores. Threads need their own stacks to run independent executions. Synchronization tools spinlock help to prevent the threads from messing with each other when they access the data.
My hardest concept this week was wrapping my mind around how and why different types of locks are used. Spinlocks vs just letting a thread stop for the CPU. I get that spinlocks are for short operations but I don't get why the CPU decides, or how it decides spinlock is better than sleeping? Does that make sense? I also want to understand what happens at the hardware level during all this stuff. What does it physically look like?
My aha moment was figuring out that concurrency can be a thing without parallelism when there is time sharing. Figuring out that and how it works with scheduling concepts was cool, and how a single core CPU can still work many threads efficiently.
I'm curious for next week and what concepts will look like when we get into bigger things like web servers and databases. I also want to learn more about race conditions and how it works in real code. The lecture with code examples was a little small on my phone so I will watch it again on my TV.
I see how this all ties into programming and using virtualization and OS design. It is interesting how this ties in with performance and multi threaded applications.
=========================================================================
Write a reflection on your learning in this week of class.
It is okay if you summarize the main topics covered during the week, but the purpose of the log is reflection. What questions do you have? What ideas do you have? Are there any concepts that you're finding hard to get your head around? If so, take this opportunity to explain exactly what's not clear.
A way to approach this is to think about how the things we learned this week fit together, both with each other and with things from previous lectures and from other topics. The basic steps are below.
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" moments -- which topic did you find it easiest to write about, and why did it make sense?
Ask questions -- what do you think will come next? Are there any gaps that don't seem to be explained yet?
What connections did you see to other classes and applications -- have you used/heard/thought about these topics before?
I'd recommend treating these like steps. First do step one and list out the topics. Next, describe them. After that, think about how those two steps went and what it seems to mean. Finally, think about how these topics are tied together -- will they be helpful in other classes, do they relate to things we learned previously, or are you thinking about how they might fit into the larger topic of virtualization?
Note: your reflection should be at least 250 words, and will be capped at ~2k words.
Comments
Post a Comment