Answer as many (or few) of the following questions as you like. (Notice, however, that you can receive at most 30 extra-credit points.)
I am also open to the possibility of giving extra credit for other work -- other problems from the textbook, a report on something course-related, etc. If you have an idea for such a project, let's negotiate (by e-mail or in person).
For this assignment, please work individually, without discussing the problems with other students. If you want to discuss problems with someone, talk to me.
For these problems, please submit hard copy (in my mailbox in the department office or under my door). (If that's a huge hassle, e-mail is okay, but I will print it to grade it.)
Answer any or all of the following questions (from the textbook chapter on security).
Write a page or more of prose about one or more of the following questions, writing for an audience of fellow students. Include a short informal bibliography listing the source(s) of your information.
Do one or more of the following optional programming problems. Submit source code and other files by e-mail, as for previous assignments. (I.e., submit your program source (and any other needed files) by sending mail to bmassing@cs.trinity.edu, with each file as an attachment. Please use a subject line that mentions the course number and the assignment (e.g., ``csci 3323 extra credit''). You can develop your programs on any system that provides the needed functionality, but I will test them on one of the department's Linux machines, so you should probably make sure they work in that environment before turning them in.
How much credit you get will depend on how many algorithms you simulate and how correctly. You can use any language of your choice, as long as I can run/test your program on the department machines using an interface more or less like the following. (I'd prefer that you use exactly this interface for input -- it makes my testing job easier -- but if you use something else, put comments at the top of your code telling me how to run your code with my test data.)
Output should be the following information, for each page replacement algorithm implemented:
Make the following assumptions:
Here are files containing some sample input and output:
Here is sample output for running the program with = /lib, , and , on one of the DIAS machines:
Results for directory /lib with blocksize 4096: 910 files of size 1 blocks 1927 files of size 2 blocks 1707 files of size 3 blocks 1495 files of size 4 blocks 1106 files of size 5 blocks 906 files of size 6 blocks 576 files of size 7 blocks 473 files of size 8 blocks 389 files of size 9 blocks 379 files of size 10 blocks 263 files of size 11 blocks 270 files of size 12 blocks 282 files of size 13 blocks 190 files of size 14 blocks 175 files of size 15 blocks 153 files of size 16 blocks 174 files of size 17 blocks 168 files of size 18 blocks 99 files of size 19 blocks 109 files of size 20 blocks 1550 files of size 21 blocks or more
(Of course, you won't be able to examine files in directories you don't have access to. Just print error messages for files/directories you can't access.)
To get maximum points, your program should be in C or C++ and make no use of system commands such as ls. (You can use another language, or even write a shell script, but you will get fewer points.) Library functions opendir, readdir, and lstat will probably be helpful. You might also be interested in functions chdir and strerror. These functions are described by man pages. (Remember also that man -a foo gives all man pages for foo. This can be helpful if there is both a command foo and a functionfoo.)
Here is some starter code that parses/checks the command-line arguments.
Broken symbolic links in /users/bmassing/Local/HTML-Documents/CS3323/Homeworks/HW0X/Problems: /users/bmassing/Local/HTML-Documents/Classes/CS3323_2013fall/Homeworks/HW0X/Problems/TestData/barfoo /users/bmassing/Local/HTML-Documents/Classes/CS3323_2013fall/Homeworks/HW0X/Problems/TestData/foobar
(Again, you won't be able to examine files in directories you don't have access to, so just print error messages. You should be able to access everything in the above directory, however. If you want to create some test data of your own, remember that to make a symbolic link called sym pointing to foo, you type ln -s foo sym.)
To get maximum points, your program should be in C or C++ and make no use of system commands such as ls. (You can use another language, or even write a shell script, but you will get fewer points.) The library routines mentioned for the previous problem may be helpful. The starter code may also be helpful, in reminding you how to access command-line arguments in C.
Files with multiple hard links in /users/bmassing/Local/HTML-Documents/CS3323/Homeworks/HW0X/Problems: /users/bmassing/Local/HTML-Documents/Classes/CS3323_2013fall/Homeworks/HW0X/Problems/homework/index.html /users/bmassing/Local/HTML-Documents/Classes/CS3323_2013fall/Homeworks/HW0X/Problems/homework/homework.html /users/bmassing/Local/HTML-Documents/Classes/CS3323_2013fall/Homeworks/HW0X/Problems/TestData/bbb /users/bmassing/Local/HTML-Documents/Classes/CS3323_2013fall/Homeworks/HW0X/Problems/TestData/bbbb /users/bmassing/Local/HTML-Documents/Classes/CS3323_2013fall/Homeworks/HW0X/Problems/TestData/bb /users/bmassing/Local/HTML-Documents/Classes/CS3323_2013fall/Homeworks/HW0X/Problems/TestData/b /users/bmassing/Local/HTML-Documents/Classes/CS3323_2013fall/Homeworks/HW0X/Problems/TestData/dd /users/bmassing/Local/HTML-Documents/Classes/CS3323_2013fall/Homeworks/HW0X/Problems/TestData/d
This output means that the two pathnames in the first group reference the same file, the four pathnames in the second group reference the same file, etc. Output can be in any order as long as paths that reference the same file are grouped together. (Again, you won't be able to examine files in directories you don't have access to, so just print error messages. You should be able to access everything in the above directory, however. If you want to create some test data of your own, remember that to make a hard link called sym pointing to foo, you type ln foo sym.)
To get maximum points, your program should be in C or C++ and make no use of system commands such as ls. (You can use another language, or even write a shell script, but you will get fewer points.) The library routines mentioned for the previous problems may be helpful. The starter code may also be helpful, in reminding you how to access command-line arguments in C.