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
=
− +