Operating Systems 2015F: Assignment 3: Difference between revisions
No edit summary |
No edit summary |
||
(3 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
# Standard C library routines such as printf are available in the kernel. True or False | # 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? | # What is something that userspace programs can do easily that is difficult to do from kernel code? | ||
#* Open a file | #* Open a file | ||
Line 11: | Line 16: | ||
#* function calls are too slow | #* function calls are too slow | ||
#* processes cannot see kernel memory | #* processes cannot see kernel memory | ||
#* All of the above | |||
# You can create a new process running an executable by... | # You can create a new process running an executable by... | ||
#* making an execve system call | #* making an execve system call | ||
Line 21: | Line 27: | ||
#* DVD drive | #* DVD drive | ||
#* All of the above | #* 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 program? | # 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 | #* The program is multithreaded | ||
#* The dynamic linker is broken | #* The dynamic linker is broken | ||
#* The process is running as root | #* The process is running as root | ||
#* The | #* The program was statically linked | ||
# If a process creates many child processes then changes an environment variable X... | # If a process creates many child processes then changes an environment variable X... | ||
#* X is also changed in its parent process | #* X is also changed in its parent process | ||
Line 41: | Line 47: | ||
#* lost+found contains the old A, B, and C | #* lost+found contains the old A, B, and C | ||
#* None of the above. | #* 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? | # Without errors, what does the fork system call return? | ||
#* the child’s process ID | #* the child’s process ID | ||
#* 0 | #* 0 | ||
#* Both (a) and (b) | #* '''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. | #* None of the above. |
Latest revision as of 14:14, 7 October 2015
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.