Sharing my operating system learning experience
Latest update time:2023-12-13
Reads:
When it comes to operating systems, no technical person can avoid it. Let me first talk about how I learned operating systems in the first place?
I also had this mentality back then. Before I started learning operating systems, I always felt that this thing would be difficult and I was hesitant to take the first step.
I still took this most difficult step. I read the operating system courses of Tsinghua University and Harbin Institute of Technology at Station B, and read some classic operating system books. The hard work paid off, and I soon mastered the operating system. Basic theoretical knowledge.
But it is a pity that my skills are limited. I can only familiarize myself with the operating system from all aspects of theory, and I cannot share it more deeply with you from the source code aspect.
Many people may think that it is easy to forget if you only learn the theory of operating systems. Without practice, they feel that learning is in vain.
Real knowledge comes from practice
, so the best way is to learn an operating system.
It’s easy to say it, but can we really do it with our hands on the operating system? Of course, if we just implement a "micro" operating system, it can still be achieved.
How to do it specifically? Please listen to me.
It is said that the operating system (OS for short) is one of the three romances of programmers. We often use words such as "soul, brain, kernel, and cornerstone" to describe it, which shows how important it is to computers.
For those who want to learn computer architecture and processor chips, operating systems should be a required course.
The criterion for measuring the level of learning should be
whether one can master a simple operating system
.
In the process of writing the OS by hand, I found the answers to many of the difficult and complicated problems I encountered before that were closely related to the operating system. for example:
-
Why does memory leak, why does the service process crash, and why can't files be opened?
-
Can MySQL's IO performance be improved further?
-
Why does the network service drop? What technology supports the model?
-
What does the Node.js I/O model look like?
In addition, when doing high-performance server programming, knowledge related to memory, process, thread, and IO is often used.
"Learning the operating system well can directly solve the problems you encounter at work." For this reason, it is already a "basic skill" that every programmer must practice.
This is indeed the case. As a "basic skill" that every programmer must practice
, it can directly solve many difficult problems in our work
.
For example, when doing
high-performance server programming
, memory, processes, and threads are often used. , IO and other related knowledge.
Moreover, I have always believed that it is necessary to spend a lot of time studying the underlying knowledge of the OS. Although the effect will not be seen in the short term, it is
an inevitable process from 0 to 1
.
Once you understand these basic skills, and then consider those popular technologies and demos that are "sought after", you can easily understand the advanced design behind them and understand the performance bottlenecks in the system.
The operating system
is
one of the three romances of programmers
.
Although the learning process is relatively boring, there are endless possibilities in practical applications. For technical people, even if it takes a lot of time and effort, it is still worth it.
As
"Computer Genius" Peng Dong
said:
"Life can be a mess, but the operating system is the light in the heart
.
"
Peng Dong's achievements in operating systems are quite admirable. There is a reason why he is called a "computer genius". He did not come from a major, but with amazing will and love, he taught himself microcomputer principles, programming languages, data structures and algorithms, read through operating system and hardware books, and independently developed two operations: LMOS under the x86 platform and LMOSEM under the arm platform. system.
LMOS has now released 8 test versions. It is a multi-process, multi-thread, multi-CPU, full 64-bit operating system kernel that supports virtual memory, with more than 100,000 lines of code.
It would be difficult to stick to such a huge project without a bit of "programmer's romance" spirit
.
His book "A Deep Dive into Embedded Operating Systems: Design, Architecture, and Development from Scratch" also inspired me a lot.
After decades of in-depth research on operating systems, he is very familiar with open source operating systems such as Linux, BSD, and SunOS, as well as the NT kernel of Windows. He also has extensive research on compilers, databases and other infrastructure.
It can be said that
in the field of operating systems, he is a well-deserved KOL and has a strong say
.
He knows very well what difficulties and obstacles there will be on this road, and what pitfalls there will be.
Therefore, I was very surprised when I heard that Peng Dong wrote a column "45 Practical Lectures on Operating Systems"
in Geek Time
. Many friends at that time subscribed immediately.
Recently I started playing again, and I still gained a lot from learning it again. The most surprising thing is that Peng Dong implements
the idea of
"learning operating systems without reading books"
throughout the column, and
guides you to complete an OS through supporting experiments
.
When you actually write an OS, you will have a deep understanding of the operating system. Understanding will be a qualitative leap.
The picture below is a "simplified version of the operating system knowledge system"
sorted out by Peng Dong
. Each small piece in the picture will be unfolded one by one as the course progresses. It is recommended to read it first.
Operating system simplified knowledge system diagram
He will take you
from 0 to 1, step by step, to implement a 64-bit multi-process operating system based on the x86 platform - Cosmos. You will
have your own operating system kernel
and a more thorough understanding of the Linux kernel.
By following this course, your operating system architecture design capabilities will be greatly improved, and you can also learn system-level software programming skills, which will be of great benefit to us in expanding the depth and breadth of our technology.
The most important thing is that
the job interview will also be a bonus
. Having written an operating system by myself, you really have "floating" capital, and your resume will naturally stand out.
Scan the QR code for a free trial????
Original price ¥199, year-end special price ¥139
New users today are only ¥68
Discount for "first 50 people" only
I remember that two months after this course
was launched, the number of subscriptions exceeded 10,000, and now nearly 63,000+ people have taken it
. This result is not surprising. After all, it is a rare opportunity for industry experts to write OS with their hands.
While catching up on updates, I can't help but admire Peng Dong's vast knowledge reserve and excellent expressive skills. You must know that the lower the level of knowledge, the harder it is to explain it thoroughly: you must use easy-to-understand language to "tell" the complex operating system; you must pay attention to grasping and sorting out the details and key points; you must deliver complex content to People with different ideological levels and different ways of thinking.
I just cut out a few reviews for reference:
I have to say that Peng Dong is very good at teaching. Not only does he explain the boring principles clearly, but his description is also full of magic, attracting us to dig deeper. This course also has several features that must be mentioned.
1. "Nanny-level" icon + code analysis, suitable for novices too
In order to facilitate "computer novices" to understand and quickly get started with practical operations, a large number of illustrations and detailed code comments are added to the course, which is enough to show Peng Dong's intentions and feel his "profound internal skills".
For example, the following virtual memory data structure design diagram, computer structure schematic diagram, file system framework diagram and process state switching flow chart, etc. Due to space limitations, this is only the tip of the iceberg. There are also a large number of illustrations and knowledge maps in the column.
For example, in the code examples in the course, code comments with this level of detail are relatively rare.
Excerpted from Lecture 9 of "45 Practical Lectures on Operating Systems"
Take a look - how to implement spin locks and semaphores in Linux?
2. Learn and practice at the same time, conduct comparative analysis, and strengthen your understanding of Linux.
When introducing the implementation of each kernel component, we will first explain the principles, and then take you to implement it based on the design understanding; and then compare it with the implementation of the Linux kernel. It can not only learn and practice at the same time, but also help you examine the Linux kernel from a "God's perspective".
3. Supporting source code to really "run" it
Each lecture in the column will be matched with working code and uploaded to gitee; you can follow the course step by step to implement it, or you can directly use the code provided in each lesson for debugging until you finally implement an operating system.
In fact, if you start "running", even if you just read and clone the code, you will have a deeper understanding of the operating system.
Cosmos system operation demonstration
4. Open source projects, new challenges
In order to better practice the course content, Peng Dong has recently made a "big plan" - preparing to establish an
open source community and operate Cosmos as an open source project
.
Readers of the column are expected to be the first batch of contributors.
In order to abandon historical baggage, the complete Cosmos in the future will open source system and CPU source code at the same time, and will also consider customizing chips according to needs. According to Peng Dong, he invited very excellent chip architects to design the CPU according to the characteristics of the operating system architecture. It is very "romantic" to think about it!
In addition, readers of the column can join Peng Dong's
"Operating System Exchange Group"
for free
. He often answers questions in the group. There are also many experts with profound technical skills here who communicate with each other and learn from each other just by looking at the chat records. To a lot.
After subscribing, click the link on the course details page to join the group
The editor lady also often appears in the group to encourage and supervise, which can be said to be accompanying learning. I believe you have joined many communication groups. This group is indeed very rare. It has a large gathering of big guys, a high density of knowledge, an active atmosphere, and a good learning experience.
Having said that, let’s take a look at the knowledge points and highlights of each chapter of the course.
One more point:
Original price ¥199, year-end special price ¥139
New users today are only ¥68
Discount for "first 50 people" only
Scan the QR code to view the catalog and try it for free????
Subscription once, valid forever
It is said that the age of 35 is a hurdle for programmers, but in fact, those who have hurdles are those who are neither up to standard nor half-full. As long as you have a solid foundation and diligently cultivate your internal skills, whether it is upper-level development or understanding of cutting-edge technology, you will have a natural buff.
Click
"Read the full text"
, and newcomers can get it for 68 yuan and realize the dream of an operating system from scratch!