How to Learn operating system principles
I have learned about computer technology and have some opinions on how to learn the operating system principles. Now I want to help you!
How to Learn the operating system, first of all, how to program the operating system, in the age of no operating system. This is the primary issue. I wonder if anyone has read Intel's official CPU documentation, which is divided into application-level programming, system-level programming, and instruction set. Among them, the most complex system-level programming, I do not mention the content, from the perspective of the file size, the application-level programming volume of the IA-64 Programming Manual is 2 MB, but the system volume has 6 MB. Even the system volumes in the IA-32 Programming Manual are far more than the application volumes. Of course, I haven't read these contents yet, but there are many similarities in the directory, such as CPU memory addressing, virtual memory management, interrupt and protection, we can see from Intel's CPU documentation that, although each CPU or machine has its own characteristics, the core issue to be solved by the current CPU is just a few, the solution is like addressing memory, managing virtual storage, implementing interruptions, and protecting resources.
All programming colleagues must be very clear that the computer operating system is to provide services for application-level programming, and what services are provided, such as how to address memory, how to manage virtual memory, how to interrupt, how to manage disks, and how .... And so on. The operating system removes the most important part of system-level programming for us. Therefore, we are comfortable using application-level programming, such as C ++ programming, the memory address for allocating a variable with int comes. When a function needs to call another function for execution, the execution route can jump to that function. The memory is not enough and it doesn't matter, the operating system automatically starts virtual memory (only a little slower), so application-level programming is the most comfortable, and the operating system-level programming is more difficult, and directly using single chip microcomputer may be the most difficult. Even if it is operating system-level programming, many things about the CPU underlying layer may have been done. What you need to do is to understand what features your operating system has done, how to call. The single-chip microcomputer is not that fun, and I have never done it. I think it may be that the single-chip microcomputer is programmed directly to a CPU using assembly, and it is likely that there is no operating system, in this way, the complex and heavy work of the operating system, such as memory management, interrupt, and process jump, must be undertaken by the programmer, the programmer's burden is much greater than the current application-level programming.
I guess, when there is no operating system, every computer programmer's day may not be as good as it is now, because every program requires you to allocate management memory by yourself, you should not only consider how to efficiently manage the memory, but also know how to perform the process jump and so on. The implementation methods of these fine jobs on different CPUs are also different, it is not until you have solved these problems that you have considered how to compile the program logic in your application. Of course, although the system-level implementation details of the CPU underlying layer are different, it is the same as what issues should be solved in the CPU system level part. Therefore, in Intel's official documentation, either the IA-32 or the system volumes of the two programming manuals are just a few pieces of content.
Since the system-level solution has the same tasks, Every programmer may consider these aspects during programming, why don't we extract the same tasks that these programs need to solve? This forms the kernel tasks of the operating system and the operating system, it is dedicated to solving several system-level tasks that must be solved by early computer programmers every time. As a result, it is very light for application-level tasks and I forgot where I saw them, it seems that the previous database system belongs to the application software. It may also be because every application software, together with the operating system, needs a database. Therefore, the database system is provided separately as the system software. I don't understand why file systems are used in the current operating system. Isn't it better to use database systems directly? It serves both users and systems!
I think that if you want to learn the operating system principles, you do not have to go to the so-called operating system principles books. You do not have to go to foreign languages, because the system-level programming volumes of the CPU documentation provided by international CPU manufacturers are truly the best and original textbooks, most of the operating system tasks you want to compile are to solve the tasks in the system volumes. Once I chatted with a single-chip computer guy on QQ, who was a little younger than me. I said that the underlying operating system is very difficult at the moment, and he said that it was difficult, he was able to create an operating system right away, and even the compiler could do it. I was so scared at the time that it was so amazing at a young age. Now I understand that I am a single-chip computer, generally, the operating system will be used. Because each single-chip microcomputer program is used to deal with the underlying system, the single-chip microcomputer program will naturally be familiar with the kernel of an operating system.
I suggest that you, like me, be interested in operating system principles and those interested in the underlying system, go directly to Intel's official materials. What are the operating system principles, which tasks should be solved? Check the system volume programming manuals of different CPUs to find out the same tasks and logic and summarize how the operating system is done by yourself. No doubt this methodology will be the most attended, in addition, it may be more profound than general learning methods.
I also advise you to look at the operating system, kernel, and other underlying systems. After reading it, you will think that application-level programming will be smoother and easier to learn. I learned it in this way. I learned MFC and then started to learn application-level programming of Intel CPU. Now I decided to start learning from the system level. At present, I will also go to the msdn English website to check the content about MFC, but I don't think it is mainly because of compiling the MFC application, instead, I want to see how Microsoft uses a system to provide services for all application-level programming. This entire set of structures is constructed. Oracle databases are my next wave of goals following the Intel documentation, I also want to see what a database architecture is like. Can I embed it into an operating system.
I want to move forward with like-minded friends and wish you a pleasant programming and a pleasant job. Haha!