Assg1 (Due 30 Nov) 0: Implement the pselect system call in Linux (assume 2.6.x). Refer to Stevens, Unix Netw Prog 2nd ed, '98, p. 168 & p. 482 for details. Give all the modifications to the Linux source. You have to first study how select call is implemented. Use UML for checking it out. Mention how you tested your impl for correctness. Is it possible to use pthreads instead for a correct impl? 1: One potential security problem wrt signal handling was identified in class: namely, modification of the kernel stack state being saved on the user stack. Write a program to "munge" the kernel stack state saved on the user stack and report on your experience. Can you possibly become root thru this method? Explain one possible attack, implement it and report if you succeed. Next, study the kernel code to see if the potential security problem is resolved correctly; if so, what is the solution adopted in Linux? 2: Get a trace of disk accesses (thru Dtrace) when 2 or more large programs (such as openoffice and mozilla or firefox) are run. You should collect both the disk addresses as well as the time stamp. Study the 4 I/O schedulers in Linux 2.6 (elevator, deadline, anticipatory and CFQ). Write a simulator and run it on the trace you have obtained. Report on the results (completion time, time spent seeking vs useful time). Can you make some suitable assumptions to also compute CPU utilization?