1、操作系统引论

一、操作系统

会使用linux系统
建议大家先学会linux的基础指令,可以看菜鸟教程网站进行学习。

1、各种定义

  • 操作系统定义
    • 管理计算机的 硬件软件资源, 能对各类作业进行调度,方便用户使用计算机的程序集合
    • 操作系统运行在内核态(也叫管态,核心态)。在这个状态,操作系统可以对所有的硬件访问。

注意:操作系统是最基础的软件

  • 用户接口程序定义
    • 用户接口程序有shell和GUI
      • shell:用户与操作系统交互的程序,基于文本的是shell。
      • GUI:用户与操作系统交互的程序,基于图标的是GUI。

注意:用户接口程序并不属于操作系统。

  • 信息
    • 位(bit)+ 上下文(context)= 信息
      • 位(Bit) 是计算机中最小的数据单位,表示一个二进制的 0 或 1
      • 上下文 是数据所处的环境或规则,决定了如何解释这些位
    • ASCII码构成的文件就是文本文件
    • 其余是二进制文件
  • 内核态和用户态
    • 内核态:
      • 操作系统的“核心大脑”,权限高但需谨慎操作。
    • 用户态:
      • 普通程序的“沙箱”,权限受限但安全
        • 所以操作系统会把一部分代码放在内核态另一部分放在用户态保证安全
  • 程序接口
    • 普通用户无法直接使用程序接口,而是使用系统调用来用程序接口。

在这里插入图片描述

2、程序被其他程序翻译成不同格式

在linux的gcc编译器下。我们有一些对文件的操作。操作系统和编译器是辅助关系

这些操作是【巧妙记忆:ESc iso】
①预处理阶段:

  • 使用gcc -E xxx.c -o xxx.i命令
  • 作用:处理 #include、#define、#ifdef 等预处理指令。

②编译阶段:

  • 使用gcc -S xxx.i -o xxx.s命令
  • 作用:将预处理后的代码转换为汇编代码。

③汇编阶段:

  • 使用gcc -c xxx.s -o xxx.o命令
  • 作用:将汇编代码转换为机器码(二进制目标文件)。

④链接阶段:

  • 使用gcc xxx.o -o xxxx命令
  • 作用:将目标文件与库文件(如 libc.so)链接,生成可执行文件。

如果我们使用world.c文件进行以上操作。那这4个阶段将构成编译系统(compilation system)。那么命令的执行过程如下图:
在这里插入图片描述

3、面临的问题

当一个代码输入到操作系统上,我们的硬盘【不同的用户,硬盘的来源是不同的,材质会不同等等】该如何读取呢?等等。
所以我们就需要用到操作系统的4个重大部分,也是未来学习的过程中重点知识。

  • 运行任务的管理:进程和线程、调度和同步机制
  • 运行任务的存储管理:内存管理
  • 运行任务的外设管理:I/O设备
  • 存储数据设备的管理:文件管理

二、硬件

在这里插入图片描述
上面这张就是一个硬件分布图【看看就行了,不要死记硬背】。

1、CPU

中央处理单元(CPU),简称处理器

  • CPU作用:处理和执行指令。
  • CPU的寄存器:存储下一条要执行的指令。
    • 通用寄存器
    • 程序计数器PC
      • 作用:存储下一条要执行的指令的内存地址
    • 堆栈指针SP
      • 作用:指向当前堆栈的顶部地址,管理函数调用时的栈操作。能保护信息和恢复信息
    • 指令寄存器(IR)
      • 作用:存放当前执行指令
    • 状态寄存器(FLAGS)
      • 作用:记录运算结果状态(如零标志ZF、进位标志CF)。
      • PSW:并不是一直需要保存,而是运行状态才需要。在记录状态【已经没有运行了】不用。
  • CPU的算术逻辑单元ALU
    • 作用:执行算术和逻辑运算。
  • 指令集架构
    • 处理器想要处理一条指令,也需要通过一定的规则,这个规则就是指令集架构。
    • 指令类型如下:
      • 加载指令:用于将数据从内存加载到寄存器中。
      • 存储指令:用于将数据从寄存器存回到内存中。
      • 运算指令:用于对来自寄存器和内存的操作数进行运算,例如 add 指令将两个操作数相加并将结果保存在寄存器或内存中。
  • CPU的流水线
    • 当CPU正在执行第N条指令时,它可以同时解码第N+1条指令,并读取第N+2条指令,这种形式就叫流水线
    • 在这里插入图片描述
  • CPU的超标量
    • CPU中可以有多个执行单元,例如一个做加法运算,一个做乘法运算。在它们做运算的时候,把许多取指单元和解码单元放入缓存区(cache)中,等到某一个执行单元有空了,就把缓存区中的它们拿一个出来执行。虽然看起来指令乱序了,实际上工作人员肯定设计方法来有序进行。
    • 在这里插入图片描述

