\documentclass[12pt]{article} \usepackage{fullpage}\usepackage{indentfirst} \begin{document} \section{Question 1} \subsection{Overlapping Intervals} \subsection{Non-Overlapping Intervals} \section{Question 2} \subsection*{A} Shared memory has all of the processors access one large pool of memory while distributed memory has each processor have a section of the memory. \subsection*{B} Distributed memory programs communicate via pipes and message queues while shared memory programs share memory with locks in place to prevent unintended behavior and race conditions. \subsection*{C} Shared memory is in most devices nowadays with even phones having multiple cores and a single bank of shared memory. Large rendering farms and HPC will have distributed memory to split rendering or to maximize performance. \subsection*{D} Distributed is easier to scale because the cluster can have nodes added or removed easily without affecting the other nodes. \section{Question 3} \subsection*{A} Concurrency: 8\\ Critical path length: 4\\ Maximum achievable speedup: \(15/4\) \\ Minimum number of processes needed: 8\\ Maximum achievable speedup if the number of processes is limited to: \\ 2- \(15/8\)\\ 4- \(15/5\)\\ 8- \(15/4\)\\ \subsection*{B} Concurrency: 8\\ Critical path length: \\ Maximum achievable speedup: \\ Minimum number of processes needed: \\ Maximum achievable speedup if the number of processes is limited to: \\ 2- \(15/8\)\\ 4- \(15/5\)\\ 8- \(15/4\)\\ \subsection*{C} Concurrency: 8\\ Critical path length: 7\\ Maximum achievable speedup: \(14/7\)\\ Minimum number of processes needed: \\ Maximum achievable speedup if the number of processes is limited to: \\ 2- \(14/10\)\\ 4- \(14/8\)\\ 8- \(14/7\)\\ \subsection*{D} Concurrency: 2\\ Critical path length: 8\\ Maximum achievable speedup: \(15/8\)\\ Minimum number of processes needed: 2\\ Maximum achievable speedup if the number of processes is limited to: \\ 2- \(15/8\)\\ 4- \(15/8\)\\ 8- \(15/8\)\\ \section{Question 4} \subsection*{A} \end{document}