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

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

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

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

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

《趣谈 Linux 操作系统》学习笔记(二):对 Linux 操作系统的理解的更多相关文章

  1. linux初级学习笔记二:linux操作系统及常用命令,文件的创建与删除和命名规则,命令行展开以及linux中部分目录的作用!(视频序号:02_3)

    本节学习的命令:tree,mkdir,rmdir,touch,stat,rm 本节学习的技能:Linux中主要的目录作用以及特殊的目录文件: 文件的命名规则,命令行展开: 文件的创建与删除: Linu ...

  2. 深挖计算机基础:趣谈Linux操作系统学习笔记

    参考极客时间专栏<趣谈Linux操作系统>学习笔记 核心原理篇:内存管理 趣谈Linux操作系统学习笔记:第二十讲 趣谈Linux操作系统学习笔记:第二十一讲 趣谈Linux操作系统学习笔 ...

  3. Docker学习笔记二(linux下安装Docker)

    Docker学习笔记二(linux下安装Docker) 1.在线安装linux Docker 这种方式首先要保证linux 环境下可以上网,当然,小编是在自己的电脑上安装了虚拟机,在虚拟机上安装了,l ...

  4. Linux内核学习笔记二——进程

    Linux内核学习笔记二——进程   一 进程与线程 进程就是处于执行期的程序,包含了独立地址空间,多个执行线程等资源. 线程是进程中活动的对象,每个线程都拥有独立的程序计数器.进程栈和一组进程寄存器 ...

  5. kvm虚拟化学习笔记(二)之linux kvm虚拟机安装

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

  6. linux命令学习笔记(25):linux文件属性详解

    Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组. 最近访问或修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [root@loc ...

  7. ucore操作系统学习笔记(二) ucore lab2物理内存管理分析

    一.lab2物理内存管理介绍 操作系统的一个主要职责是管理硬件资源,并向应用程序提供具有良好抽象的接口来使用这些资源. 而内存作为重要的计算机硬件资源,也必然需要被操作系统统一的管理.最初没有操作系统 ...

  8. Linux操作系统学习笔记

    关于Linux详细介绍可以参见:http://blog.csdn.net/hguisu/article/details/6122513 关于Linux的常用命令可以参见:http://blog.csd ...

  9. 马哥Linux SysAdmin学习笔记(二)

    Linux网络属性管理: 局域网:以太网,令牌环网 Ethernet:CSMA/CD 冲突域 广播域 MAC:media access control地址 48bit: 24bits 24bits  ...

  10. linux命令学习笔记(24):Linux文件类型与扩展名

    Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序 而创建的比如file.txt.file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux ...

随机推荐

  1. TensorFlow中使用GPU

    TensorFlow默认会占用设备上所有的GPU以及每个GPU的所有显存:如果指定了某块GPU,也会默认一次性占用该GPU的所有显存.可以通过以下方式解决: 1 Python代码中设置环境变量,指定G ...

  2. Jenkins: QQ/Wechat机器人群消息通知Job构建结果

    简介 Jenkins是持续化集成的一个核心部件,它上游从仓库(gitlab)等拉取代码,经编译构建,将应用发布至下游目标环境:构建结果通知的方式有很多,现成的插件有邮件和钉钉方式,但是就方便的角度,通 ...

  3. mongodb副本集群搭建

    一.环境介绍 1.机器信息 10.40.6.68 10.40.6.108 10.40.6.110 软件环境为centos 6.x 2.mongodb 下载链接地址 https://www.mongod ...

  4. 来看看你对Python变量理解到位了没有

    变量是编程的基础概念,Python 的变量也看似很简单,但是如果理解不当,生搬硬套,可能会遇到一些麻烦. 下面用 10 个代码示例展示 Python 的 变量 本质. 以下内容有对应的 视频 手把手详 ...

  5. PHP独立环境配置

    php 下载地址: http://windows.php.net/download/ Apache 下载地址: http://www.apachelounge.com/download/ mysql ...

  6. 移动端键盘顶起遮挡输入框&offsetTop值不准问题

    先上图    通常在开发中我们会遇到这样输入框被遮挡的问题,那么该怎么解决呢? 方案一(css): 首先,把置底元素设置成,在页面的底部而非屏幕的底部 .page .bottom { position ...

  7. 学习MVC框架,处理分页和删除分页转跳的问题

    第一次写博客,文采不好请多见谅,这里主要是写一下,自己是如何处理分页问题,我想初学者也遇到过这个问题. 分页的情况下,编辑信息有返回和编辑2个按钮,操作后都是应该返回原分页界面,使用TempData把 ...

  8. 剖析Java OutOfMemoryError异常

    剖析Java OutOfMemoryError异常 在JVM中,除了程序计数器外,虚拟机内存中的其他几个运行时区域都有发生OutOfMemoryError异常的可能,本篇就来深入剖析一下各个区域出现O ...

  9. Linux运维--15.OpenStack vm使用keepalived 实现负载均衡

    外接mariadb集群 实现负载均衡 实验环境 10.0.1.27 galera1 10.0.1.6 galera2 10.0.1.23 galera3 10.0.1.17 harpoxy1 hapr ...

  10. SpringCloud学习之—Eureka集群搭建

    Eureka集群的搭建 上次说过了在SpringCloud应用中使用Eureka注册中心,用来对服务提供者进行服务注册与发现,但同时,它也是一个"微服务",单个应用使用空间有限,因 ...