01 - Linux系统概要(再论计算机系统)

news2024/9/21 11:56:49

---- 整理自狄泰软件唐佐林老师课程

1. 再论计算机系统

计算机系统由躯体和灵魂两部分组成
– 躯体:构成计算机系统的电子设备(硬件)
– 灵魂:指挥躯体完成动作的指令序列(软件)
躯体核心:中央处理器CPU
灵魂核心:操作系统OS

1.1 问题

思考:

  • 计算机系统的诞生是为了执行数据处理(计算)任务。
    那么,如何获取计算任务,并反馈任务执行结果?

数据 输入输出 是计算机系统不可或缺的部分

在这里插入图片描述

1.2 计算任务执行流程

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

在这里插入图片描述

1.3 什么是程序?

  • 程序的本质是 指令数据 的集合
    • 指令:指示CPU 执行动作的命令
    • 数据:CPU 执行动作的操作目标

1.4 程序的分类

  • 应用程序:用户可直接使用,为用户提供直接帮助的程序

  • 程序中间件:多数应用程序的 通用功能,用于辅助应用程序的运行

  • 操作系统:直接操作硬件设备,并为应用程序与程序中间件提供运行环境

1.5 当代计算机系统架构

在这里插入图片描述

1.6 进程–程序的执行

  • 通常情况下,程序在操作系统上以进程为单位运行
  • 每个程序运行后由一个或者多个进程构成
  • 进程是操作系统任务的基本单元,也是系统资源的基本分配单元
  • 程序是“死”的,进程是“活”的
    • 程序的本质只是二进制数据,不加载执行就没有任何价值
    • 进程是计算机系统对程序的一次加载执行,即:执行计算任务的过程

1.7 程序 VS 进程

在这里插入图片描述

1.8 应用程序与外部设备

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

在这里插入图片描述

应用程序设备访问:

  • 直接访问
    • 开发成本高:应用开发者必须熟悉各类外设的硬件特性
    • 开发周期长:业务逻辑+ 设备逻辑
    • 应用场景难:其它应用程序可能同时访问外设
  • 间接访问
    • 应用程序通过 某软件层(驱动程序)接口 以统一方式访问外设

1.9 设备驱动程序

设备驱动程序 是外设访问接口,对应用程序提供统一的外设访问方式
在这里插入图片描述

1.9.1 Linux设备驱动模型

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

在这里插入图片描述

驱动程序对上:write()、read()
对下:为操作系统准备的函数

OS定义的规范:驱动程序必须实现的函数

1.9.2 存在的问题

设备驱动程序仍然可能同时被不同进程使用,设备驱动程序 并非唯一 访问外设的方式。

问题:

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

1.9.3 Linux系统的工作模式

在这里插入图片描述

  • 用户模式(User Mode)
    • 执行应用程序私有代码,受限制的 访问内存,无法直接访问外部设备
  • 内核模式(Kernel Mode)
    • 执行内核代码,可访问 所有硬件资源,可立即暂停进程的执行,……
    • 绝大多数设备驱动程序执行于内核模式
    • 内核职责:以统一的方式有序的分配硬件资源,保证用户任务按照期望的方式执行。

1.9.4 工作模式的切换:系统调用(System Call)

  • 应用程序与操作系统内核直接的接口(表现形式为函数)
  • 系统调用决定了应用程序如何与内核打交道(应用程序如何向操作系统发送请求)

问题:

  • 为什么需要系统调用?

    • 系统资源有限,需要统一有序的调配
    • 多个进程可能同时访问同一资源,进而产生冲突
    • 一些特定的功能必须由操作系统内核完成(如:精确延时)
    • ……
  • 系统调用的本质:

    • 进程系统调用后,由 用户模式切换到内核模式(执行内核代码)
    • 工作模式的转变通常由 中断 触发(不同于普通函数调用)
      中断==>系统调用==>工作模式的切换==>系统规则的强制执行==>应用程序的规范运行==>进而得到了一个软硬件协同工作的计算机系统
    • 用户进程通过系统调用请求内核完成资源分配,硬件访问等操作
    • 所有进程请求集中到内核,内核可统一调度处理,协调进程的执行

在这里插入图片描述
在这里插入图片描述

1.9.5 Linux 系统编程

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64199.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022-12-05 优化el-tree懒加载选人树

今后就都拼抵抗力了嗷 需求描述 此处有一棵懒加载树(可选人),右侧展示已选中的人。且父子关联,可以通过选中一个部门勾选所有子节点。问题是,选中父节点,当子节点未加载时,是获取不到勾选的子…

Redis配置、持久化以及相命令

Redis 什么是Redis Redis(远程字典服务器)是一个开源的、使用C语言编写的NoSQL数据库 Redis 基于内存运行并支持持久化,采用key-value(键值对)的存储形式,是目前分布式架构中不可或缺的一环。 Redis服务…

新来的性能测试工程师工资25K,看了他做的性能测试,那才真叫牛

一直深耕于互联网行业的测试工作,前期测试主要以项目为主,也就是 一个人负责2-3个项目 的测试工作,当然包括项目上功能、自动化和性能等一切测试工作。 我有几个朋友也在互联网大厂工作,从他们当中了解到其实真正的互联网大厂&…

【前端CSS】网站都变成灰色了,它是怎么实现的?(含源代码解析)

目录:网站都变成灰色了,它是怎么实现的?一、前言二、如何实现的三、代码的理解3.1 CSS3 filter(滤镜) 属性3.2 定义和使用3.2.1 CSS动画演示3.2.2 JS语法演示3.3 浏览器支持3.4 CSS 语法3.5 Filter 函数四、实例展示4.1 模糊实例4.2 Brightne…