2、内存

理想情况下,内存应该是非常快速的(比执行一条指令还要快,以避免拖慢CPU的执行效率),同时容量足够大且成本低廉。然而,当前的技术手段无法同时满足这三个要求。因此,存储系统采用了一种分层次的结构来解决这个问题
在这里插入图片描述

2.1、 寄存器

  • 寄存器与CPU同样的材质,跟CPU一样快

2.2、 高速缓存(Cache)

  • 位于CPU与主存(内存)之间的超高速临时存储器,由SRAM构成,用于减少CPU访问数据的延迟
  • 局部性原理
    • 是指:CPU访问存储器的时候,无论是读指令还是存取数据,所访问的存储单元都被区域聚集到一个连续区域中了。也就是说程序具有访问局部区域里的数据和代码的趋势

2.3、主存

  • 主存是指计算机中用于临时存储正在运行的程序和数据的硬件部件,属于RAM(随机存取存储器)。断电后数据丢失(易失性)。
  • ROM只读存储器) 断电后不数据丢失,一旦ROM存储了数据,那么数据就不能被修改了。
  • EEPROM(电可擦可编程只读存储器)和 闪存(Flash Memory)与ROM不同,支持数据的擦除和重新写入重写数据来修正程序错误】。
  • CMOS(Complementary Metal-Oxide Semiconductor,互补金属氧化物半导体) 存储器
    • 作用:存储BIOS/UEFI设置(如启动顺序、日期时间、硬件参数)。确保即使在电源关闭后也能持续追踪这些关键数据
    • 特性:易失性存储器,依赖**纽扣电池(CR2032)**维持数据(断电后不丢失)。

2.4、磁盘

市面上的磁盘有2类,我们先看机械磁盘,然后看固态磁盘
推荐观看这个视频,用的《CSAPP》书讲解

2.4.1、机械磁盘(HDD)
主体结构介绍

在这里插入图片描述

  • 盘片(platter):上图中的圆盘就是盘片。上面有磁性的记录材料,可以记录数据
    • 盘面(surface):每个盘片有2个面 ,这个面就是盘面。
  • 主轴(spindle):可以旋转。主轴带动盘片以固定的速率高速旋转。
  • 读/写头:来读写盘面表面存储的数据。上下盘面都有一个读/写头.
    • 所有的读写头都是一起运动的,垂直并列
  • 磁盘臂:通过磁盘臂的运动就可以运行读写数据的行为了。如果需要读取目标文件,盘面就会旋转起来。
    • 寻找位置的这个过程【不包括旋转】叫寻道
    • 在这里插入图片描述
细节分析

先是磁道

  • 磁道:盘面的表面划分了一圈圈的磁道
    • 扇区:磁道里面有许多扇区。
      • 扇区与扇区之间有一些小间隙存储的不是 数据 而是 标识信息
        在这里插入图片描述

然后单位

  • byte是字节单位,不要理解成比特bit了。
  • 在I/O设备里的单位是不同的。如下图
    在这里插入图片描述
    在这里插入图片描述

然后对扇区的访问时间主要分布为3个部分

扇区访问时间 = 寻道时间+旋转时间+传送时间

  • 寻道时间:磁盘臂寻道过程的时间。
  • 旋转时间:盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间
  • 传送时间:完成传输所请求的数据所需要的时间。

单位

  • 扇区: 硬盘的最小读写单元
  • 块/簇: 是操作系统针对硬盘读写的最小单元
  • page: 是内存与操作系统之间操作的最小单元。
2.4.2、固态硬盘(SSD)

在现在的电脑几乎都是固态硬盘了。固态硬盘的缺陷就是容易磨损。推荐看这个视频了解
在这里插入图片描述

  • 固态硬盘由一个或多个闪存芯片构成的。
    • 使用闪存芯片 取代了 传统的机械臂转动和盘片旋转方式。
  • 闪存转换站(FTL)
    • 功能与磁盘控制器类似:都是将操作系统对逻辑块的请求 翻译成 对底层物理设备的访问
  • 固态硬盘的擦除操作
    • 固态硬盘除了读/写操作,还多了擦除操作。
    • 但是擦除只能把1 变成 0 ,而不能把0 变成1 。 所以每一个page在放入数据前都是 1 。
    • 在这里插入图片描述

