<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Operating_Systems_2020W_Lecture_13</id>
	<title>Operating Systems 2020W Lecture 13 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Operating_Systems_2020W_Lecture_13"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Operating_Systems_2020W_Lecture_13&amp;action=history"/>
	<updated>2026-06-02T22:26:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Operating_Systems_2020W_Lecture_13&amp;diff=22578&amp;oldid=prev</id>
		<title>Soma: Created page with &quot;==Video==  Video from the lecture given on February 26, 2020 [https://homeostasis.scs.carleton.ca/~soma/os-2020w/lectures/comp3000-2020w-lec13-20200226.m4v is now available]....&quot;</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Operating_Systems_2020W_Lecture_13&amp;diff=22578&amp;oldid=prev"/>
		<updated>2020-03-20T02:34:58Z</updated>

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