How to Learn the operating system principles ?, Learn operating system principles?
Let's briefly talk about how to learn the operating system principles. Here we assume that the reader is basically a little white, and there is only one basic algorithm and data structure, such as writing linked lists and fast sorting in C language. One thing we must emphasize is that all theoretical books without (pseudo) code are playing tricks. So according to this rule, we have to learn the operating system principles through programming. Reference a teacher's sentence, "Learning by coding them ". Another point is that learning the operating system principles is not learning how to use various APIs and how to configure parameters in the operating system. We have to look at them from a higher perspective, we have to think about how to implement these APIs and configuration items in the kernel.
In line with the principle that it is better to teach people to fish than to teach people to fish, we provide a feasible learning route. It is best to proceed step by step. Of course, you can skip some stages based on your own level:
The first stage is to learn the computer composition principle and architecture:
Step 1: Go to coursera's online course: from Nand to Tetris I to get basic knowledge about computer composition principles.
Step 2: carefully read and understand the second edition of computer system, and conduct exercises and experiments after class to obtain basic knowledge about computer architecture. Resources can be searched from csdn for the corresponding Lab source code and solution report.
In the second stage, I learned the compilation knowledge of 80386:
Step 1: carefully read the second version of Assembly Language (Wang Shuang), slightly read the Professional Assembly Language (Richard Blum), carefully read the X86 Assembly Language from the real mode to the protection mode (Li Zhong), and obtain the ability to write gasm by hand, nasm, a 16-bit/32-bit compilation Applet in wasm format, and can freely call C functions in the compilation, inline assembly in C functions or call assembly functions, focus on 80386 system knowledge.
In the third stage, read the early operating system code:
Step 1: carefully read the implementation of an orange's operating system (Yu Yuan) to obtain basic knowledge about the operating system's microkernel system.
Step 2: carefully read the complete Linux kernel comments (revised version v3.0 Zhao Yi) + UNIX operating system design (Maurice J. Bach) to obtain the basic knowledge of the operating system macro kernel system.
Linux 0.11 source code + bochs platform running environment:
Video links:Netease cloud class: Operating System Course, Harbin Institute of Technology
Hit-oslab-linux-20110823.tar.gz + linux complete annotation (Revised v3.0133
Supporting resources: https://github.com/Yuandong-Chen/Linux-0.11
Through the above steps, readers can obtain a solid foundation for operating system principles. It is important that all the above resources can be found online for free. You can give full play to your imagination and write your own 80386 system-based but unnetworked operating system. How to Write a networked operating system? This is the knowledge of computer networks and another learning path.