Posts

Showing posts from November, 2024
This week in CST334 we learned about concurrency and the challenges that can come with using threads. In this weeks lab, I saw firsthand how threads can run independently but on the other hand how things can go wrong when they share data. In the first program the threads didn't always get the correct values because they were sharing the same variables which would lead to inconsistent results. After fixing the program by giving each thread its own isolated copy of the data everything would work as expected. This showed how important it is to manage shared resources properly and plan ahead when working with multithreaded programs. It was a great way to understand how to handle concurrency better.
This week we focused on virtualization and how it lets each process have its own virtual memory space, making it feel like there is more memory than what’s physically available. It’s a great way to keep processes isolated for security and to prevent them from interfering with one other. I also learned how the system uses things like paging and the Memory Management Unit to translate between virtual and physical memory. In the lab, we worked with pipes, which showed how processes communicate while staying separate, tying into how the OS manages memory and resources. It was cool to see these concepts in action! 
This week in CST334 I learned about memory virtualization. It gives each process its own virtual memory space, making it feel like it has more memory than physically available. It improves security by isolating each process and uses tools like paging and the Memory Management Unit to translate virtual addresses to physical ones. In this weels lab we explored how processes work independently but communicate through mechanisms like pipes, showing how the operating system manages memory and resources to keep processes separate yet functional together. It was a great way to see these concepts in action.
This week, I explored the fundamentals of process management in C and learned how operating systems work with multiple processes running at the same time. I learned how functions like fork, wait, and execlp let programs control separate processes, which can work in tandem and manage independent tasks. Observing the behavior of these processes with different timing showed me how subtle changes impact their order and how the OS schedules them. I also learned about managing process states for example preventing zombie and orphan processes and finally saw how imortant it is to document these behaviors clearly to understand and troubleshoot parallel programming effectively and efficiently.