首先,我们知道操作系统是管理和控制计算机硬件与软件资源的计算机程序。这里把操作系统想象为一个软件外包公司,其内核就相当于这家外包公司的老板,那么我们可以把自己的角色切换成这家外包公司的老板,设身处地的去理解操作系统是如何协调各种资源,帮客户做成事情的。

以鼠标双击 QQ 到运行整个过程理解操作系统:

  1. 鼠标是输入设备,鼠标双击 QQ 要通过输入设备驱动知道鼠标的动作(外包公司要通过客户对接员知道客户的需求);
  2. 鼠标双击后产生一个指令,然后会产生中断,调用一个中断处理函数,弄明白指令的含义(了解客户的需求,然后开始立项,立项就需要项目计划书,即项目程序逻辑);
  3. 设定好了执行步骤,操作系统拿到二进制执行文件,就可以运行这个文件了(QQ 的二进制文件是静态的,称为程序,而运行起来的 QQ 是不断进行的,称为进程);
  4. 二进制程序是保存在硬盘上的,需要用到文件存储系统;进程的执行也需要分配 CPU 执行,为了管理进程,还需要进程管理子系统
  5. 项目立项需要用到各种资源(如开证明、盖公章、打印材料等),有一些操作放在系统内核,不能随便调用,统一在办事大厅,即系统调用,系统调用会列出哪些接口可以调用;
  6. 每个项目(不同的进程)都有自己私密的资料不能被其他项目组看到,所以需要根据项目来管理和分配空间,这就需要内存管理子系统
  7. 项目执行的时候,有了一定成果后要给客户展示,需要交付人员(输出设备驱动程序)交付给显示器(输出设备);
  8. QQ 启动之后,有一部分代码会在显示器上画一个对话框,并且将键盘的焦点放在了输入框里面,CPU 根据这些指令,就会告知显卡驱动程序,将这个对话框画出来;
  9. 当用户通过键盘打字时,键盘也是输入设备,也会触发中断,通知相应的输入设备驱动程序;
  10. 输入成功之后按 enter 键,通过键盘驱动程序告诉操作系统,操作系统会找到 QQ,QQ 将用户的输入发送到网络上(QQ 进程是不能直接发送网络包的,需要调用系统调用,内核使用网卡驱动程序进行发送)。

从外包公司的角度理解操作系统示意图如下

操作系统内核体系整体结构图如下图所示

最新文章

  1. Google C++单元测试框架GoogleTest(总)
  2. myeclipse2015CI Server显示derby服务器去除方法
  3. awk 统计出现次数--转
  4. 【SPOJ QTREE2】QTREE2 - Query on a tree II(LCA)
  5. lvM增减教程-转
  6. Spring学习笔记(一) Spring基础IOC、AOP
  7. NOIP2009 最优贸易
  8. 解决m2eclipse之Unable to update index for central |
  9. SQL2012尝试读取或写入受保护的内存。这通常指示其他内存已损坏
  10. Problem B The Blocks Problem(vector的使用)
  11. PHP :Call to undefined function mysql_connect()
  12. 链表法解决hash冲突
  13. kubernetes云平台管理实战: 故障自愈实战(四)
  14. K3 WISE安全认证方式
  15. 洛谷P4155 [SCOI2015]国旗计划(贪心,树形结构,基数排序)
  16. cookie与session的区别与关系
  17. LR报错Error -27780: [GENERAL_MSG_CAT_SSL_ERROR]connect to host "XXX.XXX.com" failed解决方法
  18. 【shell编程】之基础知识-语法
  19. ajax中文乱码问题的总结
  20. Deep Reinforcement Learning 基础知识

热门文章

  1. Go语言实现:【剑指offer】树的子结构
  2. 实例探究Aspectj,解析SentinelResourceAspect
  3. [redis读书笔记] 第一部分 数据结构与对象 字典
  4. [Effective Java 读书笔记] 第二章 创建和销毁对象 第六-七条
  5. 《Head first设计模式》之装饰者模式
  6. 想学大学计算机课?这 37 门 CS 专业必修课,了解一下
  7. MySql优化之mycat
  8. 思科路由器、交换机配置Console 线线序 (亲测可以)
  9. 发布到IIS的php网站,所有的页面打开都是空白,目录权限问题,已解决
  10. JS数据类型和堆栈+变量比较和值的复制+参数传递和类型检测