2

再论计算机系统

  • 计算器系统由”躯体“和”灵魂“两部分组成

    • ”躯体“ : 构成计算机系统的电子设备(硬件)
    • ”灵魂“ :指挥 ”躯体“ 完成 ”动作“ 的指令序列 (软件)
  • ”躯体“ 核心 :中央处理器 (CPU)
  • ”灵魂“ 核心 :操作系统(OS)
计算机系统的诞生是为了执行数据处理(计算)任务。那么,如何获取计算任务,并反馈任务执行结果?
数据输入与输出是计算机系统不可获取的部分

image.png

计算任务执行流程

  • 通过交互设备或网络向计算机系统发起请求
  • 根据请求将任务指令加载进入内存
  • CPU 从内存中取指令,并逐条执行
  • 计算任务的最终结果暂存入内存
  • 内存数据通过交互设备或网络设备进行反馈

image.png

操作系统与进程概要

  • 什么是程序?

    • 程序的本质是指令和数据的集合

      • 指令:指示 CPU 执行动作的命令
      • 数据:CPU 执行动作的操作目标
  • 程序的分类

    • 应用程序:用户可直接使用,为用户提供直接帮助的程序
    • 程序中间件:多数应用程序的通用功能,用于辅助应用程序的运行
    • 操作系统:直接操作硬件设备,并为应用程序与程序中间件提供运行环境

当代计算机系统架构图

image.png

进程-程序的执行

  • 通常情况下,程序在操作系统上以进程为单位运行
  • 每个程序运行后由一个或多个进程构成
  • 进程是操作系统任务的基本单元,也是系统资源的基本分配单位
  • 程序是”死“的,进程是”活“的

    • 程序的本质只是二进制数据,不加载执行没有任何价值
    • 进程是计算机系统对程序的一次加载执行,即:执行计算任务的过程

程序 VS 进程

image.png

image.png

深入浅出驱动程序

应用程序与外部设备

  • 多数情况下,应用程序需要借助外部设备才能完成计算任务
  • 外部设备:除 CPU 与内存之外的其它计算机硬件(如:硬盘,网卡,显卡)

image.png

应用程序设备访问

  • 直接访问

    • 开发成本高:应用程序必须熟悉各类外设的硬件特性
    • 开发周期长:业务逻辑 + 设备逻辑
    • 应用场景难:其它应用程序可能同时访问外设
  • 间接访问

    • 应用程序通过软件层(驱动程序)接口以统一方式访问外设

设备驱动程序

  • 设备驱动程序是外设访问接口,对应用程序提供统一的外设访问方式

image.png

Linux 设备驱动模型

  • 抽象各种外设的特性,简化设备驱动开发方式
  • 设备类型:字符设备,块设备,网络设备,等
  • 对于统一类型的设备,可以通过统一接口进行访问

Linux 系统工作模式

Linux 设备驱动模型

image.png

存在问题

设备驱动程序并非唯一访问外设的方式

如何限制进程必须按照规则通过驱动程序访问外部设备?

Linux 系统工作模式

image.png

内核职责:以统一的方式有序的分配硬件资源,保证用户任务按照期望的方式执行。
  • 用户模式 (User Mode)

    • 执行应用程序私有代码,受限制的访问内存,无法直接访问外部设备
  • 内核模式 (Kernel Mode)

    • 执行内核代码,可访问所有硬件资源,可立即暂停进程的执行(进程管理)
    • 绝大多数设备驱动程序执行于内核模式

工作模式与系统调用

Linux 系统的工作模式:系统调用 (System Call)

  • 应用程序与操作系统内核的直接接口(表现形式为函数)
  • 系统调用决定了应用程序如何与内核打交道
  • 为什么需要系统调用

    • 系统资源有限,需要统一有序的调度
    • 多个进程可能访问同一资源,进而产生冲突
    • 一些特定的功能必须有操作系统内核完成(如:精确延时)
    • 。。。
  • 进程系统调用后,由用户模式切换到内核模式(执行内核代码)
  • 工作模式的转变通常由中断触发(不同于普通函数调用)
  • 用户进程通过系统调用请求内核完成资源分配,硬件访问等操作
  • 所有进程请求集中到内核,内核可统一调度处理,协调进程的执行

Linux 系统编程概要

Linux 系统的工作模式

计算机系统缩影

image.png

image.png

Linux 系统编程

涉及的内容

image.png


TianSong
737 声望139 粉丝

阿里山神木的种子在3000年前已经埋下,今天不过是看到当年注定的结果,为了未来的自己,今天就埋下一颗好种子吧