https://stevens.netmeister.org/631/ +-------------------------------------------------------------------------------------------------------------------------+ | | | Advanced Programming in the UNIX Environment | | | | CS631 - APUE | | | | --------------------------------------------------------------------- | | | | Course Outline | | | | In this course, students will learn to develop complex system-level | | software in the C programming language while gaining an intimate | | understanding of the Unix operating system (and all OS that belong to | | this family, such as Linux, the BSDs, and even Mac OS X) and its | | programming environment. | | | | Topics covered will include the user/kernel interface, fundamental | | concepts of Unix, user authentication, basic and advanced I/O, | | fileystems, signals, process relationships, and interprocess | | communication. Fundamental concepts of software development and | | maintenance on Unix systems (development and debugging tools such as | | "make" and "gdb") will also be covered. | | | | Students are expected to have a good working knowledge of the C | | programming language, have written non-trivial programs before, and | | to be able to competently use a Unix system with a command-line shell | | interface. All coursework will be done exclusively on a Unix system | | from the command-line. This is not an introduction to using Unix! | | | | If you email me to waive the prerequisites, please provide | | information about how you meet the requirements listed above in bold. | | (This has the added benefit of showing that you've actually read at | | least this far on this page.) | | | | --------------------------------------------------------------------- | | | | Time, Date & Place: Tweets by @cs631apue | | | | Interactive/synchronous: Mondays, | | 18:30 Eastern, Gateway South 024 | | Online on-demand: anytime via | | YouTube video lectures | | | | Instructor: | | | | Jan Schaumann [ | | jschauma@stevens.edu] | | | | Office Hours: by appointment | | Mondays, 18:00 Eastern, Gateway | | South | | | | When emailing me, please use your | | @stevens.edu address. I will | | likely not even see your email if | | it is sent from gmail or any other | | non-stevens address. | | | | Resources: | | | | Content and discussions: | | | | * CS631APUE Mailinglist | | Note: all class communications | | happen via this mailing list. | | All registered students are | | subscribed to this list using | | their @stevens.edu address. It | | is critical that you read this | | list. | | * Course Slack | | * Course Videos / Youtube | | Channel (RSS feed) | | | | Assignments and meta-information: | | | | * Course Syllabus | | * General Homework Guidelines | | * Source Code Style Guide | | * Recommendations To Write | | (Slightly More) Readable And | | (Thus) Robust Code | | * Code Submission Checklist | | * Links to OS Source Code | | * Textbooks used in this class | | * Systems used in this class | | * Grading Policies | | * Homework Assignments | | * Midterm Project | | * Group Project | | | | Related links and documents: | | | | * Writing ASCII Text | | * NetBSD Manual Pages | | * Single UNIX Specification | | (POSIX) | | * Class Twitter Account | | * All Code Examples | | * Raw course material on GitHub | | * Using git | | | | Tool Tips: | | | | * ctags(1) [slides] [transcript] | | * screen(1) [slides] [transcript | | ] | | * /usr/share/docs [slides] [ | | transcript] | | * sizeof != strlen [slides] [ | | transcript] [sizeof.c] | | * Installing NetBSD/evbarm in | | UTM on Apple M1 [transcript] | | * ed(1) is the standard text | | editor [transcript] | | | | --------------------------------------------------------------------- | | | | Source Code | | | | You will be writing a lot of code in this class. You may also find | | the need to read a lot of code not written by you as well as the | | manual pages accompanying the sources. | | | | Our primary reference platform being NetBSD, you can install the full | | sources into your VirtualBox or UTM VM via e.g., this script. | | | | To browse or fetch sources for other Open Source Unix variations, | | please see these links: | | | | * Debian | | * FreeBSD | | * GNU coreutils | | * illumos (OpenSolaris derivative) | | * NetBSD | | * OpenBSD | | | | --------------------------------------------------------------------- | | | | Textbooks: | | | | The textbook used in this class is: | | | | * `` Advanced Programming in the UNIX(r) Environment'', Third Edition | | W. Richard Stevens, Stephen A. Rago | | ISBN: 0-321-63773-9 | | Publisher: Addison Wesley Professional | | Code Examples | Safari Online version | | | | The following books are recommended purely for your own personal | | reference. They're not used in the class as a text, but are related | | and very useful books to have: | | | | * ``The C Programming Language'' -- important: make sure you get | | the 2nd Edition covering ANSI C. | | by Brian W. Kernighan and Dennis M. Ritchie. | | Prentice Hall, Inc., 1988. | | ISBN 0-13-110362-8 (paperback), 0-13-110370-9 (hardback). | | * ``The Practice of Programming'' | | by Brian W. Kernighan and Rob Pike. | | Addison-Wesley, Inc., 1999. | | ISBN 0-201-61586-X. | | | | In addition, please consider MIT's "Missing Semester" a course pre- | | or co-requisite: | | | | * MIT's Missing Semester -- video lectures | | | | --------------------------------------------------------------------- | | | | Systems Used | | | | All software development will be done on a NetBSD system. It is your | | responsibility to gain access to such a system prior to the start of | | the class. Please see this page for more information. Here are | | instructions on how to install NetBSD in a VirtualBox or UTM. | | | | All grading will be done on a NetBSD 9.2 system. While you may choose | | to develop on your own personal host, you should make sure that your | | code compiles and runs flawlessly on this OS version. | | | | --------------------------------------------------------------------- | | | | Grading: | | | | There will most likely be: | | | | * course notes, participation and checkpoints: 50 points | | * 2 homework assignment, worth 25 points each | | * 1 midterm project, worth 100 points | | * 1 group project, worth 200 points | | * 1 final assignment, worth 100 points | | * no make-up assignments | | * no extra credit | | * no curve | | | | Letter grades will be given as follows: | | | | * 90% - 100% of total available points => A | | * 80% - 90% of total available points => B | | * 70% - 80% of total available points => C | | * 0 - 70% of total available points => F | | | | Within each letter grade, there are +/- grades given at the | | discretion of the instructor. (Exception: there is no A+) | | | | Plagiarism, Cheating and other ways to get an F | | | | This really should not be necessary, but just to preempt any | | complains that I did not make myself clear: | | | | Students are responsible for their own work. It is unethical (and | | in some cases illegal) to present as one's work the ideas, words | | or representations of another without the proper indication of | | the source. Therefore, it is the student's responsibility to give | | credit for any quotation, idea or data (such as statistical data | | or source code) borrowed from an outside source. | | | | Failure to do so constitutes plagiarism, may imply copyright | | infringement and license violations and is viewed as cheating in | | this class. | | | | Any incidents are reported to the Dean of Graduate Academics, as per | | the Graduate Student Code of Academic Conduct. | | --------------------------------------------------------------------- | | | | Homework Assignments: | | | | Assignments will be posted as the semester progresses. | | | | * HW#1: trivially copy a file | | | | The following exercises are not graded, but are recommended to be | | completed before or soon after the given lecture to help you better | | understand the concepts dicussed. | | | | * Lecture 01 - Generic Warmup Exercise | | * Lecture 01 - Compare Code Exercise | | * Lecture 02 - File Descriptor Warmup Exercise | | * Lecture 03 - Compare stat(1) Exercise | | * Lecture 04 - File System Exercise: Implement the cd(1) and pwd(1) | | commands | | * Lecture 06 - Process Execution Exercise: Inspect the call stack | | * Lecture 06 - Program Startup Exercise | | * Lecture 06 - Environment Exercise | | * Lecture 07 - Play the Signals Game of Thrones | | * Lecture 08 - Bi-directional communications using pipe(2) | | * Lecture 08 - How do multiple pipe(2) readers/writers behave? | | * Lecture 10 - HTTP Code Reading | | * Lecture 11 - libgreet | | * Lecture 12 - write a tool to encrypt/decrypt data using AES | | | | --------------------------------------------------------------------- | | | | Midterm Project: | | | | Implement the "ls(1)" command as decribed in the manual page provided | | to you. See the full midterm project description for details. | | | | --------------------------------------------------------------------- | | | | Group Project: | | | | Implement the "sws(1)" command as decribed in the manual page | | provided to you. See the full group project description for details. | | | | --------------------------------------------------------------------- | | | | Syllabus: | | | | Homework assignments, slides, and other material listed below are | | from the previous semester. We will update the content as the | | semester progresses. | | +-------------------------------------------------------------------------------------------------------------------+ | | | Date | Topic | Reading | Links | | | |------------+---------------------+-----------------------+--------------------------------------------------------| | | | | | | Week 01, Segment 1: Introduction | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 01, Segment 2: UNIX History | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | Stevens: Chapters 1, | Week 01, Segment 3: UNIX Basics | | | | | Introduction, UNIX | 2 | [slides] [video lecture] [transcript] | | | | 2022-09-12 | history, UNIX | Unix history and | | | | | | Programming Basics | basic features | simple-cat.c | | | | | | | simple-ls.c | | | | | | | simple-shell.c | | | | | | | simple-shell2.c | | | | | | | welcome.c | | | | | | | | | | | | | | Instructor Masking Preference | | | | | | | Week 01 Checkpoint (due by 16:00 Eastern before class) | | | |------------+---------------------+-----------------------+--------------------------------------------------------| | | | | | | Week 02, Segment 1: File Descriptors | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 02, Segment 2: open(2)/close(2) | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 02, Segment 3: read(2)/write(2)/lseek(2) | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 02, Segment 4: File Sharing | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | File I/O, File | | argv.c | | | | 2022-09-19 | Sharing | Stevens: Chapter 3 | close-stderr.c | | | | | | | fds.c | | | | | | | hole.c | | | | | | | lseek.c | | | | | | | openat.c | | | | | | | openex.c | | | | | | | openmax.c | | | | | | | redir.c | | | | | | | rwex.c | | | | | | | sync-cat.c | | | | | | | | | | | | | | Week 02 Checkpoint (due by 16:00 Eastern before class) | | | | | | | | | | | | | | HW1: bbcp(1) | | | |------------+---------------------+-----------------------+--------------------------------------------------------| | | | | | | Week 03, Segment 1: stat(2) intro | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 03, Segment 2: UIDs intro | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 03, Segment 3: struct stat st_mode | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 03, Segment 4: chmod(2) and chown(2) | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 03, Segment 5: umask(2) | | | | 2022-09-26 | Files and | Stevens: Chapter 4 | [slides] [video lecture] [transcript] | | | | | Directories | | | | | | | | | | | | | | | | access.c | | | | | | | chmod.c | | | | | | | chown.c | | | | | | | myuids.c | | | | | | | setuid.c | | | | | | | size.c | | | | | | | simple-ls.c | | | | | | | simple-ls-stat.c | | | | | | | umask.c | | | | | | | | | | | | | | Week 03 Checkpoint (due by 16:00 Eastern before class) | | | | | | | Midterm Project Assignment | | | |------------+---------------------+-----------------------+--------------------------------------------------------| | | | | | | Week 04, Segment 1: The Unix Filesystem | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 04, Segment 2: Links | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 04, Segment 3: Directories | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 04, Segment 4: Directory Size | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 04, Segment 5: /etc/passwd | | | | | | | [slides] [video lecture] [transcript] | | | | | | Stevens: Chapter 4, 6 | | | | | | Filesystems, System | File Systems and | Week 04, Segment 6: getpwuid(2) and /etc/groups | | | | 2022-10-03 | Data Files, Time & | Storage Models: | [slides] [video lecture] [transcript] | | | | | Date | 4.4.1, 4.5 - 4.7 | | | | | | | | Week 04, Segment 7: atime, mtime, ctime | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 04, Segment 8: time(3) is an illusion | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | | | | | | | | cd.c | | | | | | | getpw.c | | | | | | | groups.c | | | | | | | wait-unlink.c | | | | | | | sizeof.c | | | | | | | time.c | | | | | | | | | | | | | | Week 04 Checkpoint (due by 16:00 Eastern before class) | | | |------------+------------------------------------------------------------------------------------------------------| | | | 2022-10-10 | Fall Recess | | | |------------+------------------------------------------------------------------------------------------------------| | | | | | | Note: Tuesday Class | | | | | | | | | | | | | | Week 05, Segment 1: The Unix Development Environment | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 05, Segment 2: The Editor | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 05, Segment 3: The Compiler Toolchain, Part I | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 05, Segment 4: The Compiler Toolchain, Part II | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 05, Segment 5: The Compiler Toolchain, Part III | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 05, Segment 6: The Compiler Toolchain, Part IV | | | | | | | [slides] [video lecture] [transcript] | | | | | | CVS Documentation | | | | | | | Mini FAQ about the | Week 05, Segment 7: make(1) | | | | | UNIX tools: cc(1), | misc libc/gcc crt | [slides] [video lecture] [transcript] | | | | | make(1), revision | files | | | | | 2022-10-11 | control, diff(1), | Debugging with GDB | Week 05, Segment 8: Debugging Your Code | | | | | patch(1), gdb(1) | Guide to Faster, Less | [slides] [video lecture] [transcript] | | | | | | Frustrating Debugging | | | | | | | gdb Tutorial | Week 05, Segment 9: Using gdb(1) | | | | | | Git | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 05, Segment 10: Using gdb(1), part II | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 05, Segment 11: Using gdb(1), part III | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 05, Segment 12: Using gdb(1) to understand | | | | | | | pointers | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Lecture Slides | | | | | | | | | | | | | | compile chain examples | | | | | | | make examples | | | | | | | gdb examples | | | | | | | | | | | | | | Week 05 Checkpoint (due by 16:00 Eastern before class) | | | | | | | | | | |------------+---------------------+-----------------------+--------------------------------------------------------| | | | | | | Week 06, Segment 1: Memory Layout of a Process | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 06, Segment 2: Program Startup | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 06, Segment 3: Program Termination | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 06, Segment 4: The Environment | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 06, Segment 5: Process Limits and Identifiers | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 06, Segment 6: Process Control | | | | | | Stevens: Chapters 7, | [slides] [video lecture] [transcript] | | | | | | 8 | | | | | | | Smashing The Stack | | | | | | | For Fun And Profit | testcp.sh | | | | | Process | Linux x86 Program | const.c | | | | 2022-10-17 | Environment, | Start Up | entry.c | | | | | Process Control | stdarg And The Case | exit-handlers.c | | | | | | Of The Forgotten | forkflush.c | | | | | | Registers | forkseek.c | | | | | | There is no 'printf'. | hw.c | | | | | | Process Creation | malloc.c | | | | | | | memory-layout0.c | | | | | | | memory-layout1.c | | | | | | | memory-layout2.c | | | | | | | memory-layout3.c | | | | | | | memory-layout4.c | | | | | | | memory-layout5.c | | | | | | | memory-layout6.c | | | | | | | memory-layout7.c | | | | | | | memory-layout8.c | | | | | | | sum.c | | | | | | | zombies.c | | | | | | | | | | | | | | NetBSD crt0-common.c | | | | | | | | | | | | | | Week 06 Checkpoint (due by 16:00 Eastern before class) | | | | | | | | | | |------------+---------------------+-----------------------+--------------------------------------------------------| | | | | | | Week 07, Segment 1: The Login Process | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 07, Segment 2: Process Groups and Sessions | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 07, Segment 3: Job Control | | | | | | | [slides] [video lecture] [transcript] | | | | | | Stevens: Chapter 9, | | | | | | | 10 | Week 07, Segment 4: Signals | | | | | | POSIX Terminal | [slides] [video lecture] [transcript] | | | | | | Interface Description | | | | | | Process Groups, | Shichao's Notes | Week 07, Segment 5: Reentrant and Interrupted | | | | 2022-10-24 | Sessions, Signals | FreeBSD Process | Functions | | | | | | Management (from "The | [slides] [video lecture] [transcript] | | | | | | Design and | | | | | | | Implementation of the | | | | | | | FreeBSD Operating | eintr.c | | | | | | System") | pending.c | | | | | | | reentrant.c | | | | | | | signals1.c | | | | | | | signals2.c | | | | | | | signals3.c | | | | | | | signals4.c | | | | | | | sigusr.c | | | | | | | | | | | | | | Week 07 Checkpoint (due by 16:00 Eastern before class) | | | |------------+---------------------+-----------------------+--------------------------------------------------------| | | | | | | Week 08, Segment 1: Interprocess Communications Intro | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 08, Segment 2: System V IPC | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 08, Segment 3: Pipes and FIFOs | | | | | | Stevens: Chapter 14 | [slides] [video lecture] [transcript] | | | | | | Shared Memory | | | | | | | Introduction | | | | | | | Semaphores in Linux | BSD IPC Tutorial | | | | 2022-10-31 | Interprocess | Interprocess | Beej's Guide to Unix IPC | | | | | Communication I | communication using | | | | | | | POSIX message queues | memory-layout.c | | | | | | in Linux | mqrecv.c | | | | | | POSIX Message Queues | mqsend.c | | | | | | | msgrecv.c | | | | | | | pipe1.c | | | | | | | pipe2.c | | | | | | | popen.c | | | | | | | semdemo.c | | | | | | | shmdemo.c | | | | | | | | | | | | | | Week 08 Checkpoint (due by 16:00 Eastern before class) | | | |------------+---------------------+-----------------------+--------------------------------------------------------| | | | | | | Week 09, Segment 1: socketpair(2) | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 09, Segment 2: socket(PF_LOCAL, SOCK_DGRAM, 0) | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 09, Segment 3: socket(PF_INET, SOCK_DGRAM, 0) | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 09, Segment 4: socket(PF_INET6, SOCK_STREAM, 0) | | | | | | | [slides] [video lecture] [transcript] | | | | | | Stevens: Chapter 14 | | | | | | | BSD IPC | Week 09, Segment 5: I/O Multiplexing | | | | | | How Linux creates | [slides] [video lecture] [transcript] | | | | | | sockets and counts | | | | | 2022-11-07 | Interprocess | them | | | | | | Communication II | How Linux allows TCP | dualstack-streamread.c | | | | | | introspection | socketpair.c | | | | | | The C10K problem | udgramread.c | | | | | | IPC Buffer Sizes | udgramsend.c | | | | | | | dgramread.c | | | | | | | dgramsend.c | | | | | | | streamread.c | | | | | | | streamwrite.c | | | | | | | two-sockets.c | | | | | | | two-sockets-select.c | | | | | | | one-socket-select.c | | | | | | | one-socket-select-fork.c | | | | | | | | | | | | | | Week 09 Checkpoint (due by 16:00 Eastern before class) | | | | | | | | | | | | | | Group Project Assignment | | | |------------+---------------------+-----------------------+--------------------------------------------------------| | | | | Daemon Processes, | | Week 10, Segment 1: Daemon Processes | | | | 2022-11-14 | HTTP / Group | | [slides] [video lecture] [transcript] | | | | | Project Discussions | | | | | | | | | Lecture Slides | | | |------------+---------------------+-----------------------+--------------------------------------------------------| | | | | | | Week 11, Segment 1: The Executable and Linkable Format | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | Stevens: Chapter 13 | Week 11, Segment 2: Of Linkers and Loaders | | | | | | How to read an | [slides] [video lecture] [transcript] | | | | | | Executable | | | | | | | Ian Lance Taylor's | Week 11, Segment 3: Shared Libraries | | | | | | blog post series on | [slides] [video lecture] [transcript] | | | | | | linkers | | | | | | | Linkers and Loaders | crypt.c | | | | 2022-11-21 | Shared Libraries | How To Write Shared | dlopenex.c | | | | | | Libraries | evil.c | | | | | | Tool Interface | hello.c | | | | | | Standard (TIS) ELF | ldtest1.2.c | | | | | | Specification | ldtest1.c | | | | | | The Executable and | ldtest2.c | | | | | | Linkable Format (ELF) | main.c | | | | | | | setget.c | | | | | | | | | | | | | | Week 11 Checkpoint (due by 16:00 Eastern before class) | | | | | | | libgreet exercise | | | |------------+---------------------+-----------------------+--------------------------------------------------------| | | | | | | Week 12, Segment 1: syslog(3) | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 12, Segment 2: Non-blocking I/O | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 12, Segment 3: Resource Locking | | | | | | | [slides] [video lecture] [transcript] | | | | | Advanced I/O: | | | | | | | Nonblocking I/O, | | Week 12, Segment 4: Asynchronous and Memory Mapped I/O | | | | 2022-11-28 | Polling, and Record | Stevens: Chapter 14 | [slides] [video lecture] [transcript] | | | | | Locking / | | | | | | | Encryption in a | | | | | | | Nutshell | | Lecture Slides (previous semester, includes section on | | | | | | | encryption basics) | | | | | | | | | | | | | | slogdemo.c | | | | | | | nonblock.c | | | | | | | flock.c | | | | | | | Use strlcat(3)! | | | | | | | | | | | | | | Week 12 Checkpoint (due by 16:00 Eastern before class) | | | |------------+---------------------+-----------------------+--------------------------------------------------------| | | | | | | Week 13, Segment 1: POSIX ACLs | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 13, Segment 2: eUIDs, file flags, mount options, | | | | | | | securelevels | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | Week 13, Segment 3: Restricted shells, Chroots, Jails | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | Course Notes | Week 13, Segment 4: Process Priorities | | | | | | Thread scheduling and | [slides] [video lecture] [transcript] | | | | | Restricting | related interfaces in | | | | | 2022-12-05 | processes / | NetBSD 5.0 | Week 13, Segment 5: Processor Affinity and CPU Sets | | | | | Containers | CPU Pinning and CPU | [slides] [video lecture] [transcript] | | | | | | Sets | | | | | | | | Week 13, Segment 6: Capabilities, Control Groups, | | | | | | | Containers | | | | | | | [slides] [video lecture] [transcript] | | | | | | | | | | | | | | break-chroot.c | | | | | | | busy-child.c | | | | | | | load.c | | | | | | | priority.c | | | | | | | mkchroot | | | | | | | | | | | | | | Week 13 Checkpoint (due by 16:00 Eastern before class) | | | |------------+---------------------+-----------------------+--------------------------------------------------------| | | | 2022-12-12 | Review | | Final Assignment: sish(1) | | | +-------------------------------------------------------------------------------------------------------------------+ | | | +-------------------------------------------------------------------------------------------------------------------------+