-
Notifications
You must be signed in to change notification settings - Fork 6
Home
Lawrence Angrave edited this page Jan 19, 2016
·
7 revisions
Welcome to the System Programming Projects wiki! This wiki describes some System Programming project ideas and additional System Programming materials that are aimed at honors students at CS241 at UIUC. Honors students should sign up for the Honors Piazza. This semester's honors course is run by graduate TA Atul (sandur2) and undergraduate Robert (rgandre2).
- Honors-Readme. This entry is not really a project. Instead we'll collect and organize some interesting web-articles and other resources that are beyond CS241 but are interesting for honors students.
- Fuse-fs Write your own filesystem! Using FUSE you can write a filesystem in user-space. Albeit a little slower than a native filesystem, FUSE filesystems are easier to write and to debug.
- Create your heap allocator with the following characteristics: Implement your own malloc,realloc,calloc and free. Write a buddy allocator together and use
mmap
to reserve a large section of memory from the operating system. How will you make your memory allocator thread safe?
- Implement a single executable that implements basic versions of
ls
,grep
,cat
,time
. Note POSIX and gnu provide a regular expressions library (see regex.h).
- Using shared memory (mmap) and shared semaphores implement a blocking buffer that behaves like a pipe i.e. data can be streamed into or out of the buffer from one process to another. Implement
ssize_t enqueue(queue*, void*data, ssize_t bytes)
andssize_t dequeue(queue*, void*data, ssize_t maxbytes)
that behave likewrite
andread
.
- Implement a simplified mutex lock and counting semaphore using a atomic hardware instruction (e.g. test-and-set or exchange). A real mutex needs kernel support - a simple(non-performant) implementation might use
thread_yield
inside a busy loop when waiting to acquire the lock. See https://attractivechaos.wordpress.com/2011/10/06/multi-threaded-programming-efficiency-of-locking/ for an introduction to futex locks and spinlocks.
- Get involved with Angrave's Linux-In-The_Browser project
- Get involved with Angrave's ClassTranscribe (crowd-sourced transcription of lectures)
- Get involved with Angrave's ClassCapture project (distributed lecture video capture using Android & IPhone)
- Create questions for the System Programming wiki book
Legal and Licensing information: Unless otherwise specified, submitted content to the wiki must be original work (including text, java code, and media) and you provide this material under a Creative Commons Attribution License. If you are not the copyright holder, please give proper attribution and credit to existing content and ensure that you have license to include the materials.