3、JSP——Servlet、IDEA创建Web项目、IDEA创建JSP页面

目录 一、Servlet的概念 二、Servlet的作用 三、IDEA中创建Web项目 四、手动部署 五、自动部署 1、IDEA部署Tomcat服务器 2、IDEA部署JavaWeb项目 3、JSP页面 一、Servlet的概念 (1)Servlet:Server Applet的简称,是运…

云服务器配置Code-Server环境并运行Python和C++

目录1、前言2、部署流程2.1 前置准备2.2 运行docker安装Code-Server3、运行Code-Server3.1 配置运行环境3.2 运行Python3.3 运行C1、前言 云服务器需要配置C开发环境,了解到有code-server这个VsCode提供的云端服务,因此选择在云服务器上部署。 2、部署流…

D3--FPGA IIC接口通信2022-12-05

1.IIC简介 1.1 IIC概述 IIC即 Inter-Integrated Circuit(集成电路总线),是由 Philips 半导体公司在八十年代初设计出来的一种简单、双向、二线制总线标准。多用于主机和从机在数据量不大且传输距离短的场合下的主从通信。主机启动总线,并产…

[附源码]计算机毕业设计少儿节目智能推荐系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Android 基础知识4-2.2常用控件提示(Toast)

效果图: 介绍: Toast是Android提供的“快显讯息”类,Toast类的使用非常简单,而且用途很多。比如,当退出应用程序时,可以用它来提示用户“需要更新”,或者当在输入框中输入文本时,可以…

含有双硫键的交联剂NHS-PEG1-SS-PEG1-NHS,NHS-SS-NHS,活性酯-双硫键-活性酯

基础产品数据(Basic Product Data): 中文名:活性酯-双硫键-活性酯 英文名:NHS-SS-NHS,NHS-PEG1-SS-PEG1-NHS 结构式(Structural): 详细产品数据(Detailed Pro…

批量查询谷歌PR权重的方法有哪些?是什么影响着谷歌PR值?

批量查询谷歌PR权重的方法有哪些? 查询谷歌PR权重最简单最最直接的方法就是使用站长工具查询,具体操作如下: 首先打开站长工具,在域名输入框输入网站的域名(一行一个); 然后勾选需要查询的功能&…

NumPy模块使用介绍

NumPy使用介绍1.NumPy科学计算库介绍和环境准备 ​ NumPy(Numerical Python)是Python的⼀种开源的数值计算扩展。提供多维数组对象,各种派⽣对象(如掩码数组和矩阵),这种⼯具可⽤来存储和处理⼤型矩阵&…

Qt下多线程的四种使用方法总结及代码示例

文章目录前言一、继承QThread,重写run()函数二、继承QObject,使用moveToThread()函数三、继承QRunnable,重写run()函数,使用QThreadPool线程池四、使用QtConcurrent的run()函数五、示例代码六、下载链接总结前言 在之前的Qt开发工…

时间序列分析的基本流程(R语言版——实验篇)

数据处理 1.导入数据&#xff08;.csv&#xff09; 能导入绝大所数形式的格式文件 ex52<-read.table("C:\\Users\\33035\\Desktop\\习题5.2数据.txt",headerT,fileEncoding GBK) #header &#xff1a;T:表示留第一行 #fileEncoding:有中文时最好改为GBK 2.对数…

MySQL---DDL

MySQL简介DDL操作 文章目录MySQL简介DDL操作数据库分类关系型数据库&#xff08;SQL&#xff09;非关系型数据库&#xff08;NOSQL&#xff09;区别DBMSMySQL简介概念特点MySQL运行机制SQL通用语法结构化查询语言分类DDL操作数据库操作表查询创建数据类型数值类型字符串类型日期…

入行测试已经4年了 ,进阿里后迷茫了3个月,做完这个项目我决定离职....

转行测试 我是大专非计科&#xff0c;我转行之前从事的工作是商场管理&#xff0c;努力了4年左右的时间才做到楼层经理&#xff0c;但是工资太低并且事情太多&#xff0c;薪资才6K。 更多的是坚定了自己的想法&#xff0c;我要改变自己 恰好有几个大学同学在互联网公司工作&a…

微电网重构|基于群稀疏性的机会约束微电网重构(Matlab代码和Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清…

python算法对音频信号处理Sonification :Gauss-Seidel迭代算法

可以将44.1kHz单通道.wav文件中的一秒读取到长度为44100的数组&#xff08;称为b&#xff09;中。给定矩阵A&#xff0c;我们寻求系统Ax b的解。通过Gauss-Seidel的迭代&#xff0c;向量如果我们将b记录的录音&#xff0c;则将一些白噪声作为我们的初始猜测&#xff0c;并在每…

JVM常见面试题

目录 一、JVM内存划分 二、JVM类加载 1、什么是类加载 2、类加载的过程 2.1 加载 2.2 连接 2.3 初始化 3、何时触发类加载 4、双亲委派模型 4.1 什么是双亲委派模型 4.2 双亲委派模型的优点 三、JVM的垃圾回收机制 1、什么是GC 2、GC回收哪部分内存 3、判定垃圾…

# Monaco Editor 使用

Monaco Editor 使用 文章目录Monaco Editor 使用安装依赖版本问题vue2Vue3webpack-dev-servermonaco-editor-webpack-pluginVersion Matrix集成步骤Vue2 配置 monaco-editor-webpack-plugin 插件Vue3 vue.config.js测试页面实例属性说明支持的语言类型报错解决控制台报错效果图…