4 ms·
How do I study operating systems(CS subject) as a Linux systems administrator?
As I said I've my FE license coming up as well as I'm a Linux Systems Administrator. Now, I want to learn operating systems(a cs subject) from the depth of it.
I'm following 3 different books (I hate tanenbaum)
- William Stallings
- Deitel et al
- Galvin et al
Out of them deitel is best. But my goal is to learn each line written in the book and I'm not satisfied with myself. I want to gain a lot of knowledge. But it's not happening. Please guide me a bit.
- sargstuff 3y agoStart out a bit smaller, hands on approach: Unix man pages. Look at /etc/init scripts. Minux OS source code/documentation[0]. Review / understand BSD version changes/differences. v1.0 to 4.4. Linux from Scratch[1] "UNIX Systems Programming: Communication, Concurrency and Threads" by Kay A. Robbins & Steve Robbins "Expert C Programming, Deep C Secrets" by Peter Van Der Linden "Comprehensive C" by David Spuler Awk / shell programming from a CS autonoma perspective. (start search: s-expressions, m-expressions) Note: CS masters level backround knowledge! [0] : http://www.minix3.org/ http://www.minix3.org/ [1] : https://www.linuxfromscratch.org/ https://www.linuxfromscratch.org/
- dysoco 3y agoI've been reading Operating Systems: Three Easy Pieces [1] which is free online, probably covers more or less the same as Stallings but I've been enjoying particularly this one so it might be useful to check it out. I've been also navigating the code for xv6 [2] trying to understand how the concepts are mapped to the code, some of the code snippets from Three Easy PIeces are from xv6 as well. [1] https://pages.cs.wisc.edu/~remzi/OSTEP/ https://pages.cs.wisc.edu/~remzi/OSTEP/ [2] https://pdos.csail.mit.edu/6.828/2023/xv6.html https://pdos.csail.mit.edu/6.828/2023/xv6.html
- husadanytinabou 3y agoHow much do you understand about Hardware? If you want to understand Operating Systems from the depht of it, don't read the books you are reading just yet. Too early. Go learn to use different Operating Systems, first, and get the differences.
- hnthrowaway0315 3y agoCan you please elaborate "about hardware" and "use different OS"? Do you recommend getting some firmware experience that directly interacts with hardware, and use some exotic OS other than Linux, Windows and such?
- sargstuff 3y agoQEM[2][3] & write shell script with option to a) "compile latest source & run the just compiled OS under QEM emulation" OR b) run known working OS under qem with development environment/tools for messing with source used in part a. Advantage: on same box, one window can be the development environment. other QEM can compile/run in different window to test what was done via development environment. aka edit english paper in word processor & save. view/print the compiled results in different window. grub / uboot[1] would be what pc hardware bios would use in place of the above QEM shell/boot script. [0] : https://en.wikipedia.org/wiki/GNU_GRUB https://en.wikipedia.org/wiki/GNU_GRUB [1] : https://en.wikipedia.org/wiki/Das_U-Boot https://en.wikipedia.org/wiki/Das_U-Boot [2] : https://nickdesaulniers.github.io/blog/2018/10/24/booting-a-custom-linux-kernel-in-qemu-and-debugging-it-with-gdb/ https://nickdesaulniers.github.io/blog/2018/10/24/booting-a-... [3] : Helpful info QEM to kernel vs QEM to bios with bios booting/loading kernel : http://unix.stackexchange.com/questions/397939/turning-off-kaslr-to-debug-linux-kernel-using-qemu-and-gdb http://unix.stackexchange.com/questions/397939/turning-off-k...
- GianFabien 3y agoIf you can learn well from books, good luck. Personally, I'd grab an old, but working PC and get XV6 or Minix working on it. Minix is especially interesting because Linus used that as his starting point.
- sargstuff 3y agoSetting up an OS to support virtual environments along with setting virtual environment to run/experiment with XV6 or Minux will save time/pain when accidently do things that hose the OS aka 'rm -rf /*'. .[0] Take a look at live distro (run just in ram).[1] If totally hose the system while messing around, just reboot (assuming no writeable media on box when running in ram only) [0] : https://www.altaro.com/vmware/open-source-projects/ https://www.altaro.com/vmware/open-source-projects/ [1] : https://www.makeuseof.com/best-live-usb-linux-distros/ https://www.makeuseof.com/best-live-usb-linux-distros/
- markus_zhang 3y agoJust curious is there a way to set up the development environment as following? Two machines, neither is virtual. One machine contains all the development tools (IDE, compilers, etc.) to develop say XV6, and the other uses the compiled binaries as the OS. I'm thinking maybe using a USB storage device is easy? I can just dump the binaries into the USB and plug it on the OS machine and reboot.
- sargstuff 3y agoComplete OS boot or OS boot and use mount points on usb? a) could just make live distro to boot pc & have live distro provide option of mounting just the development directory (with development tool & setup) or just directory with binaries to boot OS. b) do same thing using QEM but from within user account. -- longer sneaker tread life. Run XV6 under QEM from user account directory: relevant non-XV6 example setup.[0] [0] PintOS : http://computercalledvarun.wordpress.com/2013/02/03/pintos-on-ubuntu/ http://computercalledvarun.wordpress.com/2013/02/03/pintos-o...
- markus_zhang 3y ago