CS Elective Flashcards

1
Q
  • START OF FA1-A1 -
    The tightly coupled set of threads’ execution working on a single task is called Parallel Processing. (T/F)
A

FALSE (?)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Parallelism naturally leads to complexity. (T/F)

A

FALSE** (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Parallelism naturally leads to concurrency. (T/F)

A

TRUE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

A key advantage of distributed memory architectures is that they are more scalable than shared memory systems. (T/F)

A

TRUE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Multiple-applications independently running, are typically called Multithreading. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Threads being blocked altogether and being executed in the sets of 32 threads are called Unit Blocks. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

A Symmetric Multi-Processing (SMP) system has two or more _____ processors connected to a single _____ main memory.

A

IDENTICAL;SHARED (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Threads being blocked altogether and being executed in the sets of 128 threads are called Unit Blocks. (T/F)

A

FALSE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

In most modern multi-core CPUs, cache coherency is usually handled by the _____.

A

processor hardware (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

If private data is used by a single-processor, then shared data is used by a multi-processor. (T/F)

A

TRUE*** (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Distributed memory can be easily scaled. (T/F)

A

TRUE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

UMA stands for Universal Memory Access. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Modern multi-core PCs fall into the MIMD classification of Flynn’s Taxonomy. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Nonuniform Memory Access is often made by logically connecting multiple SMP systems together (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

In a concurrent memory architecture, each processor operates independently, and cannot make changes to its local memory. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Computer memory usually operates at a much faster speed than processors do. (T/F)

A

FALSE** (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Distributed memory scales better than Shared memory. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Parallel computing can increase the number of tasks a program executes in a set time. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

It is necessary in shared memory that the data exists on the same physical device, hence it could not be spread across a cluster of systems. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q
  • START OF F3 -

In Java program, data race only occurs when each of the threads are incrementing a shared variable a large number of time because the JVM’s automatic data race prevention system can only protect against a small number of operations. (T/F)

A

False (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

A maximum of 2 threads can possess a Lock at the same time. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Which of these scenarios does NOT have the potential for a data race?
Group of answer choices

Two threads are both reading and writing the same shared variable.

One thread is reading a shared variable while another thread writes to it.

Two threads are both reading the same shared variable.

Two threads are both writing to the same shared variable.

A

Two threads are both reading the same shared variable. (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Read-write locks can improve a program’s performance compared to using a standard mutex. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Two threads that are both reading and writing the same shared variable has no potential for a data race. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

No thread can possess the ReadLock while another thread has a lock on the WriteLock. (T/F)

A

TRUE** (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

The reader-writer lock is useful especially when there are lots of threads that only need to be read. (T/F)

A

TRUE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Data races can be hard to identify because the data race may not always occur during execution to cause a problem. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

A maximum of 1 thread can possess the WriteLock of a ReentrantReadWriteLock at a time. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Locker Mutex protects critical section of the code to defend against data races, which can occur when multiple threads are concurrently accessing the same location in memory and at least one of those threads is writing to that location. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

A possible strategy to resolve a livelock between multiple threads is thru randomly terminating one of the threads involved in the livelock. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Data race occurs when a thread is unable to gain access to a necessary resource, and is therefore unable to make progress. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

Why is the tryLock() method useful?
Group of answer choices

If multiple threads try to acquire a lock simultaneously, the tryLock() method will randomly pick one to succeed.

It enables a thread to execute alternate operations if the lock it needs to acquire is already taken.

It enforces fairness among multiple threads competing for ownership of the same lock.

It includes built-in protection against common locking errors.

A

It enables a thread to execute alternate operations if the lock it needs to acquire is already taken. (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

When a thread calls Java’s tryLock() method on a Lock that is NOT currently locked by another thread the method will block until the Lock is available and then return false. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Unlike during a deadlock, the threads in a livelock scenario are actively executing without making useful progress. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

The lock() method can be called recursively on a ReentrantLock object, but not on a regular Lock object. (T/F)

A

FALSE** (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

A thread must unlock a ReentrantLock twice before another thread can acquire it. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

When the threads in the program are not making progress, you can determine if it is due to a deadlock or a livelock by using the Resource Monitor to investigate the program’s CPU usage to see if it is actively executing. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

Which statement describes the relationship between Lock and ReentrantLock in Java?
Group of answer choices

The lock() method can be called recursively on a ReentrantLock object, but not on a regular Lock object.

Lock and ReentrantLock are two names for the same class.

ReentrantLock is a class that implements the Lock interface.

A ReentrantLock instantiates a new internal Lock object every time its lock() method is called.

A

ReentrantLock is a class that implements the Lock interface. (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

The tryLock() method is useful because if multiple threads try to acquire a lock simultaneously, the tryLock() method will randomly pick one to succeed. (T/F)

  • END OF FA3-A1, 18/20 -

25* CORRECTED
35* CORRECTED

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q
  • START OF FA3-A2 -

Protecting a critical section of code with mutual exclusion means that whenever a thread enters the critical section, it pauses all other threads in the program. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q

One thread that is reading a shared variable while another thread writes to it has no potential for a data race. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q

Two threads that are both reading the same shared variable has no potential for a data race. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
43
Q

The best use case for using a ReadWriteLock is when lots of threads need to modify the value of a shared variable. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
44
Q

A maximum of 2 threads can possess the ReadLock while another thread has a lock on the WriteLock? (T/F)

A

FALSE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
45
Q

Data races can be hard to identify because the problems that data races cause have an insignificant impact on the program’s performance. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
46
Q

When the threads in the program are not making progress, you can determine if it is due to a deadlock or a livelock by using the Resource Monitor to investigate the program’s memory usage to see if it continues to grow. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
47
Q

When a thread calls Java’s tryLock() method on a Lock that is NOT currently locked by another thread the method will block until the Lock is available and then return true. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
48
Q

A ReentrantLock can be locked multiple times by different threads. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
49
Q

A ReentrantLock instantiates a new internal Lock object every time its lock() method is called. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
50
Q

Unlike during a deadlock, the threads in a livelock scenario are still making progress towards their goal. (T/F)

  • END OF FA3-A2 = 20/20 -
A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
51
Q
  • START OF FA3-A3 -

Two threads that are both reading and writing the same shared variable has the potential for a data race. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
52
Q

The best use case for using a ReadWriteLock is when lots of threads need to modify the value of a shared variable, but only a few thread need to read its value. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
53
Q

Two threads that are both writing to the same shared variable has no potential for a data race. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
54
Q

The best use case for using a ReadWriteLock is when lots of threads need to read the value of a shared variable, but only a few thread need to modify its value. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
55
Q

Data races can be hard to identify because it is impossible to identify the potential for a data race. (T/F)

A

FALSE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
56
Q

The best use case for using a ReadWriteLock is when only a few threads need to modify the value of a shared variable. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
57
Q

To avoid livelock, ensure that only one process takes action chosen by priority or some other mechanism, like random selection. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
58
Q

ReentrantLock is a class that implements the Lock interface. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
59
Q

The tryLock() method is useful because it enables a thread to execute alternate operations if the lock it needs to acquire is already taken. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
60
Q

When a thread calls Java’s tryLock() method on a Lock that is NOT currently locked by another thread the method immediately returns true. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
61
Q

Unlike during a deadlock, the threads in a livelock scenario are _____.

  • END OF FA3-A3 = 20/20 -
A

actively executing without making useful progress (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
62
Q
  • START OF FA3-A4 -

Only 1 thread can possess the ReadLock while another thread has a lock on the WriteLock. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
63
Q

Protecting a critical section of code with mutual exclusion means only allowing authorized threads to execute the critical section. (T/F)

A

FALSE** (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
64
Q

Having too many concurrent threads can lead to starvation. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
65
Q

A ReentrantLock can be locked by the same thread as many times depending on the operating system. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
66
Q

A ReentrantLock can be locked multiple times by the same thread. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
67
Q

How many times must a thread unlock a ReentrantLock before another thread can acquire it?

A

as many times as that thread locked it

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
68
Q

A thread does not need to unlock a ReentrantLock before another thread can acquire it because multiple threads can lock a ReentrantLock at the same time. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
69
Q

A possible strategy to resolve a livelock between multiple threads is thru implementing a randomized mechanism to determine which thread goes first. (T/F)

  • END OF FA3- A4 = 18/20 -

*63 CORRECTED

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
70
Q
  • START OF FA3 - A5 -

There is no limit on the number of threads that can possess the ReadLock while another thread has a lock on the WriteLock. (T/F)

A

FALSE** (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
71
Q

What is the maximum number of threads that can possess the WriteLock of a ReentrantReadWriteLock at the same time?

A

1 (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
72
Q

Data races can be hard to identify because data races are caused by hardware errors and cannot be debugged in software. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
73
Q

Using the ++ operator to increment a variable in Java executes as a single instruction at the lowest level. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
74
Q

Using the ++ operator to increment a variable in Java executes as multiple instructions at the lowest level. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
75
Q

Which of these is a possible strategy to resolve a livelock between multiple threads?
Group of answer choices

none of the mentioned

Implement a randomized mechanism to determine which thread goes first.

Patience because if you wait long enough all livelocks will eventually resolve themself.

Randomly terminate one of the threads involved in the livelock.

A

Implement a randomized mechanism to determine which thread goes first. (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
76
Q

A ReentrantLock can be locked once by multiple threads at the same time. (T/F)

  • END OF FA3-A5 = 19/20 -

**70 CORRECTED

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
77
Q
  • START OF FA3-A6 -

In Java program, data race only occurs when each of the threads are incrementing a shared variable a large number of time because a data race can only occur when multiple threads are writing to a shared variable a large enough number of times. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
78
Q

Protecting a critical section of code with mutual exclusion means preventing multiple threads from concurrently executing in the critical section. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
79
Q

There is no limit on the number of threads that can possess a Lock at the same time. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
80
Q

tryLock() will continuously try to acquire the lock if it is already taken by another thread. (T/F)

A

FALSE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
81
Q

Starvation occurs when a thread is unable to gain access to a necessary resource, and is therefore unable to make progress. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
82
Q

When the threads in the program are not making progress, you can determine if it is due to a deadlock or a livelock by randomly guessing between deadlock and livelock. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
83
Q

tryLock() includes built-in error handling so you do not need a separate try/catch statement. (T/F)

A

FALSE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
84
Q

The tryLock() method is useful because it includes built-in protection against common locking errors. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
85
Q

Lock and ReentrantLock are two names for the same class. (T/F)

  • END OF FA3-A6 = 20/20 -
A

FALSE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
86
Q
  • START OF FA3-A7 -

Which of these scenario describes the best use case for using a ReadWriteLock?

Group of answer choices

Only a few threads need to both and modify the value of a shared variable.

Lots of threads need to modify the value of a shared variable, but only a few thread need to read its value.

Lots of threads need to read the value of a shared variable, but only a few thread need to modify its value.

Lots of threads need to both and modify the value of a shared variable.

A

Lots of threads need to read the value of a shared variable, but only a few thread need to modify its value.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
87
Q

Using the ++ operator to increment a variable in Java executes as an atomic instruction at the lowest level. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
88
Q

Using the ++ operator to increment a variable in Java executes as _____ at the lowest level.
Group of answer choices

none of the mentioned

a single instruction

multiple instructions

an atomic instruction

A

multiple instructions (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
89
Q

The number of threads that can possess a Lock at the same time depends on the operating system. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
90
Q

What does it mean to protect a critical section of code with mutual exclusion?
Group of answer choices

Only allow authorized threads to execute the critical section.

Whenever a thread enters the critical section pause all other threads in the program.

Prevent multiple threads from concurrently executing in the critical section.

Implement proper error handling techniques to catch any unexpected problems.

A

Prevent multiple threads from concurrently executing in the critical section.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
91
Q

How many threads can possess the ReadLock while another thread has a lock on the WriteLock?
Group of answer choices

0

1

no limit

2

A

0

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
92
Q

The tryLock() method is useful because it enforces fairness among multiple threads competing for ownership of the same lock. (T/F)

A

FALSE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
93
Q

When the threads in the program are not making progress, you can determine if it is due to a deadlock or a livelock waiting to see if the problem eventually resolves itself. (T/F)

  • END OF FA3-A7 = 20/20 -
A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
94
Q
  • START OF FA3-A8 -

How many threads can possess a Lock at the same time?
Group of answer choices

no limit

2

0

1

A

1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
95
Q

Why can potential data races be hard to identify?

Group of answer choices

The problems that data races cause have an insignificant impact on the program’s performance.

It is impossible to identify the potential for a data race.

The data race may not always occur during execution to cause a problem.

Data races are caused by hardware errors and cannot be debugged in software.

A

The data race may not always occur during execution to cause a problem.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
96
Q

Deadlock occurs when each member of a group is waiting for some other member to take action, and as a result, neither member is able to make progress.

(T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
97
Q

What happens when a thread calls Java’s tryLock() method on a Lock that is NOT currently locked by another thread?
Group of answer choices

The method will block until the Lock is available and then return false

The method will block until the Lock is available and then return true

The method immediately returns true

The method immediately returns false

A

The method immediately returns true (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
98
Q

Having too many concurrent threads may still not lead to starvation. (T/F)

  • END OF FA3-A8 = 19/20 -
A

FALSE** (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
99
Q
  • START OF FA3-A9 -

What is the maximum number of threads that can possess the ReadLock of a ReentrantReadWriteLock at the same time?
Group of answer choices

0

2

no limit

1

A

no limit (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
100
Q

When a thread calls Java’s tryLock() method on a Lock that is NOT currently locked by another thread the method immediately returns false. (T/F)

A

FALSE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
101
Q

Dining Philosophers Problem is a classic example that’s used to illustrate synchronization issues when multiple threads are competing for multiple locks. (T/F)

  • END OF F3-A9 = 20/20 -
A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
102
Q

To lock a mutex multiple times, using a reentrant mutex may seem like an easy way to avoid a deadlock. (T/F)

A

TRUE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
103
Q

A maximum of 2 threads can possess the WriteLock of a ReentrantReadWriteLock at the same time. (T/F)

A

FALSE (CORRECT)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
104
Q

A thread must unlock a ReentrantLock as many times as that thread locked it before another thread can acquire it. (T/F)

  • END OF FA3-A10 = 20/20 -
A

FALSE

105
Q
  • START OF FA4-A1 -

Condition variables enable threads to signal each other when the state of the queue changes. (T/F)

A

TRUE (CORRECT)

106
Q

What does the semaphore’s release() method do to the counter value?

Group of answer choices

Always decrement the counter’s value.

Always increment the counter’s value.

If the counter is positive, decrement its value.

If the counter is positive, increment its value.

A

Always increment the counter’s value. (CORRECT)

(WRONG) If the counter is positive, increment its value.

107
Q

The semaphore’s release() method always increments the counter’s value.
(T/F)

A

FALSE

108
Q

The producer-consumer pattern follows FIFO method. (T/F)

A

TRUE (CORRECT)

109
Q

The consumption rate should be greater than or equal to the production rate in a producer-consumer architecture. (T/F)

A

FALSE (CORRECT)

110
Q

The consumption and production rates must be exactly the same in a producer-consumer architecture. (T/F)

A

FALSE (CORRECT)

111
Q

Track how many threads the program has created is a common use case for a counting semaphore. (T/F)

A

FALSE** (CORRECT)

112
Q

If the producer puts elements into a fixed-length queue faster than the consumer removes them, the consumer will automatically speed up to match the producer’s speed. (T/F)

A

FALSE (CORRECT)

113
Q

Distributed architecture consists of a chained-together series of producer-consumer pairs. (T/F)

A

FALSE (CORRECT)

114
Q

The semaphore’s acquire() method always increments the counter’s value. (T/F)

A

FALSE (CORRECT)

115
Q

A future is a task that can be assigned to a thread pool for execution. (T/F)

A

FALSE**

116
Q

When implementing a recursive divide-and-conquer algorithm in Java, why should you use a ForkJoinPool instead of simply creating new threads to handle each subproblem?

Group of answer choices

Using a ForkJoinPool is the only way to create an asynchronous task in Java that returns a result.

The ForkJoinPool manages a thread pool to execute its ForkJoinTasks, which reduces the overhead of thread creation.

Threads cannot recursively spawn other threads.

The ForkJoinPool automatically subdivides the problem for you.

A

The ForkJoinPool manages a thread pool to execute its ForkJoinTasks, which reduces the overhead of thread creation. (CORRECT)

117
Q

Thread is a synchronization tool? (T/F)

A

FALSE (CORRECT)

118
Q

Which one of the following is a synchronization tool?

Group of answer choices

pipe

thread

socket

semaphore

A

semaphore (CORRECT)

119
Q

It’s not possible to have data races without a race condition but possible to have race conditions without a data race. (T/F)

A

FALSE

120
Q

When it reaches the base case, a divide-and-conquer algorithm divides the problem into two smaller subproblems. (T/F)

A

FALSE (CORRECT)

121
Q

The Runnable interface’s run() method can have an optional return value, but the Callable interface’s call() method is required to always return an object. (T/F)

A

FALSE** (CORRECT)

122
Q

Threads within the same thread pool can more easily share data with each other than standard non-pool threads. (T/F)

A

TRUE

123
Q

When several processes access the same data concurrently and the outcome of the execution depends on the particular order in which the access takes place, is called?

Group of answer choices

Farace conditionlse

critical condition

dynamic condition

essential condition

  • END OF FA4-A1 -
    13/20

115* CORRECTED
121* CORRECTED
111* CORRECTED
106** CORRECTED

A

“Farace conditionlse” (i think they mean RACE CONDITION)

(CORRECT)

124
Q
  • START OF FA4-A2 -

The semaphore’s acquire() method increments its value if the counter is positive. (T/F)

A

FALSE

125
Q

The binary semaphore can have a positive or negative value. (T/F)

A

FALSE (CORRECT)

125
Q

The producer-consumer pattern follows LIFO method. (T/F)

A

FALSE (CORRECT)

126
Q

The binary semaphore can only be acquired and released by the same thread. (T/F)

A

FALSE (CORRECT)

127
Q

What is the difference between a binary semaphore and a mutex?
Group of answer choices

The binary semaphore can have a positive or negative value.

The binary semaphore can be acquired and released by different threads.

The binary semaphore can only be acquired and released by the same thread.

The binary semaphore will have a value of 0, 1, 2, 3, etc.

A

The binary semaphore can be acquired and released by different threads. (CORRECT)

127
Q

The average rates of production and consumption has not relation in a producer-consumer architecture? (T/F)

A

TRUE** (CORRECT)

128
Q

In addition to modifying the counter value, what else does calling the semaphore’s release() method do?

Group of answer choices

nothing else

Signal another thread waiting to acquire the semaphore.

Block and wait until the semaphore is available.

Block all other threads waiting on the semaphore.

A

Signal another thread waiting to acquire the semaphore. (CORRECT)

128
Q

Calling the semaphore’s release() method blocks and waits until the semaphore is available. (T/F)

A

FALSE (CORRECT)

129
Q

Semaphore is a synchronization tool? (T/F)

A

TRUE (CORRECT)

130
Q

When implementing a recursive divide-and-conquer algorithm in Java, the ForkJoinPool automatically subdivides the problem for you. (T/F)

A

FALSE (CORRECT)

131
Q

Threads provide a convenient way to group and organize a collection of related threads. (T/F)

A

FALSE (CORRECT)

132
Q

What is the difference between Java’s Callable and Runnable interfaces?

Group of answer choices

Only Callable objects can be submitted to an ExecutorService.

A Runnable object cannot be used to create a Future.

The Runnable interface’s run() method can have an optional return value, but the Callable interface’s call() method is required to always return an object.

The Callable interface’s call() method returns a result object but the Runnable interface’s run() method does not.

A

The Callable interface’s call() method returns a result object but the Runnable interface’s run() method does not. (CORRECT)

133
Q

Condition variables work together with the OS execution scheduler serving as a monitor. (T/F)

A

FALSE

134
Q

A Runnable object cannot be used to create a Future. (T/F)

A

FALSE (CORRECT)

134
Q

A race condition is a flaw in the timing or ordering of a program’s execution that causes incorrect behavior. (T/F)

A

TRUE (CORRECT)

135
Q

Condition variables work together with a process serving as a monitor.
(T/F)

  • END OF FA4-A2=18/20 -

**128 CORRECTED

A

FALSE (CORRECT)

136
Q
  • START OF FA4-A3 -

Create an extra thread to release the locks at random intervals to breakup a deadlock is a possible strategy to prevent deadlocks when multiple threads will need to acquire multiple locks. (T/F)

A

FALSE** (CORRECT)

137
Q

Prioritizing the locks so that all threads will acquire them in the same relative order is a possible strategy to prevent deadlocks when multiple threads will need to acquire multiple locks. (T/F)

A

TRUE (CORRECT)

138
Q

Which of these is a possible strategy to prevent deadlocks when multiple threads will need to acquire multiple locks?

Group of answer choices

Prioritize the locks so that all threads will acquire them in the same relative order.

Create a single “master lock” that all threads must first acquire before locking or unlocking any of the other locks.

Hope that you get lucky and a deadlock doesn’t occur.

Create an extra thread to release the locks at random intervals to breakup a deadlock.

A

Prioritize the locks so that all threads will acquire them in the same relative order. (CORRECT)

139
Q

Tracking how long a program has been running is a common use case for a counting semaphore. (T/F)

A

FALSE (CORRECT)

140
Q

Calling the semaphore’s release() method signals another thread waiting to acquire the semaphore. (T/F)

A

FALSE**

140
Q

If the producer puts elements into a fixed-length queue faster than the consumer removes them, the queue will fill up and cause an error. (T/F)

A

TRUE (CORRECT)

141
Q

Creating a single “master lock” that all threads must first acquire before locking or unlocking any of the other locks is a possible strategy to prevent deadlocks when multiple threads will need to acquire multiple locks. (T/F)

A

TRUE

142
Q

Pipeline architecture consists of a chained-together series of producer-consumer pairs. (T/F)

A

TRUE

143
Q

Heisenbug is a software bug that seems to disappear or alter its behavior when you try to study it. (T/F)

A

TRUE (CORRECT)

143
Q

What does a divide-and-conquer algorithm do when it reaches the base case?
Group of answer choices

Solve all of the subproblems that have been created.

Divide the problem into two smaller subproblems.

Recursively solve a set of smaller subproblems.

Stop subdividing the current problem and solve it.

A

Stop subdividing the current problem and solve it. (CORRECT)

144
Q

When using a thread pool in Java, the host operating system assigns submitted tasks to specific threads within the available pool to execute. (T/F)

A

FALSE (CORRECT)

145
Q

Why are thread pools useful?

Group of answer choices

Threads like to relax and go for a swim every once in a while.

They reuse threads to reduce the overhead that would be required to create a new, separate thread for every concurrent task.

They provide a convenient way to group and organize a collection of related threads.

Threads within the same thread pool can more easily share data with each other than standard non-pool threads.

A

They reuse threads to reduce the overhead that would be required to create a new, separate thread for every concurrent task.

146
Q

When using a thread pool in Java, the thread pool executor service assigns submitted tasks to specific threads within the available pool to execute. (T/F)

A

TRUE (CORRECT)

147
Q

A deadlock avoidance algorithm dynamically examines the system storage state to ensure that a circular wait condition can never exist. (T/F)

A

FALSE** (CORRECT)

148
Q

When using a thread pool in Java, the compiler assigns submitted tasks to specific threads within the available pool to execute. (T/F)

A

FALSE (CORRECT)

149
Q

When it reaches the base case, a divide-and-conquer algorithm recursively solves a set of smaller subproblems. (T/F)

A

FALSE (CORRECT)

150
Q

Socket is a synchronization tool? (T/F)

  • END OF FA4-A3 = 16/20 -

**153 CORRECTED
**144 CORRECTED
**140 CORRECTED

A

FALSE (CORRECT)

151
Q

-START OF FA4-A4 -
The semaphore’s release() method increments its value if the counter is positive. (T/F)

A

FALSE**

152
Q

FIFO architecture consists of a chained-together series of producer-consumer pairs. (T/F)

A

FALSE

153
Q

When should a thread typically signal a condition variable?

Group of answer choices

It doesn’t matter.

after doing something to change the state associated with the condition variable but before unlocking the associated mutex

after unlocking the associated mutex

after locking the associated mutex and checking whether or not the condition is true

A

after doing something to change the state associated with the condition variable but before unlocking the associated mutex (?)

(WRONG) after locking the associated mutex and checking whether or not the condition is true

154
Q

Which of these is a common use case for a counting semaphore?

Group of answer choices

Track how many threads the program has created.

Track how long a program has been running.

Enforce mutual exclusion in a critical section of code.

Track the availability of a limited resource.

A

Track the availability of a limited resource. (CORRECT)

155
Q

When implementing a recursive divide-and-conquer algorithm in Java, the ForkJoinPool manages a thread pool to execute its ForkJoinTasks, which reduces the overhead of thread creation. (T/F)

A

TRUE (CORRECT)

156
Q

A future serves as a placeholder to access a result that may not been computed yet. (T/F)

A

TRUE (CORRECT)

157
Q

When it reaches the base case, a divide-and-conquer algorithm solves all of the subproblems that have been created. (T/F)

A

FALSE (CORRECT)

158
Q

Threads reuse threads to reduce the overhead that would be required to create a new, separate thread for every concurrent task. (T/F)

  • END OF FA4-A4 = 17/20 -

**157 CORRECTED
**164 CORRECTED
** 153 CORRECTED

A

TRUE** CORRECT

159
Q
  • START OF FA4-A5 -

The semaphore’s acquire() method always decrements the counter’s value. (T/F)

A

FALSE (CORRECT)

160
Q

Calling the semaphore’s release() method blocks all other threads waiting on the semaphore. (T/F)

A

TRUE** (CORRECT)

161
Q

If the producer puts elements into a fixed-length queue faster than the consumer removes them, the producer will run out of elements to put in the queue. (T/F)

A

FALSE (CORRECT)

162
Q

The semaphore’s acquire() method decrements its value if the counter is positive. (T/F)

A

TRUE (CORRECT)

163
Q

A barrier for a group of threads or processes in the source code means any thread/process must stop at this point and cannot proceed until all other threads/processes reach this barrier. (T/F)

A

TRUE (CORRECT)

164
Q

A future serves as the counterpart to a programming past. (T/F)

A

FALSE

165
Q

When implementing a recursive divide-and-conquer algorithm in Java, threads cannot recursively spawn other threads. (T/F)

  • END OF FA4-A5 = 19/20 -

166 CORRECTED

A

FALSE (CORRECT)

166
Q
  • START OF FA4-A6 -

What happens if the producer puts elements into a fixed-length queue faster than the consumer removes them?
Group of answer choices

The consumer will automatically speed up to match the producer’s speed.

The producer will run out of elements to put in the queue.

The queue will fill up and cause an error.

The queue will continuously expand to hold the extra items.

A

The queue will fill up and cause an error.

167
Q

Which architecture consists of a chained-together series of producer-consumer pairs?

Group of answer choices

FIFO

pipeline

distributed

client-server

A

pipeline (CORRECT)

168
Q

When it reaches the base case, a divide-and-conquer algorithm stops subdividing the current problem and solve it. (T/F)

A

TRUE (CORRECT)

168
Q

The consumption rate should be less than or equal to the production rate in a producer-consumer architecture. (T/F)

A

FALSE

169
Q

Condition variables work together with a thread serving as a monitor. (T/F)

  • END OF FA4-A6 = 20/20 -
A

FALSE (CORRECT)

170
Q
  • START OF FA4-A7 -

Client-server architecture consists of a chained-together series of producer-consumer pairs. (T/F)

A

FALSE

171
Q

Enforcing mutual exclusion in a critical section of code is a common use case for a counting semaphore. (T/F)

A

FALSE** (CORRECT)

172
Q

What does the semaphore’s acquire() method do to the counter value?

Group of answer choices

Always decrement the counter’s value.

If the counter is positive, decrement its value.

If the counter is positive, increment its value.

Always increment the counter’s value.

A

If the counter is positive, decrement its value.

173
Q

The binary semaphore will have a value of 0, 1, 2, 3, etc. (T/F)

A

FALSE

174
Q

The semaphore’s release() method always decrements the counter’s value. (T/F)

A

FALSE

175
Q

A future allows a program to change how it will function the next time it is run. (T/F)

A

FALSE

176
Q

A deadlock avoidance algorithm dynamically examines the resources to ensure that a circular wait condition can never exist. (T/F)

  • END OF FA4-A7 = 18/20 -

**183 CORRECTED
**178 CORRECTED

A

FALSE** (CORRECT)

177
Q
  • START OF FA4-A8 -

Condition variables work together with a mutex serving as a monitor. (T/F)

A

TRUE

178
Q

A deadlock avoidance algorithm dynamically examines the __________ to ensure that a circular wait condition can never exist.

system storage state

resource allocation state

resources

operating system

  • END OF FA4-A8 = 18/20 -

**185 PENDING CORRECTION

A

resource allocation state (?)

(WRONG) system storage state

179
Q
  • START OF FA4-A9 -

How should the average rates of production and consumption be related in a producer-consumer architecture?
Group of answer choices

It doesn’t matter.

The consumption rate should be less than or equal to the production rate.

The consumption and production rates must be exactly the same.

The consumption rate should be greater than or equal to the production rate.

A

The consumption rate should be greater than or equal to the production rate.

180
Q

When using a thread pool in Java, the _____ assigns submitted tasks to specific threads within the available pool to execute.

Group of answer choices

host operating system

thread pool executor service

compiler

programmer

A

thread pool executor service

181
Q

The Callable interface’s call() method returns a result object but the Runnable interface’s run() method does not. (T/F)

A

TRUE

182
Q

Only Callable objects can be submitted to an ExecutorService. (T/F)

  • END OF FA4-A9 = 19 / 20 -
A

FALSE

183
Q
  • START OF FA4-A10 -

Data races can occur when two or more threads concurrently access the same memory location. (T/F)

A

TRUE

184
Q

Pipe is a synchronization tool? (T/F)

  • END OF FA4-A10 = 20/20 -
A

FALSE

185
Q
  • START OF SA2 -

In Java program, data race only occurs when each of the threads are incrementing a shared variable a large number of time because the large number of write operations on the shared variable provided more opportunities for the data race to occur. (T/F)

A

TRUE (CORRECT)

186
Q

In the Java program to demonstrate a data race, why did the data race only occur when each of the threads were incrementing a shared variable a large number of time?
Group of answer choices

The JVM’s automatic data race prevention system can only protect against a small number of operations.

A data race can only occur when multiple threads are writing to a shared variable a large enough number of times.

The large number of write operations on the shared variable provided more opportunities for the data race to occur.

none of the mentioned

A

The large number of write operations on the shared variable provided more opportunities for the data race to occur.

187
Q

A thread must unlock a ReentrantLock once before another thread can acquire it. (T/F)

A

TRUE

188
Q

The semaphore’s release() method decrements its value if the counter is positive. (T/F)

A

FALSE

189
Q

When implementing a recursive divide-and-conquer algorithm in Java, using a ForkJoinPool is the only way to create an asynchronous task in Java that returns a result. (T/F)

A

FALSE

190
Q

When using a thread pool in Java, the programmer assigns submitted tasks to specific threads within the available pool to execute. (T/F)

A

FALSE

191
Q

The binary semaphore can be acquired and released by different threads.

A

TRUE

192
Q
  • FA1 CONTINUATION -

Read-write can improve a program’s performance compared to using a standard mutex. (T/F)

A

TRUE (CORRECT)

193
Q

Unlike during a deadlock, the threads in a livelock scenario are stuck in a blocked state waiting on other threads. (T/F)

A

FALSE (CORRECT)

194
Q

Which of these is a possible strategy to resolve a livelock between multiple threads?

A

Implement a randomize mechanism to determine which thread goes first. (CORRECT)

195
Q

Which of these scenario describes the best use case for using a ReadWriteLock?

A

Lots of threads need to read the value of a shared variable, but only a few thread need to modify its value. (CORRECT)

196
Q

tryLock() is a non-blocking version of the lock() method.
(T/F)

A

TRUE (CORRECT)

197
Q

The threads in your program are clearly not making progress. How might you determine if it is due to a deadlock or a livelock?

A

Use the Resource Monitor to investigate the program’s CPU usage to see if it is actively executing. (CORRECT)

198
Q

Only 1 thread can possess a Lock at the same time. (T/F)

A

TRUE (CORRECT)

199
Q

Try lock or try enter is a blocking version of the lock or acquire method (T/F)

A

FALSE (CORRECT)

200
Q

Protecting a critical section of code with mutual exclusion means implementing proper error handling techniques to catch any unexpected problems (T/F)

A

FALSE (CORRECT)

201
Q

Which statement describes the relationship between Lock and ReentrantLock in Java?

A

ReentrantLock is a class that implements the Lock interface. (CORRECT)

202
Q

The four classifications of Flynn’s Taxonomy are based on the number of concurrent instruction streams and I/O streams available in the architect (T/F)

A

TRUE (CORRECT)

203
Q

An SMP system is a single processor connected to a single shared memory often through a serial circuit (T/F)

A

FALSE (CORRECT)

204
Q

Threads being blocked altogether and being executed in the sets of 8 threads are called Unit Blocks. - cache (T/F)

A

FALSE (CORRECT)

205
Q

A key advantage of distributed memory architectures is that they are _____ than shared memory systems

A

LESS COMPLEX (CORRECT)

206
Q

The four classifications of Flynn’s Taxonomy are based on the number of concurrent instruction streams and I/O streams available in the architecture (T/F)

A

TRUE (CORRECT)

207
Q

Multiple-applications dependently running, are typically called Multithreading (T/F)

A

FALSE (CORRECT)

208
Q

serialIn a concurrent memory architecture, each processor operates independently, and cannot make changes to its local memory. (T/F)

A

FALSE (CORRECT)

209
Q

Distributed processing is the term used for simultaneous access to a resource, physical or logical. (T/F)

A

FALSE (CORRECT)

210
Q

Public data is used by a multi-processor (T/F)

A

FALSE (CORRECT)

211
Q

A key advantage of distributed memory architecture is that they are more responsive than shared memory system. (T/F)

A

FALSE (CORRECT)

212
Q

Private data is used by a single-processor (T/F)

A

TRUE (CORRECT)

213
Q

The on-chip memory which is local to every multithreaded Multiple Instruction Single Data (MISD) Processor is called local memory (T/F)

A

FALSE (CORRECT)

214
Q

In a parallel memory architecture, each processor operates independently, and if it makes changes to its local memory, that change is not automatically reflected in the memory of other processors (T/F)

A

FALSE (CORRECT)

215
Q

Each core of modern processors’ has their own cache that stores frequently accessed data (T/F)

A

TRUE (CORRECT)

216
Q

Uniform Memory Access is often made by physically connecting multiple SMP systems together (T/F)

A

FALSE (CORRECT)

217
Q

An SMP system has two or more identical processors which are connected to a single shared memory often through a system bus (T/F)

A

TRUE (CORRECT)

218
Q

The on-chip memory which is local to every multithreaded Single Instruction Single Data (SISD) Processor is called local memory. (T/F)

A

FALSE (CORRECT)

219
Q

Parallel processing has single execution flow (T/F)

A

FALSE (CORRECT)

220
Q

The machine object created by the operating system, managing, scheduling, and executing is a thread of DIMS instructions. (T/F)

A

FALSE (CORRECT)

221
Q

In parallel processing, several instructions are executed simultaneously. (T/F)

A

TRUE (CORRECT)

222
Q

Parallel computing can increase the _____.

All of these answers.

number of tasks a program executes in a set time.

speed at which a program executes a set number of tasks
scale of problems a program can tackle

A

All of these answers. (CORRECT)

223
Q

Parallel computing can increase the speed at which a program executes a set number of tasks (T/F)

A

TRUE (CORRECT)

224
Q

An SMP system a single processor connected to a single shared memory often through a serial circuit. (T/F)

A

FALSE (CORRECT)

225
Q

Modern multi-core PCs fall into the SIMD classification of Flynn’s Taxonomy (T/F)

A

FALSE (CORRECT)

226
Q

Modern multi-core PCs fall into the MISD classification of Flynn’s Taxonomy (T/F)

A

FALSE (CORRECT)

227
Q

Data transfer over a bus is much faster (T/F)

A

FALSE (CORRECT)

228
Q

Cache coherency is not an issue handled by the hardware in multicore processors (T/F)

A

FALSE (CORRECT)

229
Q

Shared memory always scales well (T/F)

A

FALSE (CORRECT)

230
Q

Distributed processing has single execution flow (T/F)

A

FALSE (CORRECT)

231
Q

A key advantage of distributed memory architectures is that they are more responsive than shared memory systems (T/F)

A

FALSE (CORRECT)

232
Q

A single applications independently running, is typically called Multithreading (T/F)

A

FALSE (CORRECT)

233
Q

The four classifications of Flynn’s Taxonomy are based on the number of concurrent _____ streams and _____ streams available in the architecture

A

INSTRUCTION; DATA (CORRECT)

234
Q

UMA stands for Uniform Memory Allocation (T/F)

A

FALSE (CORRECT)

235
Q

Processes being blocked altogether and being executed in the sets of 32 processes are called Unit Blocks (T/F)

A

FALSE (CORRECT)

236
Q

If public data is used by a single-processor, then shared data is used by a multi-processor (T/F)

A

FALSE (CORRECT)

237
Q

In a concurrent memory architecture, each processor operates independently, and if it makes changes to its local memory, that change is not automatically reflected in the memory of other processors (T/F)

A

FALSE (CORRECT)

238
Q

In a distributed memory architecture, each processor operates independently, and if it makes changes to its local memory, that change is not automatically reflected in the memory of other processors (T/F)

A

TRUE (CORRECT)

239
Q

Parallelism naturally leads to dependency (T/F)

A

FALSE (CORRECT)

240
Q

A symmetric Multi-Processing (SMP) system has two or more identical processors connected to a single shared main memory (T/F)

A

TRUE (CORRECT)

241
Q

The tightly coupled set of processes’ execution working on a single task is called Parallel Processing (T/F)

A

FALSE (CORRECT)

242
Q

A Symmetric Multi-Processing (SMP) system has two or more dissimilar processors connected to a single shared main memory (T/F)

A

FALSE (CORRECT)

243
Q

The machine object created by the hardware, managing, scheduling, and executing is a thread of SIMS instructions. (T/F)

A

FALSE (CORRECT)

244
Q

Shared memory doesn’t necessarily mean all of the data exists on the same physical device, hence it could be spread across a cluster of systems (T/F)

A

TRUE (CORRECT)

245
Q

UMA stands for United Memory Access (T/F)

A

FALSE (CORRECT)

246
Q

The on-chip memory which is local to every multithreaded Multiple Instruction Multiple Data (MIMD) Processor is called local memory (T/F)

A

FALSE (CORRECT)

247
Q

The machine object created by the hardware, managing, scheduling, and executing is a thread of DIMS instructions (T/F)

A

FALSE (CORRECT)

248
Q

A symmetric Multi-Processing (SMP) system has two or more identical processors connected to a single distributed main memory (T/F)

A

FALSE (CORRECT)

249
Q

Threads being blocked altogether and being executed in the sets of 2 threads are called Unit Blocks (T/F)

A

FALSE (CORRECT)

250
Q

The four classifications of Flynn’s Taxonomy are based on the number of concurrent program streams and data streams available in the architecture (T/F)

A

FALSE (CORRECT)

251
Q

Distributed memory cannot be easily scaled (T/F)

A

FALSE (CORRECT)

252
Q
  • FA2 CONTINUATION -

https://docs.google.com/document/d/1NaHvQjuEc8pTytp3-zC-P9N9YwZ2e2xKyEPnMKqxvW8/edit

A