Difference between revisions of "Operating Systems 2019W: Assignment 2"

From Soma-notes
Jump to navigation Jump to search
Line 1: Line 1:
'''This assignment is not yet finalized.'''
'''This assignment is not yet finalized.  Please do not answer these questions yet, they are subject to change.'''


Please submit the answers to the following questions via CULearn by 4 PM on Monday, February 11, 2019. There are ?? points in ?? questions.
Please submit the answers to the following questions via CULearn by 4 PM on Monday, February 11, 2019. There are ?? points in ?? questions.
Line 11: Line 11:
==Questions==
==Questions==


# [2] Assume you have a file A.  You type <tt>ln A B</tt>  in order to create file B.  What is the relationship between the return of lstat() on A versus BExplain briefly.
# [2] Assume you have a file A.  You type <tt>ln A B</tt>  in order to create file B.  If you delete A, what happens when you try to read A?  Why?
# [2] Assume you have a file A.  You type <tt>ln -s A B</tt> in order to create file B.  What is the relationship between the return of lstat() on A versus BExplain briefly.
# [2] Assume you have a file A.  You type <tt>ln -s A B</tt> in order to create file B.  If you delete A, what happens when you try to read A?  Why?
# [2] How could you modify 3000test.c so it can report on what a file's user ID and group ID are and the corresponding username and group name?  Specify the changes you make rather than writing all the code out(In other words, code a solution and explain the changes you made here.)
# [2] What does fsck do if it finds an allocated inode that no file refers to?  How could this problem arise?
# [2] If you change line 68 of 3000test.c to be <tt>data[i] = 'A';</tt>  (from <tt>count++;</tt>), what will the program do? Explain briefly.
# [2] Describe a situation where a UNIX sparse file could cause problems for a backup program (that didn't specially treat sparse files).
# [2] What does setup_comm_fn() do in 3000shell?
# [3] Modify 3000test.c so it can report on what access the current user has to the fileGive your code as a "diff -c" relative to the original 3000test.c.
# [1] If you destroy all of the superblocks in a filesystem, will fsck be able to recover the filesystem? Explain.
# [3] Create a program 3000run.c (based on 3000test.c) that attempts to run the contents of a file by mmap'ing it into an array, converts the array pointer into a function pointer for a function that takes one argument, a standard C string (char *) and then calls the function, passing it a string. Test your code on [https://homeostasis.scs.carleton.ca/~soma/os-2019w/code/print.bin print.bin] which contains the machine code for a function that prints the given string to standard out.
# [1] When would you expect to find files in the lost+found directory?   
# [2] Is a filesystem's superblock accessed frequently in normal operationWhy or why not?
# [2] When first connecting to a remote host via ssh, you will normally get a message saying something similar to this: "The authenticity of host 'access.scs.carleton.ca (134.117.29.72)' can't be established.  RSA key fingerprint is SHA256:MexEKZF0Os0Vl6VTObN70lRf2DFsGfD8DTQ7FKKqVJ4.  Are you sure you want to continue connecting (yes/no)?"
# [2] When first connecting to a remote host via ssh, you will normally get a message saying something similar to this: "The authenticity of host 'access.scs.carleton.ca (134.117.29.72)' can't be established.  RSA key fingerprint is SHA256:MexEKZF0Os0Vl6VTObN70lRf2DFsGfD8DTQ7FKKqVJ4.  Are you sure you want to continue connecting (yes/no)?"
#* Why is this question important?
#* Is it normally safe to say yes to this question?  Why?
#* What is the "fingerprint" for?
#* Describe a situation when you should say no.  Give a specific example of a "bad thing" that could be happening.
# [2] As user student (uid=1000), you run "sshfs <scs-username>@access.scs.carleton.ca:. scs-files", where <scs-username> is your username.  
# [2] You run the commands below, replacing <scs-username> with your SCS username.  After running these commands (and assuming the sshfs command succeeds), how many copies of "test.txt" exist?  Where are they stored?
#* Will the files in scs-files have a uid=1000? Why or why not?
 
#* Assume a file in scs-files is marked as being readable only by the owner. Will you be able to read the contents of this file?  Why or why not?
echo "This is random text" > test.txt
# [1] How can you make a file that is 20 GB in size (you can read 20 GB of information from it) but takes up essentially no space on disk?
mkdir scs-files
cp test.txt scs-files
sshfs <scs-username>@access.scs.carleton.ca:. scs-files
  <login to access.scs.carleton.ca>
  mkdir scs-files/testdir
cp test.txt scs-files/testdir
rm -f scs-files/test.txt
  fusermount -u scs-files
rm -f scs-files/testdir/test.txt

Revision as of 00:01, 1 February 2019

This assignment is not yet finalized. Please do not answer these questions yet, they are subject to change.

Please submit the answers to the following questions via CULearn by 4 PM on Monday, February 11, 2019. There are ?? points in ?? questions.

Submit your answers as a single text file named "<username>-comp3000-assign2.txt" (where username is your MyCarletonOne username). The first four lines of this file should be "COMP 3000 Assignment 2", your name, student number, and the date of submission. You may wish to format your answers in Markdown to improve their appearance.

No other formats will be accepted. Submitting in another format will likely result in your assignment not being graded and you receiving no marks for this assignment. In particular do not submit an MS Word or OpenOffice file as your answers document!

Don't forget to include what outside resources you used to complete each of your answers, including other students, man pages, and web resources. You do not need to list help from the instructor, TA, or information found in the textbook.

Questions

  1. [2] Assume you have a file A. You type ln A B in order to create file B. If you delete A, what happens when you try to read A? Why?
  2. [2] Assume you have a file A. You type ln -s A B in order to create file B. If you delete A, what happens when you try to read A? Why?
  3. [2] What does fsck do if it finds an allocated inode that no file refers to? How could this problem arise?
  4. [2] Describe a situation where a UNIX sparse file could cause problems for a backup program (that didn't specially treat sparse files).
  5. [3] Modify 3000test.c so it can report on what access the current user has to the file. Give your code as a "diff -c" relative to the original 3000test.c.
  6. [3] Create a program 3000run.c (based on 3000test.c) that attempts to run the contents of a file by mmap'ing it into an array, converts the array pointer into a function pointer for a function that takes one argument, a standard C string (char *) and then calls the function, passing it a string. Test your code on print.bin which contains the machine code for a function that prints the given string to standard out.
  7. [2] Is a filesystem's superblock accessed frequently in normal operation? Why or why not?
  8. [2] When first connecting to a remote host via ssh, you will normally get a message saying something similar to this: "The authenticity of host 'access.scs.carleton.ca (134.117.29.72)' can't be established. RSA key fingerprint is SHA256:MexEKZF0Os0Vl6VTObN70lRf2DFsGfD8DTQ7FKKqVJ4. Are you sure you want to continue connecting (yes/no)?"
    • Is it normally safe to say yes to this question? Why?
    • Describe a situation when you should say no. Give a specific example of a "bad thing" that could be happening.
  9. [2] You run the commands below, replacing <scs-username> with your SCS username. After running these commands (and assuming the sshfs command succeeds), how many copies of "test.txt" exist? Where are they stored?
echo "This is random text" > test.txt
mkdir scs-files
cp test.txt scs-files
sshfs <scs-username>@access.scs.carleton.ca:. scs-files
  <login to access.scs.carleton.ca>
mkdir scs-files/testdir
cp test.txt scs-files/testdir
rm -f scs-files/test.txt
fusermount -u scs-files
rm -f scs-files/testdir/test.txt