CS3431 - Final Examination Grading Review

The detailed grades, by question, for the cs3431 final are given in the table below. As I expected, we had some really good grades (1 over 100, several in the 90's, and lots in the 80's), and of course some really poor grades. A detailed review of my thoughts while grading them are given below.

Question 1, Bakery Algorithm. As I suspected, this was the most difficult question, with very few 20/20 scores. I'm only slightly surprised by the poor showing here, because the questions I asked required a very detailed understanding of the nuances of how it works, but we did go over it in class about three times I think. On part (d), too many people were concerned about fairness and starvation, when in fact the algorithm just will not work at all with the modification proposed. It simply does not insure mutual exclusion.

Question 2, Bankers Algorithm. Most people did fairly well on this one. Only a few could not work out the safe sequence of process completions. Several claimed that it is a scheduling algorithm used to schedule the proper execution order for the processes to prevent deadlock. This is not the case at all. It simply says that there exists a scheduling order which would allow a deadlock free execution of the processes, but in no way tries to schedule the processes in that order.

Question 3, Virtual Memory. I was really shocked at the amount of difficulty people had with this one, it's really quite simple. A large number of people did not multiply the frame index (found in the page table) by the frame size (same as page size), but instead just added the offset to the frame index (b127 + 6d in the first part for example). See figure 8.12 on page 258 of the text, or slide 8.17 in the lecture notes for a perfectly clear picture of how this works. Thinking back on this, I realized we only went over this once in class, so perhaps you thought it was not important. I only did it once since I thought it too simple for repeated discussion.

Question 4, Page Replacement Algorithm. Most people did well on this one, although several just gave fluff for part (d) with things like "it is easier to implement". Why is it easier to implement? See the answer key for details.

Question 5, Context switching. Again most people did reasonably well, although only a few gave what I consider to be three good reasons that context switches are expensive. If you gave 1 good reason, you got 5 points; 2 fair reasons - 5 points; 2 good reasons - 8 points; 3 good reasons - 10 points.

Question 6, Mutual Exclusion. Almost everyone knew that Algorithm 3 met all three requirements for a good algorithm, although several confused the purpose of the flag[i] versus the turn variables.

Question 7, File System Implementation. Almost everyone did extremely well on this one. Perhaps the amount of emphasis I gave this in class had something to do with that. However, a large number wanted to use the mutex to protect concurrent writes or read while writing, which is not really the case. Unix, for example, does nothing to prevent concurrent writes (try it!). I took off 2 points if you chose this approach, since there are numerous other good choices (see the answer key).

Question 8, Monoposoft. Again, just about everybody understood the advantages and disadvantages of the large cluster size, and just about everyone got full credit. Perhaps the most important thing to say is the effect of internal fragmentation, and I took off a couple of points if you did not say that.


Final Exam Grades by Question

Student ID (anonymous) Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Total
19201081513101510101
3820101014137151099
1415101413138151098
222076151510151098
0118101015108131094
1618104131510131093
421710815810151093
021591015910151093
131810614118151092
291610615137131090
1517101014109101090
0415810141210101089
49201051110915888
171610514109131087
091510614119121087
30181061115710986
43151081189151086
5016961489131085
27181061411512884
378101012118151084
1818921498131083
33119212159131081
45169513510131081
0616981210971081
07141081451091080
39137213155151080
1117761181012879
32155214107151078
48156513116121078
47141021358151077
5317741413571077
411794148713577
261596158612677
36169412899976
2810961157151073
201310215689770
44149511469866
21109414968666
51106514868663
03992125315863
31145513569562
4612105102381060
526541527111060
404921024121053
2346214855650
108402210111047
0556210256339
24000000000
34000000000
35000000000
25000000000
08000000000
12000000000

Contact Information:

riley@cc.gatech.edu
College of Computing
Georgia Institute of Technology
Atlanta, GA 30332-0280

Last Modified: Mar. 17, 1998