【该文章知识来源《极客时间刘超老师-趣谈Linux操作系统》向大神致敬。
趣谈Linux操作系统(极客时间)链接:
http://gk.link/a/10iXZ
欢迎大家来一起交流学习,一起探索Linux内核的奥秘,一起修炼硬本领,升职加薪。哈哈】
目录
操作系统其实就像一个软件外包公司,其内核就相当于这家外包公司的老板。所以接下来的整个课程中,请你将自己的角色切换成这家软件外包公司的老板,设身处地地去理解操作系统是如何协调各种资源,帮客户做成事情的。
1.“双击 QQ”这个过程,都需要用到哪些硬件?
1.鼠标和键盘是计算机的输入设备--客户对接员
当客户告诉对接员需求的时候,对于操作系统来讲,输入设备会发送一个中断。这个时候客户发送的需求就被称为中断事件(Interrupt Event)。
2.显卡会有显卡驱动,在操作系统中称为输出设备驱动,相当于交付人员。
2.从点击 QQ 图标,看操作系统全貌
1.客户需求的产生
当我们双击QQ图标,产生一个中断,执行中断处理函数(运行QQ):操作系统发现双击的是一个图标,就明白了用户的原始诉求,准备运行 QQ 和别人聊天。
2.可执行文件=QQ程序的二进制文件
运行 QQ,相当于外包公司接了一个大单,需要立项交由项目组来处理。立项就需要项目执行计划书,说明这个项目打算怎么做,一步一步如何执行,遇到什么情况应该怎么办,它能做哪些事情,每件事情怎么做,先做啥后做啥等等。也就相当于QQ程序编译成的二进制代码.(QQ程序的二进制文件:项目计划书)
3.文件管理子系统(File Management Subsystem)
电脑上的程序(二进制代码的可执行文件)有很多,除了QQ,还有有道云笔记的程序、Word 程序等等,它们都以二进制文件的形式保存在硬盘上。硬盘是个物理设备,要按照规定格式化成为文件系统,才能存放这些程序。文件系统需要一个系统进行统一管理,称为文件管理子系统(File Management Subsystem)。(文件管理子系统:管理每一个项目计划书)
4.进程(Process)
当你从资料库里面拿到QQ这个项目执行计划书,然后开始执行这个项目。同理,当操作系统拿到 QQ 的二进制执行文件的时候,就可以运行这个文件了。QQ 的二进制文件是静态的,称为程序(Program),而运行起来的 QQ,是不断进行的,称为进程(Process)。(进程:执行项目计划书)
5.系统调用(System Call)
一个项目要想顺畅进行,需要用到公司的各种资源,比如说盖个公章、开个证明、申请个会议室、打印个材料等等。为了提高效率,设立个统一的办事大厅,明文列出提供哪些服务,谁需要可以来申请,然后就会有回应。该办事大厅,也就是系统调用(System Call)。(系统调用:为每个项目办事提供统一的办事入口)
5.进程管理子系统(Process Management Subsystem)
一旦项目正式立项,就要开始执行,就要成立项目组,将开发人员分配到这个项目组,按照项目执行计划书一步一步执行。为了管理这个项目,我们还需要一个项目经理、一套项目管理流程、一个项目管理系统,如果项目多,可能一个开发人员需要同时执行多个项目,这就要考验项目经理的调度能力了。在操作系统中,进程的执行也需要分配 CPU 进行执行,也就是按照程序里面的二进制代码一行一行地执行。于是,为了管理进程,我们还需要一个进程管理子系统(Process Management Subsystem)。如果运行的进程很多,则一个 CPU 会并发运行多个进程,也就需要 CPU 的调度能力了。(进程管理子系统:每个项目可以并发进行)
6.内存管理子系统(Memory Management Subsystem)
每个项目都有自己的私密资料,这些资料不能被其他项目组看到,这需要把不同的项目组分配到不同的会议室,当然会议室是有限的,需要有人管理和分配,并且需要一个会议室管理系统。在操作系统中,不同的进程有不同的内存空间,但内存是有限的,所以需要统一的管理和分配,这就需要内存管理子系统。(内存管理子系统:为每个项目进行提供运行空间)
操作系统内核体系结构图