3、I/O设备

3.1、定义

I/O设备就是可以将数据输入到计算机 或者 可以接收计算机输出数据的外部设备 , 属于计算机的硬件部分。

3.2、分类

3.2.1、按使用特性分类
  • 人机交互类 外部设备:数据传输慢---->用于人机交互
  • 存储设备:数据传输快---->用于数据存储
  • 网络通信设备:数据传输介于2者之间---->用于网络通信
3.2.2、按传输速率分类
  • 低速设备:每秒几个到几百字节
  • 中速设备:每秒千到万字节
  • 高速设备:每秒可以到千兆字节
3.2.3、按信息交换的单位
  • 块设备:传输速率较高,可寻址,即对它可随机地读/写任一块。
  • 字符设备:传输速率较慢,不可寻址。在输入/输出时,常采用中断驱动方式。

4、设备控制器和设备驱动器

设备控制器【硬件】:负责直接控制物理设备能够接收并执行来自操作系统的指令
设备驱动器【软件】:设备控制器通过设备驱动器利用中断与操作系统通信

5、实现输入和输出的方式有三种

  • 忙等待:一直循环直到需要的条件满足。会一直占据CPU,CPU一直轮询I/O设备直到I/O操作完成。
  • 设备驱动程序启动设备并且让该设备在操作完成时发生中断,设备驱动程序在这个时刻返回。操作系统接着在需要时阻塞调用者并安排其他工作进行。当设备驱动程序检测到该设备操作完成时,它发出一个 中断 通知操作完成。
    • 在这里插入图片描述
  • 引入DMA控制器,代替CPU直接管理I/O设备与内存之间的数据传输。【直接存储器访问(Direct Memory Access, DMA) 芯片】

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何用正则表达式爬取古诗文网中的数据(python爬虫)

一、了解正则表达式的基本内容: 什么是正则表达式 正则表达式(Regular Expression,简称 regex)是一种用于匹配字符串的模式。它通过特定的语法规则,可以高效地搜索、替换和提取文本中的特定内容。正则表达式广泛应用于…

网络空间安全(33)MSF漏洞利用

前言 Metasploit Framework(简称MSF)是一款功能强大的开源安全漏洞利用和测试工具,广泛应用于渗透测试中。MSF提供了丰富的漏洞利用模块,允许安全研究人员和渗透测试人员利用目标系统中的已知漏洞进行攻击。 一、漏洞利用模块&…

PBS 脚本及 运行

PBS 脚本命令的调度 PBS 脚本运行命令**如何跑?**准备 PBS 脚本? 成品 本文涉及: PBS 命令 Shell 命令 Python 命令 使用命令行运行作业,需要在 HPC 中放好 PBS 脚本。 如何写一个 PBS 脚本,下面以自己的 PBS 脚本为例…

Spring Cloud LoadBalancer 原理与实践

背景 当前我们的微服务架构基于Spring Cloud Alibaba体系,通过定制NacosRule实现了跨集群访问和灰度发布功能。但随着Spring Cloud与Nacos版本升级,官方已弃用Ribbon转向LoadBalancer,这要求我们完成以下技术升级: 负载均衡机制…

TMS320F28P550SJ9学习笔记13: 软件I2C_驱动AT24Cxx存储芯片

今日尝试配置软件I2C通信,我的目标通信芯片是AT24C64,相较于AT24C02这样的8位寻址,它是16位寻址的,所以有些不同 文章提供测试代码讲解、完整工程下载、测试效果图 目录 软件I2C引脚初始化: C内联函数改变SCL与SDA的输…

电子电气架构 --- 分布到集中的动カ系统及基于域控制器的架构

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧,都是来源于自己的想象,只有你真的去做了,才会发现有多快乐。…

1216走迷宫

