At office taking lots and lots of interviews. Sigh.
Are there good lectures available for Distributed Systems somewhere? I find most of the classes are usually just about reading lots of papers. While that’s great and I’m doing it, it would be really fantastic to have an experienced instructor drilling down the principles and practical examples of distributed systems. Thanks :)
Someone in #go-nuts linked me this excellent video from Linux Conf Australia: Introduction to go by Mark Smith from Dropbox. :)
Implement a simple UNIX shell. Basically, for each command you have to fork, exec, and then wait for the process to finish. You’ll learn a lot about UNIX systems programming and process management.
This is a great way for people to learn about syscalls and unix in general. Once there’s a shell that can handle execution of single commands, it can be interesting to implement pipes and file redirection with dup2, or shell metacharacters like $! with the wait() syscall. Around this time it’s also a good chance to learn about zombies and orphans, and how double forking can be used to daemonize a process.
I would like to learn this! Come to think of it, I would love for a good tutorial/course in systems programming. I’ve looked around and haven’t had success in finding anything useful. If anyone has any links, please post! :)
I found working through “Advanced Programming in the Unix Environment”
(and doing the exercises) to be a good start; there’s also “The Linux
Programming Interface”. It’ll give you a good foundation.
Also, one of the things I like to do when learning a new language is to
start writing the Unix utilities in them.
Advanced Linux Programming is a good reference for the different system calls you will have to use.
I wrote a shell as the first assignment in my Operating Systems course in university. The instructions for that particular assignment are still online on the course website.
To piggyback: I think Operating Systems courses should be required in all universities teaching Computer Science, there is like a treasure chest of knowledge that is hard to grasp at first - but the rewards are so worth it.
Computer Systems: A Programmer’s Perspective, which was the reference for my University’s intro to systems class is one of the best textbooks I’ve ever read; the labs that come with it (many of which can be found on the internet) are excellent as well.