This is a warmup homework. Do not panic if you do not know some of the terms, etc. The idea is to just try it out and see if you can make some progress. You can also use Google to get documents that can throw some light on the subject. 0: Do the following: Go to any Linux 2.x system and cd /proc Read the on-line manual for info on the proc filesystem (do man proc). Find out the foll info on your system using the proc filesystem: the type of CPU, whether mmx is supported, how many context switches have taken place since boot of the machine, the load average, etc. 1: Find out when the machine was booted using /proc fs. 2: Why is that while "ls" reports zero as the file size for many of the non-directory files but "more" indicates that there is info? 3: Look at /proc/ksyms on a 2.4 machine and report on the format of the entries. What is the corresponding action on a 2.6 machine? 4: Look at process 1 and find out all the info you can on it as a non-privileged user and summarize it. 5: Do the following readelf -a /bin/ls Find out what each of the information is. Specifically, see what kinds of dynamic libraries are needed. Do the same for /boot/vmlinux-2.?.??-?? (on a 2.4 machine). What is the difference for this file and /bin/ls? 6: Suppose someone were to ask you what dynamic libraries are needed for running Openoffice? How would you find out? 7: Use strace to find the system calls called by /bin/ls on some dir. 8: Do a man on cscope. Copy the sources of Linux2.6.* src/kernel into your home dir and build cscope. How big is the database? Search for the definition of container_of and see if you can make sense of it. Similarly search for the macro errno and find out if you can make sense of it. You may need to delete the Linux2.6.* sources after this. Just make sure that all of you (or subgroups in each dept/lab/...) have atleast one copy of this source avlbl for the rest of this course.