1216走迷宫 ⭐️难度:简单 🌟考点:bfs 📖 📚 import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {public static void main(String[] …

【TMS570LC4357】之相关问题及解决

背景: 第一次接触TI的芯片,对其中遇见的问题或者不清楚的地方做个记录。 问题及解决方法 1.头文件未包含 添加对应头文件 解决方法 2. error #10008-D: cannot find file “C:/ti/Hercules/SafeTI Diagnostic Library/2.4.0/libs/SafeTILib_TMS570LC…

Vue 中 this 使用指南与注意事项

文章目录 1. this 的基本概念1.1 Vue 实例中的 this1.2 this 指向问题 2. 常见问题与解决方案2.1 生命周期钩子中的 this2.2 方法中的 this2.3 回调函数中的 this 3. 高级用法与技巧3.1 使用箭头函数3.2 绑定 this3.3 使用闭包 4. 性能优化与调试4.1 性能优化策略4.2 调试技巧 …

odbus TCP转Modbus RTU网关快速配置案例

Modbus TCP 转Modbus RTU网关快速配置案例 在工业自动化领域,Modbus 协议以其简洁和高效而著称,成为众多设备通信的首选。 随着技术的发展和应用场景的变化,Modbus 协议也发展出了不同的版本,其中 Modbus TCP 和 Modbus RTU 是两种…

共享内存通信效率碾压管道?System V IPC原理与性能实测

个人主页:敲上瘾-CSDN博客 进程通信: 匿名管道:进程池的制作(linux进程间通信,匿名管道... ...)-CSDN博客命名管道:命名管道——进程间通信-CSDN博客 目录 一、共享内存的原理 二、信道的建立 …

【net1】tcp,route,iptables,macvlan

文章目录 1.局域网:CSMA/CD2.互联网:ARP,NAT,路由表比映射表复杂3.tcp协议:telnet,tcpdump,syn/accept队列4.linux的route指令:route add4.1 案例:从ubuntu机器ping 199.199.199.199,配置路由使能通5.防火墙iptables:(ip+tables)对网络上数据包通过表的形式进行规…

如何用Deepseek制作流程图?

使用Deepseek制作流程图,本质上是让AI根据你的需求,生成相关流程图的代码,然后在流程图编辑器中渲染,类似于Python一样,ChatGPT可以生成代码,但仍需在IDE中执行。 你知道绘制流程图最高效的工具是什么吗&a…

基于PySide6与CATIA Automation的批量截图处理系统开发实践

引言 本文完整实现了基于PySide6 GUI框架与CATIA Automation技术的批量截图处理系统。系统支持对CATIA文件(.CATPart/.CATProduct)的自动化截图、图像优化及批量导出,通过模块化架构设计实现了超过200%的效率提升。本文将从技术架构、核心算…

【PyQt5】【Visual Studio】环境配置

前言 最近爱上搞软件编程,今天我就来教学如何进行Python软件编程PyQt5 下载工具 编程环境配置 Visual Studio Python下载最新版本就行 下载完之后呢,简单配置一下环境,Visual Studio的Python环境配置教程有很多可以自己在网上找 我这有Py…

uniapp+vue实现购物车的左滑删除功能

左滑删除 删除功能利用透明的改变在显示删除按钮实现思路代码效果展示 利用scroll滑动容器来实现代码实现效果展示 我们在移动端的电商平台中,一般都是左滑后然后删除按钮出现,用户可以点击删除按钮来进行该商品的删除,这里我分享两种方法来达…

CSSHTML新特性

HTML5 新特性探秘 在 Web 开发的不断演进中,HTML5 带来了一系列令人振奋的新特性,极大地提升了网页的功能和用户体验。今天,我们就来深入探究一下这些新特性。 语义化标签:让网页结构更清晰 语义化标签是 HTML5 的一大亮点。在…

网络爬虫【简介】

我叫补三补四,很高兴见到大家,欢迎一起学习交流和进步 今天来讲一讲爬虫 一、网络爬虫的定义 网络爬虫(Web Crawler),又称为网络蜘蛛、网络机器人等,是一种按照一定规则自动抓取互联网信息的程序或脚本。它…

数字隔离器,如何提升储能系统的安全与效能?

随着全球对光伏、风电等可再生能源需求的持续增长,在全球能源转型的浪潮中,储能技术凭借着可平衡能源供需、提高能源利用效率等优势,已成为实现 “双碳” 目标的核心支撑。据国家能源局公布数据显示,截至2024年底,我国…

AI玩Flappy Bird || 基于Q-Learning和DQN的机器学习

一、游戏介绍 Flappy Bird 游戏需要玩家控制一只小鸟越过管道障碍物。玩家只可以进行“跳跃”或者“不操作”两种操作,即点或不点。点则让小鸟上升一段距离,不点小鸟继续下降。若小鸟碰到障碍物或地面,则游戏失败。 本项目目的是开发一个深层…