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

以鼠标双击 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. layui父子页面方法互调

    父级页面调用子页面方法 layer.open({ type: 2, content: 'test/iframe.html', success: function(layero, index){ var ...

  2. go net包简记

    TCP服务端 go语言中可以每次建立一次链接就创建一个goroutine去处理,使用goroutine实现并发非常方便和高效. TCP服务端程序的一般处理流程1.建立并绑定 Socket:首先服务端使 ...

  3. Gdal随笔

    开始研究遥感影像的分割,尝试去通过gdal对影像进行读取并对图像进行分割.过程中遇到了许多问题,现总结如下. 1.error1:range must be finite 报这个错误是因为数组中有Nan ...

  4. docker:搭建ELK 开源日志分析系统

    ELK 是由三部分组成的一套日志分析系统, Elasticsearch: 基于json分析搜索引擎,Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片 ...

  5. 解决intellij idea新建maven项目,加载archetype慢的问题

    File->settings   在VM Options内输入 -DarchetypeCatalog=internal 重启idea

  6. React之JSX的语法细节

    带注释 import React, { Component, Fragment } from 'react' import './style.css' class TodoList extends C ...

  7. docker实战部署Javaweb项目

    一.部署环境说明 docker服务版本:version 18.09.0nginx服务版本:version: nginx/1.15.10redis服务版本:version: redis/5.0.3tom ...

  8. PyQt5官方教程+帮助文档+模块功能汇总

    写在开头 笔者自学PyQt5的过程中,在网上发现了不少友好的新手入门教程,比如: Archi的博客 PyQt5图形界面编程 但是学习PyQt5的最好方法是阅读官方文档 + 自己动手实践,笔者将分享官网 ...

  9. StarUML之二、StarUML初识

    为什么用StarUML UML建模工具比较常见的PowerDesigner ROSE StarUML starUML-开源免费(1-2百M),PowerDesigner-精细和一体化(6-7百M),R ...

  10. 同一台电脑安装python2&python3

    [安装之前,先了解一下概念] python是什么? Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. ...