6 ms·
Labs for Rust OS – CS-3210 at Georgia Tech
- quibono 6y agoThe labs seem to be using Pi 3; if I wanted to follow along I guess there shouldn't be an issue with using Raspberry Pi 4 instead of 3?
- tndl 6y agoI'm trying to figure out if a Pi 4 or 3A will work as well.
- itsmemattchung 6y agoAs a current graduate student specializing in systems at Georgia Tech OMSCS, I would love to see this class offered online. What's piques my interest is are the following two labs: preemptive multitasking (i.e. implementing processes) and FAT32 file system (i.e. implementing a file system, something I've always wanted to do)
- DarmokJalad1701 6y agoFAT12 is really simple (and limited) . I have implemented a driver for it from scratch back in the day, in assembler and then later in C. Taught me a lot!
- Twisol 6y agoFAT is enjoyable! I spent a rather insane summer on a personal project to implement a FAT16 interface speaking the SD protocol to an SD card over an SPI bus.... from scratch. I think I had five spec documents open simultaneously at one point, spanning the stack from FAT to the microprocessor I was using. It was insane, but I learned an incredible amount from it. Would recommend, even if you focus only on FAT.
- gmueckl 6y agoCool project! Doing things like that from scratch can teach a lot. Was your implementation able to write to the SD card, too? This seems like the much hard part to me because you need to do implement the data structure changes and block allocations for files. Reading from a file system often boils down to following the right offsets until you get to file content, at least in journal-less file systems.
- Twisol 6y agoYeah, writing was supported too. Absolutely was the harder part, since you have to worry about allocating new segments for your directories as your filesystem grows. Ironically, looking at my code now, it seems like I never got around to actually writing file contents. I seem to have stopped after finishing the overall FAT16 filesystem structure traversal and mutation. The SD card module was a little simpler, because I only really needed to implement flows for the commands involved in initialization and single-block reads and writes. The SD card presents a block-oriented storage interface, but it doesn’t really care what you’re storing otherwise.
- robot 6y agoJust curious, would you pay for a practical course if it existed? Asking as I am planning to develop one.
- elteto 6y agoI probably would. I’m also in OMSCS and the two operating systems classes offered cover a very different spectrum (GIOS is more about learning the Linux OS interface and AOS is about experimental concepts in OS development). There isn’t a “back to basics” OS class unfortunately.
- robot 6y agoThanks for feedback, I am considering both (a) Linux interface (b) Back to basics building at least a decent multitasking kernel with memory management.
- elteto 6y agoI think building some sort of OS from scratch would be a wonderful class. I've actually thought about what _I_ would like to see in a class like this before. These ideas might be useful to you: 1. Use a widely available architecture. This practically means x86 or x86_64. Nothing against RPis, for example, it's just that _everyone_ is more likely to have some sort of Intel desktop/laptop before they even have an RPi. 2. Start from the very basics: booting up and go into a NOP loop should be one of the first lessons. 3. Don't need to go too far: basic but functional implementations of things like memory management, multitasking, file systems, etc. are enough. 4. By the end, have a simple OS that boots up to a basic shell, is capable of reading/writing to something like FAT16 and can run multiple tasks in parallel.
- winter_blue 6y agoSuch a course would be amazing. We definitely need more course that go down to deep specifics of how OSes work, are implemented. (I feel like Tanenbaum's Minix book the last excellent piece of literature in the area that came closest. But of course, if you're aware of other literature on this, let me know!)
- Icathian 6y agoAlso currently a student in the program, and I agree this would definitely earn one of my remaining slots. The current OS courses are already considered some of the best, and this would be a great addition. Fingers crossed.
- JoshTriplett 6y ago> FAT32 file system (i.e. implementing a file system, something I've always wanted to do) It's worth learning both how FAT32 works and how a simple inode-based filesystem works. They're quite different styles, and inode-based systems support things like hardlinks.
- voltagex_ 6y agoI got to the point where I could read the header / metadata from a FAT32 image, but I couldn't find the right offset to read a file. Is there a definitive document anywhere? I remember I was jumping between at least 3 documents with varying levels of completeness.
- sedatk 6y agoThis seems complete enough to me: http://www.ntfs.com/fat-32structure.htm http://www.ntfs.com/fat-32structure.htm
- mcbain 6y agoImplementing a simple filesystem using the Linux VFS interface is a fun thing to do. You can start by implementing the bare minimum and then add more functions over time. Yes, it is C, not Rust, but for systems work it is absolutely worth knowing.
- swsieber 6y agoMaybe you could implement it in Rust? IIRC there's experimental rust support for drivers for the Linux kernel.
- shpongled 6y agoext2 is pretty easy to implement (a minimal implementation at least)! It's what I used for my hobby os Have you checked out the osdev wiki and forums? There's a good deal of info on both of those topics there.
- scythe 6y agoWow. CS 3210 is in Rust now? That course contributed significantly to me getting my first real job. Back then we wrote Linux kernel modules.
- jcranmer 6y agoI'll also have to say that the course labs look far more interesting than they were a decade ago. Implementing a new linux syscall to readtsc isn't particularly exciting...
- ethbro 6y agoCS 3210 & 6210 were my favorite undergrad courses. Incredibly frustrating, but I learned more general concepts in each semester than in anything else. I still remember trying to decide between 6210 and another elective. I asked Bill Leahy, who in typically efficiency replied, "Well, Tom Conte has a Porsche and a Ferrari." I figured that was a fair criteria in deciding who to learn from.
- Cyph0n 6y agoTom Conte’s graduate computer architecture course was a ton of fun and a lot of work!
- kediz 6y agoActually all the professors in COC can afford them because they got paid very well(Full professors in COC has 200k+)
- dboon 6y agoBill Leahy and Tom Conte are god damn treasures to this world. I love them both.
- cepp 6y agoI'm really impressed. When I took the course ~1.5 years ago it was still cribbing heavily from MIT OCW's OS course. Really nice to see the curriculum has changed (and more importantly been reduced)!
- mindwok 6y agoThis is awesome... Really hope they offer this course on EdX or Coursera or something with full materials
- azhenley 6y agoThe Reference Materials section has some nice tutorials, including one written by my colleague: Making a RISC-V Operating System using Rust, which has been discussed on HN several times. http://osblog.stephenmarz.com/ http://osblog.stephenmarz.com/
- non-entity 6y agoWow this looks pretty cool! Courses like this are why I kinda wish I had gone to school and done a (good) CS program.
- musicale 6y agoIt looks like it's based on Stanford's CS140e. https://github.com/dddrrreee/cs140e-20win/ https://github.com/dddrrreee/cs140e-20win/ https://cs140e.sergio.bz/syllabus/ https://cs140e.sergio.bz/syllabus/
- Smerity 6y agoOn the linked page it's noted: > The labs used in CS3210 are largely based on the materials originally developed for CS140e: An Experimental Course on Operating Systems by Sergio Benitez.
- tsgates 6y agoA "big" difference is that we have VM, Multicore and Networking stack! Also, it uses Rust 2018.
- musicale 6y agoNetworking drivers and APIs are nice to have - they are often omitted in OS project assignments because it's hard to fit them into the course schedule. However for an IoT/embedded OS networking is pretty essential.
- deleted 6y ago[deleted]
- kediz 6y agoI heard it is amazingly good. Here is another class taught by the same professor about security: https://tc.gts3.org/cs6265/2019/info.html https://tc.gts3.org/cs6265/2019/info.html
- leshow 6y agocs140e was a phenomenal class that I learned a lot doing, highly recommend to anyone that wants to learn more Rust or systems topics
- deleted 6y ago[deleted]
- deleted 6y ago[deleted]
- dgellow 6y agoIs there an equivalent course in C or C++? I would be interested to take it if that was the case (nothing against Rust, I just don't see myself learning a new language just for a course)
- tndl 6y agoI don't know for sure, but I imagine the similar courses referenced in the acknowledgements use C: https://tc.gts3.org/cs3210/2020/spring/info.html#acknowledgments https://tc.gts3.org/cs3210/2020/spring/info.html#acknowledgm...