1、操作系统引论

发布于:2025-03-16 ⋅ 阅读:(18) ⋅ 点赞:(0)

一、操作系统

会使用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) 芯片】

网站公告

今日签到

点亮在社区的每一天
去签到