As of today, I have personally tossed with four gadgets: Gaoge Yiqu (music player), LMOS (x86_64 system Operating system kernel), LMOSEM (operating system kernel of ARM system), and a computer book that has just been released ("In-depth exploration of embedded operating systems: Design, architecture and development from scratch") as shown below:
In the fourth grade of elementary school, the school opened an information class. It was the first time in my life that I saw a real computer. It was a small and thick CRT monitor. Those computers were placed in the only room in the school. In a classroom with tiled floors, it is the cleanest classroom in the school. Since the school only had 12 computers at that time, we students had to share one computer in a group of 6 or 7 people. We had to take off our shoes during class, and soon the room would be filled with foot odor. What we are talking about is that we are playing Super Mario on a computer with DOS installed. Children born after 2000 may not remember this game. Everyone is careful when operating the computer for fear of damaging it. I know that computers are not that easy to break. Due to my physical condition, I moved slowly, and my classmates always grabbed the opportunity to get on the plane. In the end, I could only lie in front of the window alone and look at the mountains and trees in the distance. I admit that at that time, I still had the distant feeling in my heart...
Time is the cruelest. In the blink of an eye, it was 2008. I was 20 years old that year. That was the year I got my first computer. That night, the masters in the computer city went from assembling the machine to installing the operating system. Finally, I opened Qianqianjing Listening and listened to the song "One Cut Plum". It only took about 10 minutes. The skillful and brisk technique filled my heart with admiration. I thought at that time that I could become such a master. After dinner, I wanted to turn on Qianqianjingting again to play the song. At that time, I felt that listening to music on the computer was much more enjoyable than the tape player at home. The master stood behind me and kept me busy for a long time without success. The Qianqian Listening software had to shake its head and help me finish it. I actually couldn’t even use the WINXP start menu. At that time, I was extremely frustrated and couldn’t feel more embarrassed... The result was in June 2008 I reached the level of that master, and I said to myself disdainfully, should I become an installer?
In August 2008, I started my programming journey. To program, I need to learn various programming languages. The first programming language I learned was VB. In fact, I was deceived. I just learned it after hearing others say that VB is a very powerful language. After learning it, I felt that VB programming is just about drawing controls...setting control properties...writing a small amount of code to respond to events...only later did I learn it. I discovered that VB is a language that all cute girls in the Chinese Department of the university must learn. I also learned that VB programming is so simple because Microsoft has done so many things for us... But to prove that I have learned VB, I have to use It was about writing a software. What should I write? I thought of Qianqianjingting, which I admired very much at the time, so I planned to write a music player. It was not until March 8th Festival in 2009 that I started to use the audio decoding of BASS. It took about more than a month to finally complete a decent music player, and I chose a resounding name - Gaoge Yiqu. Gaoge Yiqu was developed based on the .net environment, Ji Play, A music player with sound effects and powerful scalability. Supports DirectSound, Kernel Streaming audio stream output, supports mp3; ape; wma;; flac; ogg; cda; tta; acc; ac3; MOD, etc. A variety of audio formats. It supports 10-band equalizer, multi-level Dolby surround, and fade-in and fade-out sound effects. It also has an intelligent file judgment program, a super decoding program, an efficient dynamic memory allocation program, and a music file management program. As shown below:
Later I started surfing the Internet and found that many high-tech software were impossible to implement using VB. Then I suddenly realized that VB was so LOW. Then I After knowing the C language, I felt that it was a high-level language, so I started to learn C like a zeal. The first C tutorial I read like a big student was "Lao Tan C". After reading it, In addition to being able to write the "hello world" program that is famous throughout the computer industry, I can't do anything else. If I can't do it, I won't do it. Then I toss in C and JAVA. The results are the same. I can only write a "hello world" program and work on it every day. I asked myself 10 times why this is, why is this happening. Fortunately, I have the Internet, which allowed me to discover algorithms and data structures. After all the hard work, I can finally write some software with small functions. Maybe it is not called that at all. Function, if that’s the case, then continue to toss, and sure enough, I discovered the operating system API again, and that’s how the word operating system officially appeared in my mind for the first time. Before that, I thought that the computer should be like this when you buy it. The circuit should support so many functions. Now I think about how stupid I must have been to have such an idea...
What is the operating system and what does it do? In order to solve these problems, I I read no less than five operating system theory books. These books are not for people to develop operating systems, but they made me understand that no matter how advanced the application software is, it is supported by the operating system. At the same time, I also know that the operating system is also software and its lower layer is hardware, but in general It is said that the operating system left a mysterious feeling in my impression. In fact, I am very interested in mysterious things. Faced with this mystery, there are only two choices: either give up or dig deeper. I chose the latter because I couldn't give up, and finally I made a crazy decision: the operating system was the software I wanted to write.
I think I have begun to be obsessed with it. In order to find out, I toyed with the existing operating systems like a pervert: LINUX NT MACH FREEBSB SOLARIS MINIX L4. I will look for any books related to these. , but this does not allow me to write the operating system, because I do not understand the hardware platform system, so I read various books related to the hardware layer. Most of them actually come from Intel's official PDF. Before that, I also learned microcomputer principles and assembly language.
As I read more books, I gradually came up with my own ideas and insights. I thought, since I am writing an operating system, why can’t I implement these ideas in code and put them on a real computer? I will verify it on the website, and I will have the prototype of my LMOS. Starting from the first line of boot code, refactoring the code again and again, facing inexplicable crashes and despairing again and again, but unwilling to give up in the heart, then the rest is continuous improvement, constant tossing, and finally finally It became the current LMOS. After several years of independent development, I have now released 7 test versions. It has developed from a 32-bit single-CPU architecture to a 64-bit multi-CPU architecture. Now LMOS is a full 64-bit operating system kernel under the x86_64 system with multi-process, multi-thread, multi-CPU, and virtual memory support. The code volume has reached 100,000 That’s a lot of lines. I know very well that for a brand new operating system to become practical in daily life, it needs to go a long, long way, and the end of the road is likely to be failure. Because the behavior of a person independently developing an operating system from scratch is a bit crazy and a bit psychotic. I simply named my operating system LMOS (liberty, madness, operating, system). Whatever, I'm not a normal person anyway.
Due to the emergence of ARM, people have produced various small, low-power smart hardware, which are embedded in common electronic products such as mobile phones, watches, refrigerators, air conditioners, televisions, washing machines, etc. These commonly used electronic products are made more powerful and smarter, and they can be connected to the network for users to control remotely, thus greatly improving people's lives. So in the second half of 2013, I couldn't hold back my curiosity and started to learn embedded systems, and wrote an embedded operating system - LMOSEM. Due to my previous skills and the simplicity of the ARM system, it is not difficult to learn and implement embedded operating systems. LMOSEM is based on the ARM system, but LMOSEM and LMOS are completely different operating systems, different architectures, and different codes. In addition to reusing the relevant data structures in the LMOS driver model. At the same time, LMOSEM is much simpler than LMOS, and the kernel part only has more than 10,000 lines of code.
Since the amount of LMOSEM code is very small, it is very suitable for writing a book. Wouldn’t it be great to share it? The code has been written, how difficult is it to write a book? I just thought about it, and I just started writing. I just discovered it after writing. Writing a book is much more difficult than writing code, but I am a person who is unwilling to give up, so I bite the bullet and continue writing. This book aims to design and write a working embedded operating system from scratch, starting from a detailed introduction to ARM Starting from the platform architecture, we discuss the development environment and installation development tool chain of the embedded operating system, and then proceed to the architecture design of the embedded operating system. Then we start from the first line of code of the embedded operating system and discuss the implementation of the embedded operating system in detail. HAL layer, memory management, interrupt management, driver model, process management, file system, system API and other important components. Each component starts from designing the data structure, and discusses in detail its implementation details and its relationship with the hardware platform and other components. relationship, and finally presents a complete, working embedded operating system to readers, allowing readers to understand the essence of the operating system from a practitioner's perspective. The book titled "A Deep Dive into Embedded Operating Systems: Design, Architecture, and Development from Scratch" is now available.
The latest version of LMOS adds a graphics driver and ACPI power management driver as shown below. In the future, I will continue to toss around the two major operating systems of LMOS and LMOSEM, which will make these two operating systems more and more powerful, maybe There will be more books. My purpose is to live forever and toss endlessly, so this is not the end, this is the beginning...
About my blog:
http://blog .chinaunix.net/uid/28032128.html
http://www.it168.com/redian/lmos/
QQ: 609379965
Weibo: http://weibo.com/ LMOSKERNEL
About LMOS:
http://www.iqiyi.com/w_19rs4e0k05.html#vfrm=2-3- 0-1
About LMOSEM:
About "In-depth exploration of embedded operating systems: from scratch Start designing, architecture and development》
If you are interested in supporting, please click: http://product.china-pub.com/4879889, or share and spread this blog post which also supports LMOS, first here Thank you! !