Programming assignments for programming and essential concepts of operating systems, compilers, concurrency, and performance analysis course.
Taken Fall 2018 at Stony Brook University with Professor Eugene Stark..
- Intro
- Intro to linux
- Install vmware or virtual box
- MIPS Convertor
- command line utility to translate MIPS machine code between binary and human-readable mnemonic form
- Audible
- Perform certain transformations on audio files encoded in Sun audio (.au) format
- Intro to C
- Check for valid arguments passed from the terminal
- Ensure that all flags are valid and store their definitions accordingly
- Write a program which slows down, speeds up, and encodes the audio file
- Snarf
- Functions like the curl command on the terminal
- a simple HTTP client, which can contact an HTTP server over the Internet and retrieve a document
- Grades
- Debugging and Fixing
- Given an ancient code in C, fix it up so that it will run with no seg fault nor mem-leaks using gdb and valgrind
- Although still reachable mem leaks are not considered
- Ensure that opt_long works correctly
- Add an additional feature (the -o flag) for output file
- sfmm
- Dynamic Allocator
- Best-fit placement policy
- One free list for each block size. The collection of free lists will itself be organized as a "list of lists", maintained in increasing order of block size.
- Immediate coalescing on free with adjacent free blocks.
- Boundary tags with footer optimization that allows footers to be omitted from allocated blocks.
- Block splitting without creating splinters.
- Allocated blocks aligned to "double memory row" (16-byte) boundaries.
- Free lists maintained using last in first out (LIFO) discipline.
- Printer Spooler
- processes, signal handling, files, and I/O redirection
- forking, executing, and reaping
- Signal handling
- Understand the use of "dup" to perform I/O redirection.
- Implemented breadth first search
- Xacto
- socket programming
- Understand thread execution, locks, and semaphores
- Have an advanced understanding of POSIX threads
- Have some insight into the design of concurrent data structures