├── HW0.md └── handouts ├── .gitignore ├── CS341-01-Welcome.docx ├── CS341-01-Welcome.pdf ├── CS341-02-SeeCCrash.docx ├── CS341-02-SeeCCrash.pdf ├── CS341-03-ADayAtTheCside.docx ├── CS341-03-ADayAtTheCside.pdf ├── CS341-04-ScanfGetline.docx ├── CS341-04-ScanfGetline.pdf ├── CS341-05-ExecForkEnviron.docx ├── CS341-05-ExecForkEnviron.pdf ├── CS341-06-forkexecwait.docx ├── CS341-06-forkexecwait.pdf ├── CS341-07-signals.docx ├── CS341-07-signals.pdf ├── CS341-08-heap.docx ├── CS341-08-heap.pdf ├── CS341-09-allocator.docx ├── CS341-09-allocator.pdf ├── CS341-10-allocatorII.docx ├── CS341-10-allocatorII.pdf ├── CS341-11-Threads.docx ├── CS341-11-Threads.pdf ├── CS341-12-ThreadsMemory.docx ├── CS341-12-ThreadsMemory.pdf ├── CS341-13-PThreads.docx ├── CS341-13-PThreads.pdf ├── CS341-14-PThreadsAndLocks.docx ├── CS341-14-PThreadsAndLocks.pdf ├── CS341-15-CondVariables.docx ├── CS341-15-CondVariables.pdf ├── CS341-16-CountingSemaphores.docx ├── CS341-16-CountingSemaphores.pdf ├── CS341-17-ProducerConsumerBarrierV2.docx ├── CS341-17-ProducerConsumerBarrierV2.pdf ├── CS341-18-ReaderWriterDeadlock.docx ├── CS341-18-ReaderWriterDeadlock.pdf ├── CS341-19-ReaderWriterDeadlock-part2.docx ├── CS341-19-ReaderWriterDeadlock-part2.pdf ├── CS341-20-DiningPhilosophers.docx ├── CS341-20-DiningPhilosophers.pdf ├── CS341-20-DiningPhilosophersCode.docx ├── CS341-20-DiningPhilosophersCode.pdf ├── CS341-21-PageTablesAndIPC.docx ├── CS341-21-PageTablesAndIPC.pdf ├── CS341-22-PipesAndSeeks.docx ├── CS341-22-PipesAndSeeks.pdf ├── CS341-23-CFilesPipesSeeks.docx ├── CS341-23-CFilesPipesSeeks.pdf ├── CS341-24-ErrorsPacketsUDPTCP.docx ├── CS341-24-ErrorsPacketsUDPTCP.pdf ├── CS341-25-TCPClientHttp.docx ├── CS341-25-TCPClientHttp.pdf ├── CS341-26-TCPServer.docx ├── CS341-26-TCPServer.pdf ├── CS341-27-Files-1.docx ├── CS341-27-Files-1.pdf ├── CS341-28-Files-2.docx ├── CS341-28-Files-2.pdf ├── CS341-29-Files-3.docx ├── CS341-29-Files-3.pdf ├── CS341-30-Files-4.docx ├── CS341-30-Files-4.pdf ├── CS341-31-Files-5.docx ├── CS341-31-Files-5.pdf ├── CS341-32-Scheduling.docx ├── CS341-32-Scheduling.pdf ├── CS341-33-NetworkingEpoll.docx ├── CS341-33-NetworkingEpoll.pdf ├── CS341-34-Signals2.docx ├── CS341-34-Signals2.pdf ├── CS341-35-Signals3.docx ├── CS341-35-Signals3.pdf ├── CS341-36-Protocols.docx ├── CS341-36-Protocols.pdf ├── CS341-37-RPC.docx ├── CS341-37-RPC.pdf ├── CS341-38-UDP-SystemConcepts.docx ├── CS341-38-UDP-SystemConcepts.pdf ├── CS341-39-InterviewExamPractice.docx ├── CS341-39-InterviewExamPractice.pdf ├── CS341-41-CriticalSectionProblem.docx └── CS341-41-CriticalSectionProblem.pdf /HW0.md: -------------------------------------------------------------------------------- 1 | # Welcome to Homework 0! 2 | 3 | For these questions you'll need the mini course and "Linux-In-TheBrowser" virtual machine (yes it really does run in a web page on your machine using javascript!) at - 4 | 5 | https://cs-education.github.io/sys/ 6 | 7 | Let's take a look at some C code (with apologies to a well known song)- 8 | ```C 9 | // An array to hold the following bytes. "q" will hold the address of where those bytes are. 10 | // The [] mean set aside some space and copy these bytes into teh array array 11 | char q[] = "Do you wanna build a C99 program?"; 12 | 13 | // This will be fun if our code has the word 'or' in later... 14 | #define or "go debugging with gdb?" 15 | 16 | // sizeof is not the same as strlen. You need to know how to use these correctly, including why you probably want strlen+1 17 | 18 | static unsigned int i = sizeof(or) != strlen(or); 19 | 20 | // Reading backwards, ptr is a pointer to a character. (It holds the address of the first byte of that string constant) 21 | char* ptr = "lathe"; 22 | 23 | // Print something out 24 | size_t come = fprintf(stdout,"%s door", ptr+2); 25 | 26 | // Challenge: Why is the value of away equal to 1? 27 | int away = ! (int) * ""; 28 | 29 | 30 | // Some system programming - ask for some virtual memory 31 | 32 | int* shared = mmap(NULL, sizeof(int*), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0); 33 | munmap(shared,sizeof(int*)); 34 | 35 | // Now clone our process and run other programs 36 | if(!fork()) { execlp("man","man","-3","ftell", (char*)0); perror("failed"); } 37 | if(!fork()) { execlp("make","make", "snowman", (char*)0); execlp("make","make", (char*)0)); } 38 | 39 | // Let's get out of it? 40 | exit(0); 41 | ``` 42 | 43 | ## So you want to master System Programming? And get a better grade than B? 44 | ```C 45 | int main(int argc, char** argv) { 46 | puts("Great! We have plenty of useful resources for you, but it's up to you to"); 47 | puts(" be an active learner and learn how to solve problems and debug code."); 48 | puts("Bring your near-completed answers the problems below"); 49 | puts(" to the first lab to show that you've been working on this."); 50 | printf("A few \"don't knows\" or \"unsure\" is fine for lab 1.\n"); 51 | puts("Warning: you and your peers will work hard in this class."); 52 | puts("This is not CS225; you will be pushed much harder to"); 53 | puts(" work things out on your own."); 54 | fprintf(stdout,"This homework is a stepping stone to all future assignments.\n"); 55 | char p[] = "So, you will want to clear up any confusions or misconceptions.\n"; 56 | write(1, p, strlen(p) ); 57 | char buffer[1024]; 58 | sprintf(buffer,"For grading purposes, this homework 0 will be graded as part of your lab %d work.\n", 1); 59 | write(1, buffer, strlen(buffer)); 60 | printf("Press Return to continue\n"); 61 | read(0, buffer, sizeof(buffer)); 62 | return 0; 63 | } 64 | ``` 65 | ## Watch the videos and write up your answers to the following questions. For now just save them in a text document - we'll explain how to hand them later. 66 | They will be due in the second week of class. 67 | 68 | **Important!** 69 | 70 | The virtual machine-in-your-browser and the videos you need for HW0 are here: 71 | 72 | https://cs-education.github.io/sys/ 73 | 74 | The coursebook: 75 | 76 | https://cs341.cs.illinois.edu/coursebook/index.html 77 | 78 | Questions? Comments? Use Ed: (you'll need to accept the sign up link I sent you) 79 | https://edstem.org/ 80 | 81 | The in-browser virtual machine runs entirely in Javascript and is fastest in Chrome. Note the VM and any code you write is reset when you reload the page, *so copy your code to a separate document.* The post-video challenges (e.g. Haiku poem) are not part of homework 0 but you learn the most by doing (rather than just passively watching) - so we suggest you have some fun with each end-of-video challenge. 82 | 83 | HW0 questions are below. Copy your answers into a text document (which the course staff will grade later) because you'll need to submit them later in the course. More information will be in the first lab. 84 | 85 | ## Chapter 1 86 | 87 | In which our intrepid hero battles standard out, standard error, file descriptors and writing to files. 88 | 89 | ### Hello, World! (system call style) 90 | 1. Write a program that uses `write()` to print out "Hi! My name is ``". 91 | ### Hello, Standard Error Stream! 92 | 2. Write a function to print out a triangle of height `n` to standard error. 93 | - Your function should have the signature `void write_triangle(int n)` and should use `write()`. 94 | - The triangle should look like this, for n = 3: 95 | ```C 96 | * 97 | ** 98 | *** 99 | ``` 100 | ### Writing to files 101 | 3. Take your program from "Hello, World!" modify it write to a file called `hello_world.txt`. 102 | - Make sure to to use correct flags and a correct mode for `open()` (`man 2 open` is your friend). 103 | ### Not everything is a system call 104 | 4. Take your program from "Writing to files" and replace `write()` with `printf()`. 105 | - Make sure to print to the file instead of standard out! 106 | 5. What are some differences between `write()` and `printf()`? 107 | 108 | ## Chapter 2 109 | 110 | Sizing up C types and their limits, `int` and `char` arrays, and incrementing pointers 111 | 112 | ### Not all bytes are 8 bits? 113 | 1. How many bits are there in a byte? 114 | 2. How many bytes are there in a `char`? 115 | 3. How many bytes the following are on your machine? 116 | - `int`, `double`, `float`, `long`, and `long long` 117 | ### Follow the int pointer 118 | 4. On a machine with 8 byte integers: 119 | ```C 120 | int main(){ 121 | int data[8]; 122 | } 123 | ``` 124 | If the address of data is `0x7fbd9d40`, then what is the address of `data+2`? 125 | 126 | 5. What is `data[3]` equivalent to in C? 127 | - Hint: what does C convert `data[3]` to before dereferencing the address? 128 | 129 | ### `sizeof` character arrays, incrementing pointers 130 | 131 | Remember, the type of a string constant `"abc"` is an array. 132 | 133 | 6. Why does this segfault? 134 | ```C 135 | char *ptr = "hello"; 136 | *ptr = 'J'; 137 | ``` 138 | 7. What does `sizeof("Hello\0World")` return? 139 | 8. What does `strlen("Hello\0World")` return? 140 | 9. Give an example of X such that `sizeof(X)` is 3. 141 | 10. Give an example of Y such that `sizeof(Y)` might be 4 or 8 depending on the machine. 142 | 143 | ## Chapter 3 144 | 145 | Program arguments, environment variables, and working with character arrays (strings) 146 | 147 | ### Program arguments, `argc`, `argv` 148 | 1. What are two ways to find the length of `argv`? 149 | 2. What does `argv[0]` represent? 150 | ### Environment Variables 151 | 3. Where are the pointers to environment variables stored (on the stack, the heap, somewhere else)? 152 | ### String searching (strings are just char arrays) 153 | 4. On a machine where pointers are 8 bytes, and with the following code: 154 | ```C 155 | char *ptr = "Hello"; 156 | char array[] = "Hello"; 157 | ``` 158 | What are the values of `sizeof(ptr)` and `sizeof(array)`? Why? 159 | 160 | ### Lifetime of automatic variables 161 | 162 | 5. What data structure manages the lifetime of automatic variables? 163 | 164 | ## Chapter 4 165 | 166 | Heap and stack memory, and working with structs 167 | 168 | ### Memory allocation using `malloc`, the heap, and time 169 | 1. If I want to use data after the lifetime of the function it was created in ends, where should I put it? How do I put it there? 170 | 2. What are the differences between heap and stack memory? 171 | 3. Are there other kinds of memory in a process? 172 | 4. Fill in the blank: "In a good C program, for every malloc, there is a ___". 173 | ### Heap allocation gotchas 174 | 5. What is one reason `malloc` can fail? 175 | 6. What are some differences between `time()` and `ctime()`? 176 | 7. What is wrong with this code snippet? 177 | ```C 178 | free(ptr); 179 | free(ptr); 180 | ``` 181 | 8. What is wrong with this code snippet? 182 | ```C 183 | free(ptr); 184 | printf("%s\n", ptr); 185 | ``` 186 | 9. How can one avoid the previous two mistakes? 187 | ### `struct`, `typedef`s, and a linked list 188 | 10. Create a `struct` that represents a `Person`. Then make a `typedef`, so that `struct Person` can be replaced with a single word. A person should contain the following information: their name (a string), their age (an integer), and a list of their friends (stored as a pointer to an array of pointers to `Person`s). 189 | 11. Now, make two persons on the heap, "Agent Smith" and "Sonny Moore", who are 128 and 256 years old respectively and are friends with each other. 190 | ### Duplicating strings, memory allocation and deallocation of structures 191 | Create functions to create and destroy a Person (Person's and their names should live on the heap). 192 | 12. `create()` should take a name and age. The name should be copied onto the heap. Use malloc to reserve sufficient memory for everyone having up to ten friends. Be sure initialize all fields (why?). 193 | 13. `destroy()` should free up not only the memory of the person struct, but also free all of its attributes that are stored on the heap. Destroying one person should not destroy any others. 194 | 195 | ## Chapter 5 196 | 197 | Text input and output and parsing using `getchar`, `gets`, and `getline`. 198 | 199 | ### Reading characters, trouble with gets 200 | 1. What functions can be used for getting characters from `stdin` and writing them to `stdout`? 201 | 2. Name one issue with `gets()`. 202 | ### Introducing `sscanf` and friends 203 | 3. Write code that parses the string "Hello 5 World" and initializes 3 variables to "Hello", 5, and "World". 204 | ### `getline` is useful 205 | 4. What does one need to define before including `getline()`? 206 | 5. Write a C program to print out the content of a file line-by-line using `getline()`. 207 | 208 | ## C Development 209 | 210 | These are general tips for compiling and developing using a compiler and git. Some web searches will be useful here 211 | 212 | 1. What compiler flag is used to generate a debug build? 213 | 2. You modify the Makefile to generate debug builds and type `make` again. Explain why this is insufficient to generate a new build. 214 | 3. Are tabs or spaces used to indent the commands after the rule in a Makefile? 215 | 4. What does `git commit` do? What's a `sha` in the context of git? 216 | 5. What does `git log` show you? 217 | 6. What does `git status` tell you and how would the contents of `.gitignore` change its output? 218 | 7. What does `git push` do? Why is it not just sufficient to commit with `git commit -m 'fixed all bugs' `? 219 | 8. What does a non-fast-forward error `git push` reject mean? What is the most common way of dealing with this? 220 | 221 | ## Optional (Just for fun) 222 | - Convert your a song lyrics into System Programming and C code and share on Ed. 223 | - Find, in your opinion, the best and worst C code on the web and post the link to Ed. 224 | - Write a short C program with a deliberate subtle C bug and post it on Ed to see if others can spot your bug. 225 | - Do you have any cool/disastrous system programming bugs you've heard about? Feel free to share with your peers and the course staff on Ed. 226 | -------------------------------------------------------------------------------- /handouts/.gitignore: -------------------------------------------------------------------------------- 1 | ~* 2 | -------------------------------------------------------------------------------- /handouts/CS341-01-Welcome.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-01-Welcome.docx -------------------------------------------------------------------------------- /handouts/CS341-01-Welcome.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-01-Welcome.pdf -------------------------------------------------------------------------------- /handouts/CS341-02-SeeCCrash.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-02-SeeCCrash.docx -------------------------------------------------------------------------------- /handouts/CS341-02-SeeCCrash.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-02-SeeCCrash.pdf -------------------------------------------------------------------------------- /handouts/CS341-03-ADayAtTheCside.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-03-ADayAtTheCside.docx -------------------------------------------------------------------------------- /handouts/CS341-03-ADayAtTheCside.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-03-ADayAtTheCside.pdf -------------------------------------------------------------------------------- /handouts/CS341-04-ScanfGetline.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-04-ScanfGetline.docx -------------------------------------------------------------------------------- /handouts/CS341-04-ScanfGetline.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-04-ScanfGetline.pdf -------------------------------------------------------------------------------- /handouts/CS341-05-ExecForkEnviron.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-05-ExecForkEnviron.docx -------------------------------------------------------------------------------- /handouts/CS341-05-ExecForkEnviron.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-05-ExecForkEnviron.pdf -------------------------------------------------------------------------------- /handouts/CS341-06-forkexecwait.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-06-forkexecwait.docx -------------------------------------------------------------------------------- /handouts/CS341-06-forkexecwait.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-06-forkexecwait.pdf -------------------------------------------------------------------------------- /handouts/CS341-07-signals.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-07-signals.docx -------------------------------------------------------------------------------- /handouts/CS341-07-signals.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-07-signals.pdf -------------------------------------------------------------------------------- /handouts/CS341-08-heap.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-08-heap.docx -------------------------------------------------------------------------------- /handouts/CS341-08-heap.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-08-heap.pdf -------------------------------------------------------------------------------- /handouts/CS341-09-allocator.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-09-allocator.docx -------------------------------------------------------------------------------- /handouts/CS341-09-allocator.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-09-allocator.pdf -------------------------------------------------------------------------------- /handouts/CS341-10-allocatorII.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-10-allocatorII.docx -------------------------------------------------------------------------------- /handouts/CS341-10-allocatorII.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-10-allocatorII.pdf -------------------------------------------------------------------------------- /handouts/CS341-11-Threads.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-11-Threads.docx -------------------------------------------------------------------------------- /handouts/CS341-11-Threads.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-11-Threads.pdf -------------------------------------------------------------------------------- /handouts/CS341-12-ThreadsMemory.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-12-ThreadsMemory.docx -------------------------------------------------------------------------------- /handouts/CS341-12-ThreadsMemory.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-12-ThreadsMemory.pdf -------------------------------------------------------------------------------- /handouts/CS341-13-PThreads.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-13-PThreads.docx -------------------------------------------------------------------------------- /handouts/CS341-13-PThreads.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-13-PThreads.pdf -------------------------------------------------------------------------------- /handouts/CS341-14-PThreadsAndLocks.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-14-PThreadsAndLocks.docx -------------------------------------------------------------------------------- /handouts/CS341-14-PThreadsAndLocks.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-14-PThreadsAndLocks.pdf -------------------------------------------------------------------------------- /handouts/CS341-15-CondVariables.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-15-CondVariables.docx -------------------------------------------------------------------------------- /handouts/CS341-15-CondVariables.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-15-CondVariables.pdf -------------------------------------------------------------------------------- /handouts/CS341-16-CountingSemaphores.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-16-CountingSemaphores.docx -------------------------------------------------------------------------------- /handouts/CS341-16-CountingSemaphores.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-16-CountingSemaphores.pdf -------------------------------------------------------------------------------- /handouts/CS341-17-ProducerConsumerBarrierV2.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-17-ProducerConsumerBarrierV2.docx -------------------------------------------------------------------------------- /handouts/CS341-17-ProducerConsumerBarrierV2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-17-ProducerConsumerBarrierV2.pdf -------------------------------------------------------------------------------- /handouts/CS341-18-ReaderWriterDeadlock.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-18-ReaderWriterDeadlock.docx -------------------------------------------------------------------------------- /handouts/CS341-18-ReaderWriterDeadlock.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-18-ReaderWriterDeadlock.pdf -------------------------------------------------------------------------------- /handouts/CS341-19-ReaderWriterDeadlock-part2.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-19-ReaderWriterDeadlock-part2.docx -------------------------------------------------------------------------------- /handouts/CS341-19-ReaderWriterDeadlock-part2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-19-ReaderWriterDeadlock-part2.pdf -------------------------------------------------------------------------------- /handouts/CS341-20-DiningPhilosophers.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-20-DiningPhilosophers.docx -------------------------------------------------------------------------------- /handouts/CS341-20-DiningPhilosophers.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-20-DiningPhilosophers.pdf -------------------------------------------------------------------------------- /handouts/CS341-20-DiningPhilosophersCode.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-20-DiningPhilosophersCode.docx -------------------------------------------------------------------------------- /handouts/CS341-20-DiningPhilosophersCode.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-20-DiningPhilosophersCode.pdf -------------------------------------------------------------------------------- /handouts/CS341-21-PageTablesAndIPC.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-21-PageTablesAndIPC.docx -------------------------------------------------------------------------------- /handouts/CS341-21-PageTablesAndIPC.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-21-PageTablesAndIPC.pdf -------------------------------------------------------------------------------- /handouts/CS341-22-PipesAndSeeks.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-22-PipesAndSeeks.docx -------------------------------------------------------------------------------- /handouts/CS341-22-PipesAndSeeks.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-22-PipesAndSeeks.pdf -------------------------------------------------------------------------------- /handouts/CS341-23-CFilesPipesSeeks.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-23-CFilesPipesSeeks.docx -------------------------------------------------------------------------------- /handouts/CS341-23-CFilesPipesSeeks.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-23-CFilesPipesSeeks.pdf -------------------------------------------------------------------------------- /handouts/CS341-24-ErrorsPacketsUDPTCP.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-24-ErrorsPacketsUDPTCP.docx -------------------------------------------------------------------------------- /handouts/CS341-24-ErrorsPacketsUDPTCP.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-24-ErrorsPacketsUDPTCP.pdf -------------------------------------------------------------------------------- /handouts/CS341-25-TCPClientHttp.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-25-TCPClientHttp.docx -------------------------------------------------------------------------------- /handouts/CS341-25-TCPClientHttp.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-25-TCPClientHttp.pdf -------------------------------------------------------------------------------- /handouts/CS341-26-TCPServer.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-26-TCPServer.docx -------------------------------------------------------------------------------- /handouts/CS341-26-TCPServer.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-26-TCPServer.pdf -------------------------------------------------------------------------------- /handouts/CS341-27-Files-1.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-27-Files-1.docx -------------------------------------------------------------------------------- /handouts/CS341-27-Files-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-27-Files-1.pdf -------------------------------------------------------------------------------- /handouts/CS341-28-Files-2.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-28-Files-2.docx -------------------------------------------------------------------------------- /handouts/CS341-28-Files-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-28-Files-2.pdf -------------------------------------------------------------------------------- /handouts/CS341-29-Files-3.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-29-Files-3.docx -------------------------------------------------------------------------------- /handouts/CS341-29-Files-3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-29-Files-3.pdf -------------------------------------------------------------------------------- /handouts/CS341-30-Files-4.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-30-Files-4.docx -------------------------------------------------------------------------------- /handouts/CS341-30-Files-4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-30-Files-4.pdf -------------------------------------------------------------------------------- /handouts/CS341-31-Files-5.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-31-Files-5.docx -------------------------------------------------------------------------------- /handouts/CS341-31-Files-5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-31-Files-5.pdf -------------------------------------------------------------------------------- /handouts/CS341-32-Scheduling.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-32-Scheduling.docx -------------------------------------------------------------------------------- /handouts/CS341-32-Scheduling.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-32-Scheduling.pdf -------------------------------------------------------------------------------- /handouts/CS341-33-NetworkingEpoll.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-33-NetworkingEpoll.docx -------------------------------------------------------------------------------- /handouts/CS341-33-NetworkingEpoll.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-33-NetworkingEpoll.pdf -------------------------------------------------------------------------------- /handouts/CS341-34-Signals2.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-34-Signals2.docx -------------------------------------------------------------------------------- /handouts/CS341-34-Signals2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-34-Signals2.pdf -------------------------------------------------------------------------------- /handouts/CS341-35-Signals3.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-35-Signals3.docx -------------------------------------------------------------------------------- /handouts/CS341-35-Signals3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-35-Signals3.pdf -------------------------------------------------------------------------------- /handouts/CS341-36-Protocols.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-36-Protocols.docx -------------------------------------------------------------------------------- /handouts/CS341-36-Protocols.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-36-Protocols.pdf -------------------------------------------------------------------------------- /handouts/CS341-37-RPC.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-37-RPC.docx -------------------------------------------------------------------------------- /handouts/CS341-37-RPC.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-37-RPC.pdf -------------------------------------------------------------------------------- /handouts/CS341-38-UDP-SystemConcepts.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-38-UDP-SystemConcepts.docx -------------------------------------------------------------------------------- /handouts/CS341-38-UDP-SystemConcepts.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-38-UDP-SystemConcepts.pdf -------------------------------------------------------------------------------- /handouts/CS341-39-InterviewExamPractice.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-39-InterviewExamPractice.docx -------------------------------------------------------------------------------- /handouts/CS341-39-InterviewExamPractice.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-39-InterviewExamPractice.pdf -------------------------------------------------------------------------------- /handouts/CS341-41-CriticalSectionProblem.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-41-CriticalSectionProblem.docx -------------------------------------------------------------------------------- /handouts/CS341-41-CriticalSectionProblem.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angrave/CS341-Lectures-FA23/ac3478afb48be674be8ab1473673abd6a2da8bf0/handouts/CS341-41-CriticalSectionProblem.pdf --------------------------------------------------------------------------------