Skip to main content

CST335 Week 6 Journal Entry

 This week we learned about semaphores and their role in synchronizing processes in computer science. Semaphores are synchronization tools used to manage concurrent processes by utilizing counters to control access to shared resources. They can be categorized into binary semaphores, which only take values 0 and 1, and act like a lock, and counting semaphores, which can take non-negative integer values to allow multiple processes to access a finite number of resources. Understanding semaphores is essential for ensuring that concurrent processes do not cause conflicts or data corruption.

We also learned how to use semaphores in coding. We learned to write simple code with semaphores that involved initializing the semaphore, and performing wait and signal operations. By controlling the semaphores we ensured that resources were accessed in a controlled manner. We also learned a little about other synchronizations variables like monitors and were able to see the tradeoffs between the different techniques. This week I was able to learn a great deal more about synchronization and the importance of careful resource management in concurrent programming.

Comments

Popular posts from this blog

CST 363 - Learning Journal Week 7

This week we learned how to implement a different type of database using MongoDB. For our group project this week we changes the SQL code to MongoDB code. Both of these database applications do a fine job of working with data and saving it to a database. I did find that MongoDB seemed more streamlined than working with SQL. With SQL there seemed to be more setup as in creating prepared statements, and then executing queries. With MongoDB it seemed like a good chunk of the code was abstracted away and this made for cleaner looking code at the call site. If I had to choose I would likely go with MongoDB as it seemed more approachable.

CST335 Week 7 Journal Entry

 This week I learned about input/output (I/O) devices and their interactions with the operating system (OS). Two types of devices I learned about were block and character devices. Block devices, like hard drives and SSDs, store data in fixed-size blocks and allow random access, making them ideal for large data transfers. Character devices, such as keyboards and mice, handle data streams one character at a time, supporting sequential access. The OS play a crucial role in managing these devices through device drivers that provide a standard interface to interact with the hardware. Performance characteristics of hard drives, such as seek time, rotational latency, and transfer rates, are pivotal in determining overall system efficiency. By calculating transfer rates for different workloads, I learned how disk access patterns significantly impact performance. Additionally, understanding RAID levels provided insights into how redundancy and striping enhance data reliability and performan...

CST363 Learning Journal Week 4

 This weeks learning journal prompts are: 1.  Briefly summarize 5 things what you have learned in the course so far.   2. List at least 3 questions you still have about databases. 1. SQL - Learning how to use SQL was great for me. I had never previously used SQL and I found it to be a very approachable and simple programming language. I learned how to perform queries and build tables to organize data in a manner that was accessible and practical.    Entity Relationship Diagrams - These diagrams I found to be very useful in the initial build out of a database and helps create a visual representation of entities, their attributes and relationships. The ERD can also be used to generate the code required in SQL to model the ERD.   Database Design Process - The text and lectures provided some good guidelines on the process to create a database. I learned how to understand the database requirements by speaking with the end users and also the process of analy...