Operating Systems 2015F: Assignment 3
Please answer the following questions on cuLearn by 8 PM on Tuesday, October 6th.
- Standard C library routines such as printf are available in the kernel. True or False
- Without errors, what does the fork system call return?
- the child’s process ID
- 0
- Both (a) and (b)
- None of the above.
- What is something that userspace programs can do easily that is difficult to do from kernel code?
- Open a file
- Display text on the screen
- Send data over a socket
- All of the above
- System calls are used to access the kernel because...
- The kernel runs in a separate process
- function calls are too slow
- processes cannot see kernel memory
- All of the above
- You can create a new process running an executable by...
- making an execve system call
- making a fork system call
- Both A and B
- None of the above
- Which of the following is normally assigned character/stream device on UNIX-like systems?
- Hard Disk drive
- Sound card (audio device)
- DVD drive
- All of the above
- If a process makes many system calls (as seen by strace) but produces no library calls (as seen by ltrace), what is a reasonable assumption regarding the process and the program it is running?
- The program is multithreaded
- The dynamic linker is broken
- The process is running as root
- The program was statically linked
- If a process creates many child processes then changes an environment variable X...
- X is also changed in its parent process
- X is changed in all child processes
- Wait, a process cannot change its environment variables
- None of the above
- In playing around with the dd command in /dev you accidentally overwrote a small part of a USB drive formatted with an ext4 filesystem. You run fsck and repair the filesystem. No files have been corrupted; however, you find a directory that had a few files is now empty, and its files have now appeared /lost+found but with seemingly random numeric filenames (like #5123). What part of the filesystem do you know you overwrote?
- data blocks
- inode blocks
- directory blocks
- All of the above
- There is a directory called /mydisk, and in this directory there are three files, A, B, and C. You run the command "mount /dev/sdb1 /mydisk"; afterwards you see that /mydisk contains the file B along with a directory lost+found. We see the file B but not the files A and C because...
- A, B, and C still exist but are now hidden; the file B that we see is a different file that just happens to have the same filename B.
- A and C got randomly erased by the mount command but B was left alone.
- lost+found contains the old A, B, and C
- None of the above.
Solutions
- Standard C library routines such as printf are available in the kernel. False
- Without errors, what does the fork system call return?
- the child’s process ID
- 0
- Both (a) and (b)
- None of the above.
- What is something that userspace programs can do easily that is difficult to do from kernel code?
- Open a file
- Display text on the screen
- Send data over a socket
- All of the above
- System calls are used to access the kernel because...
- The kernel runs in a separate process
- function calls are too slow
- processes cannot see kernel memory
- All of the above
- You can create a new process running an executable by...
- making an execve system call
- making a fork system call
- Both A and B
- None of the above
- Which of the following is normally assigned character/stream device on UNIX-like systems?
- Hard Disk drive
- Sound card (audio device)
- DVD drive
- All of the above
- If a process makes many system calls (as seen by strace) but produces no library calls (as seen by ltrace), what is a reasonable assumption regarding the process and the program it is running?
- The program is multithreaded
- The dynamic linker is broken
- The process is running as root
- The program was statically linked
- If a process creates many child processes then changes an environment variable X...
- X is also changed in its parent process
- X is changed in all child processes
- Wait, a process cannot change its environment variables
- None of the above
- In playing around with the dd command in /dev you accidentally overwrote a small part of a USB drive formatted with an ext4 filesystem. You run fsck and repair the filesystem. No files have been corrupted; however, you find a directory that had a few files is now empty, and its files have now appeared /lost+found but with seemingly random numeric filenames (like #5123). What part of the filesystem do you know you overwrote?
- data blocks
- inode blocks
- directory blocks
- All of the above
- There is a directory called /mydisk, and in this directory there are three files, A, B, and C. You run the command "mount /dev/sdb1 /mydisk"; afterwards you see that /mydisk contains the file B along with a directory lost+found. We see the file B but not the files A and C because...
- A, B, and C still exist but are now hidden; the file B that we see is a different file that just happens to have the same filename B.
- A and C got randomly erased by the mount command but B was left alone.
- lost+found contains the old A, B, and C
- None of the above.