Assignment title: Information


CI5220 – Networking and Operating Systems Operating Systems Assignment Deadline: 24th of March 2017 Assignment Overview This assignment is about operating systems architecture and functionality. The assignment is divided into three parts A-C. The first part is concerned with the Windows operating system architecture, the second part is concerned with resource handling and the third part deals with multi-threading. You need to answer ALL three parts. This is an individual piece of work. Please answer questions in full sentences. No bullet points. Put your answers into the separate answer sheet which should have your name and k-number at the top. Submit your answer sheet as a WORD document via StudySpace. There are 50 marks in total. This coursework counts for 15% of the total mark for this module. Part A – The Windows Operating System The Operating systems provides an interface between the computer hardware and the applications and manages system resources. The Windows Operating Systems family is the most widely used operating system for personal computers. Question A1: Windows Architecture Describe the general architecture of the Windows operating system. Provide a system diagram and explain the different components of the system. Highlight some innovations of the Windows operating system. Explain how the architecture differs from traditional Unix based systems. Discuss how the architecture of the Windows system contributed to its success in the market. (10 marks) Question A2: Windows API and Apps The Windows OS and applications are event-driven. Explain why and how this approach is useful for interactive GUI applications and the effect it has on system efficiency. Show with the help of pseudo code/or native Win32 code how a Windows application is decoding messages in its main message procedure. Provide an example of a message and its parameters and how they can be interpreted. (10 marks) CI5220 - Operating Systems Assignment 1/5Part B – Resource Management The Operating System manages resources such as memory and CPU time. Processes and threads are processing entities which are managed by the OS scheduler. Multi-threading is often used to distribute heavy duty processing onto several CPU cores to speed up the processing. The O/S scheduler distributes the threads onto different CPU cores. The Java program MultiThreading.java in the MultiThreading.zip folder in the Coursework section on StudySpace is an application which has been prepared with multi-threading in mind. Performance Testing In this part you need to assess the performance of your multi-core system and how the operating system handles the distribution of tasks. First of all, identify the number of processing units (multi-core and hyper-threading units) on your PC. The number of processing units corresponds to the number of graphs in the performance tab in the task manager. Number of cores in your PC system: ____ Run the MultiThreading.java application in NetBeans. It is suggested to use NetBeans 8.01 or NetBeans 8.1. The application performs 100 million calculations and stores the result in a shared static data array of type float. Currently the application is configured to run this processing task only once as part of a single thread. By changing the values assigned to variable N you can control the number of threads which are created and each of those threads currently performs the same number of calculations. The workload thus increases with N. The application will print out how long it took to complete the processing task for each thread. Do not run any other processing tasks while assessing the performance of the system. Make sure the CPU usage is very low before commencing the data capture. Task B1: Data capture Take measurements on how long it takes to complete the processing for N=1 to N=2*number of cores different scenarios. This corresponds to the number of threads which are running. The applications prints out the number of seconds for each thread. Create a table in Excel or LibreOffice calc and insert the longest time in seconds in the table for each scenario. Copy the table into your answer sheet. Plot a line graph with N=number of threads on the x-axis and the longest time it took to complete the processing on the y-axis. Copy the populated table and the line graph into your answer sheet. Proposed table layout: Threads 1 2 3 4 ... 2* Number of cores Time to complete (sec) all cores (5 marks) CI5220 - Operating Systems Assignment 2/5Task B2: Analysis: Describe how the OS scheduler is distributing the processing between different CPU cores. This can be observed in the performance tab of the task manager. How many CPU cores are busy? Give an explanation for your observations. How efficient is the computer system at handling the increasing processing demand? Substantiate your answer by referring to the graph. (5 marks) CI5220 - Operating Systems Assignment 3/5Part C - Multi-threading Currently the application is performing the same calculations for all threads. The aim of multithreading is to share and distribute the processing over several CPU cores in order to reduce the overall processing time. Task C1: Modification Modify the MultiThreading.java application so that the processing of the 100 million calculations is divided up between two threads equally. Make use of the id member variable to distinguish between threads in the run method. Copy the modified run method of your application into your answer sheet. (5 marks) Task C2: Data capture Take measurements (max time to completion) and populate the table below when the processing is divided between 1,2,4 and 8 threads. Just as in task C1, you need to modify the MultiThreading.java application so that the processing is divided between 1, 2, 4 and then 8 threads. Take the max time to completion for each of those configurations. Proposed table layout: Copy the data into an Excel/Calc Spreadsheet and plot a line graph. Copy the table and the line graph into your answer sheet. (5 marks) CI5220 - Operating Systems Assignment 4/5 Threads 1 2 4 8 Time to complete (sec)Task C3: Analysis Referring to the line graph, comment on the efficiency of the application's ability to process the data in parallel. Substantiate your answer by referring to the graph and by performing some additional calculations such as for the speedup when using 2, 4 or 8 threads. Provide an explanation for your observations. What are the potential limitations for parallel processing? (5 marks) Task C4: Amdahl's Law The theoretical potential speed-up of an algorithm on a parallel computing platform is given by Amdahl's law, originally formulated by Gene Amdahl in the 1960s. It states that a small portion of the program which cannot be parallelised will limit the overall speed-up. This relationship is given by the equation: Provide an estimate on how much of the Java program in task C1 is parallelised on the basis of the measurements taken in task C2. You can calculate the speedup from the measurements for 2 threads, N=2. For a more precise answer, given the speedup and the number of threads, you need to re-arrange Amdahl's equation so that P(=percentage of parallel code) is extracted and can be determined. Copy your answer with the re-arrangement of the equation and numerical values into your answer sheet. Interpret the result of your calculations. (5 marks) CI5220 - Operating Systems Assignment 5/5 P = percentage of parallel code N = number of processors 1 (1 ) speedup P P N = − +