Assignment #3
CMPT 300 – Operating Systems – Fall, 2017
Alternative Assignment to Giving Class Presentations
TASK:
Calculating the time to perform various function calls.
SUBMISSION INSTRUCTIONS:
Your assignments must be handed in as before on the due date via email.
You will electronically submit a single .ZIP, .RAR or .TAR file that will
contain:
· your source code file/files, and
· Makefile for compiling your source
Your program must be in standard C/C++.
It is your
responsibility to make sure your program compiles and runs smoothly under
Linux, with the kind of environment. This is the only submission method.
DEADLINE:
The deadline for homework is 11:59:59 PM on Friday, December 1st ,
2017. Submissions after this deadline will be considered late and WILL NOT be
accepted.
GRADING:
Your homework assignment is worth 5 points (5%), and will be marked
according to the following criteria
·1: (1 point) Measure the cost of a minimal function call in
C/C++ (cost in terms of time taken). The minimal cost could be emulated by
measuring a bare function call that neither takes any parameter nor does
anything inside the function.
·2: (1 point) Measure the cost of a minimal system call in
C/C++. Unlike a regular function call, a system call traps into the operating
system kernel. The minimal cost can be emulated by measuring the cost of getpid
() which doesn't really do anything.
·3: (2 point) Measure the cost of a read/write system call in
C/C++. (Hint: You can fork a child process and transfer one byte between parent
and child)
For the above measurements, you will need to
repeat the experiment many times and then take the average. You will need to
use a high resolution timer, see here: http://linux.die.net/man/3/clock_gettime
The goal is
to have STABLE measurement results. You are encouraged to be innovative in
designing your own test.
Good
programming style (1 point)
· Your code is well-organized and compartmentalized, properly
indented, and easy to read and understand.
· Your code is thoroughly commented and includes a
comment header with your name, student number and date.
· Functions and variables have meaningful, easy to
understand names.
IMPORTANT:
Your program must COMPILE AND RUN or you will get a mark of ZERO on your
assignment.
Assignment grades will be open for review for
one week only.
ADVANCED REMARKS:
Here is a
typical student email well into this assignment:
I had a question regarding the
timing of minimal function calls and minimal system calls. When I run the
minimal function call for just one instance and measure it out the amount of
time it takes, my tests range from around 80 to 500 nanoseconds. As for the
minimal system call, my tests range from around 1000 to 6000 nanoseconds.
>
> However, when I make a while loop to run
the minimal function call 1000000 times and then divide the total time taken by
1000000, I average around 20-22 nanoseconds. I get a similar result with the
minimal system call. Is this normal?
The answer is as follows:
This is because of cpu caching
your last memory access. To get proper results you have to device a way to
avoid it.
NOTE: This
is much simpler than the previous two assignments. However, you have the option to do an
in-class presentation on an advanced topic (details have been already given in
class). You MUST email me your decision
with an abstract if you chose the presentation BEFORE THE ANNOUNCED DATE IN
CLASS. Otherwise, you must do this
programming assignment.