Question
Objective: This program assignment is provided to let the students understand how to the Operating Systems schedule all the processes on a multiprocessor or multicore
Objective: This program assignment is provided to let the students understand how to the Operating Systems schedule all the processes on a multiprocessor or multicore environment.
Environment: Unix/Linux environment (VM Linux or Triton Server), Windows platform, Mac OS
Language: C, C++, and Java
Requirements:
i. You can write an application program which shows process/thread synchronization using:
1. Semaphore
2. Monitor
3. Java Synchronized feautre
ii. Among the above synchronization methods, I hope you would pick one method and apply your application program which requires process/thread synchronization.
iii. In case of Java, please refer to the reference found at the bottom.
iv. Final result should be organized as a document which explains the overview and the structure of your program, real code, execution results (including captured image), and the conclusion including justification of your program, lessons you've learned, comments, etc.
Reference 1: Concurrent/Multithreaded Programming in Java
Java is known as one of the first languages to make multithreading easily available to developers. A thread is assigned code through Thread subclass (start() and run() method) or Runnable interface implementation.
(1) Critical Section in Java
- Every method declared with the synchronized keyword is a critical section.
- Only one execution thread will access one of the methods of an object declared with the synchronized keyword.
- Only one execution thread will access one of the static method declared with the synchronized keyword, but another thread can access other non-static methods of an object of that class.
- Two threads can access two different synchronized methods if one is static and the other one is not.
- If both methods change the same data, you can have data inconsistency errors.
(2) Bank Synchronization Program
- Description
o Account class : using the synchronized keyword, we guarantee correct access to shared data in concurrent applications
- tmp, to store the value of the account's balance.
o Bank class : makes 100 calls to the subtractAmount() method that decrements the balance by 100 in each call.
o Company class : makes 100 calls to the addAmount() method that increments the balance by 1000 in each call.
o TestBank class
- Remark: Only a thread can access the methods of an object that use the synchronized keyword in their declaration. If a thread (A) is executing a synchronized method and another thread (B) wants to execute other synchronized methods of the same object, it will be blocked until the thread (A) ends.
But if thread (B) has access to different objects of the same class,
none of them will be blocked.
from Java 7 Concurrency Cookbook by Javier Fernandez Gonzalez (2012)
(3) Blocking Queues
o Java comes with blocking queue implementations in the java.util.concurrent package.
(4) Thread Pools
o Java comes with built in thread pools in the java.util.concurrent package.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started