Operating Systems 2020W Lecture 13
Video
Video from the lecture given on February 26, 2020 is now available.
Notes
Lecture 13 - midterm review!
----------------------------
poll posted on running native Linux
Topics:
- assignment 2 solutions
- key concepts
- your questions!
THE TEXTBOOK IS HELPFUL TO REVIEW
- it helps with the concepts!
- but emphasis is different, so use it selectively
- not all concepts are in the textbook
Concepts relevant to midterm:
- OS kernel
- user mode/supervisor mode
- root user/unprivileged users
- uid, gid, euid, egid, username, groups
- file permissions: user, group, other, read, write, execute
- types of files: regular files, directories, symbolic links, block devices,
character devices
- hard links
- setuid bit, setgid bit
- why are programs setuid root?
- how does this interact with uid, euid of a process
(after execve of a setuid root process)?
- logical vs physical sizes of files
- relationship between shell operators (>, <) for redirecting standard input, output and underlying system calls, file descriptors
- connection with open, dup2
- relationship between execve, command line arguments, environment variables
- login shells, how only some programs are allowed to be shells
(and what changing the login shell changes for a user)
- ssh key-based authentication
- identity keys (local) vs authorized_keys
- known_hosts (remote host public keys stored locally)
- how to enable public key auth for a user
- how hosts are identified using their public keys
- running commands on remote hosts via ssh
- runs them via a shell
- why do that versus just do an execve
- stat vs lstat vs fstat
- using file descriptors versus filenames
- following or not following symlinks
- info returned (all the inode metadata)
- deleting a file is just unlinking (every regular file is a hard link)
- link count for an inode
- copying vs making a hard link vs making a symbolic link
- when does the inode stay the same versus change
- if you delete one, how does it affect the other
(A hardlinked to B, delete A versus
A symlinked to B, delete A)
- holes in files
- how seeking + writing past end of file will create them
- effect on logical vs physical size of a file
- filesystem structure: inodes, directories, superblocks
- role of lost+found, fsck, mkfs
- sshfs
- how its weirdness relates to restrictions on userspace programs,
remote hosts (with different uid/gid mappings)
- tty's, pseudo tty's (/dev/tty1, /dev/pts/0)
- as character devices
- relationship to standard in/out/error for interactive programs
- local vs global variables in C
- difference between function calls, library calls, system calls
- library calls are dynamically linked functions
- basic idea of dynamic linking
- how shells find external programs
- PATH environment variable
- process termination (exit system call, signals)
- process return values & wait system call
- fork, execve
- role in running external commands in the shell
- signal handlers
- registering
- when called
- concurrency
Concepts not so relevant for midterm (but will come up later):
- secure hashes
- pipes
- gdb, strace
- but should know things you could only learn by using those tools
- exact details of structure of ext4
- CPU registers, stack vs heap
Requested clarifications
- uid vs euid
- inodes
- hard links