01 计算机系统基础-2

操作系统

进程管理

进程管理是操作系统的核心,但如果设计不当,就会出现死锁的问题。如果一个进程在等待一件不可能发生的事,则进程就死锁了。而如果一个或多个进程产生死锁,就会造成系统死锁。基于死锁产生机制及解决方案,将会在以下进行详细诠释。

进程同步与互斥

临界资源:各进程间需要以互斥方式对其进行访问的资源。

临界区:指进程中对临界资源实施操作的那段程序,其本质是一段程序代码。

  • 互斥: 某资源(即临界资源)在同一时间内只能由一个任务单独使用,使用时需要加锁,使用完后解锁才能被其他任务使用,如打印机。
  • 同步: 多个任务可以并发执行,只不过有速度上的差异,在一定情况下停下等待,不存在资源是否单独或共享的问题,如自行车和汽车。
  • 互斥信号量: 对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初值为1。
  • 同步信号量: 对共享资源的访问控制,初值一般是共享资源的数量。

进程调度

进程调度方式 是指当有更高优先级的进程到来时,如何分配CPU,分为可剥夺和不可剥夺两种。可剥夺指当有更高优先级进程到来时,强行将正在运行进程的CPU分配给高优先级进程;不可剥夺是指高优先级进程必须等待当前进程自动释放CPU。

  • 在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度。
    • 高级调度。高级调度又称"长调度 ""作业调度"或"接纳调度",它决定处于输入池 中的哪个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程。在系统中一个作业只需经过一次高级调度。
    • 中级调度。中级调度又称"中程调度"或"对换调度 ",它决定处于交换区中的哪个就绪进程可以调入内存,以便直接参与对CPU的竞争。
    • 低级调度。低级调度又称"短程调度 "或"进程调度",它决定处于内存中的哪个就绪进程可以占用CPU。低级调度是操作系统中最活跃、最重要的调度程序,对系统的影响很大。
  • 调度算法
    • 先来先服务FCFS:先到达的进程优先分配CPU,用于宏观调度。
    • 时间片轮转:分配给每个进程CPU时间片,轮流使用CPU,每个进程时间片大小相同,很公平,用于微观调度。
    • 优先级调度:每个进程都拥有一个优先级,优先级大的先分配CPU。
    • 多级反馈调度:时间片轮转和优先级调度结合而成,设置多个就绪队列1,2,3...n,每个队列分别赋予不同的优先级,分配不同的时间片长度;新进程先进入队列1的末尾,按FCFS原则,执行队列1的时间片;若未能执行完进程,则转入队列2的末尾,如此重复。

      图2 多级反馈调度

死锁与银行家算法

图1 死锁与银行家算法

  • 死锁
    当一个进程在等待永远不可能发生的事件时,就会产生死锁,若系统中有多个进程处于死锁状态,就会造成系统死锁。

死锁产生的四个必要条件: 资源互斥、每个进程占有资源并等待其他资源、系统不能剥夺进程资源、进程资源图是一个环路。
死锁产生后,解决措施是打破四大条件,有下列方法:

  1. 死锁预防: 采用某种策略限制并发进程对于资源的请求,破坏死锁产生的四个条件之一!使系统任何时刻都不满足死锁的条件。
  2. 死锁避免: 一般采用银行家算法来避免,银行家算法,就是提前计算出一条不会死锁的资源分配方法,才分配资源,否则不分配资源,相当于借贷,考虑对方还得起才借钱,提前考虑好以后,就可以避免死锁。
  3. 死锁检测: 允许死锁产生,但系统定时运行一个检测死锁的程序,若检测到系统中发生死锁,则设法加以解除。
  4. 死锁解除: 即死锁发生后的解除方法,如强制剥夺资源,撤销进程等。

死锁资源计算:系统内有n个进程,每个进程都需要R个资源,那么其发生死锁的最大资源数为n*(R-1) 。其不发生死锁的最小资源数为n(R-1)+1

  • 银行家算法 :分配资源的原则
    • 当一个进程对资源的最大需求量不超过系统中的资源数时,可以接纳该进程;
    • 进程可以分期请求资源,但请求的总数不能超过最大需求量;
    • 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源。

存储管理

页式存储

页式存储:将程序与内存均划分为同样大小的块,以页为单位将程序调入内存。

图示:页式存储过程

逻辑页分为页号页内地址 ,页内地址就是物理偏移地址,而页号与物理块号并非按序对应的,需要查询页表,才能得知页号对应的物理块号,再用物理块号加上偏移地址才得出了真正运行时的物理地址。
高级程序语言使用逻辑地址;运行状态,内存中使用物理地址。
逻辑地址 =页号+页内地址
物理地址 =页帧号+页内地址
淘汰原则: (1)淘汰的页面必定已在内存(2)优先淘汰访问位为0的页面(3)如果有多个可选,则考虑修改位为0。

图示:分页存储原理
优点: 利用率高,碎片小,分配及管理简单。
缺点: 增加了系统开销,可能产生抖动现象。

段式存储

段式存储:按用户作业中的自然段来划分逻辑空间,然后调入内存,段的长度可以不一样。可以理解为将进程空间分为一个个段,每段也有段号段内地址 ,与页式存储不同的是每段物理大小不同,分段是根据逻辑整体分段的,因此,段表也与页表的内容不同,页表中直接是逻辑页号对应物理块号,而下图所示,段表有段长和基址两个属性,才能确定一个逻辑段在物理段中的位置。

  • 优点: 多道程序共享内存,各段程序修改互不影响。
  • 缺点: 内存利用率低,内存碎片浪费大。

示例:

合法段地址:(0,25K)

非法段地址:(0,35K)

段页式存储

对进程空间先分段,后分页,具体原理图和优缺点如下:

图示:段页式存储原理图

图示:段页式存储过程

优点:空间浪费小、存储共享容易、存储保护容易、能动态链接。

缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降。

磁盘管理


存取时间=寻道时间+等待时间

寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用的时间。
读取磁盘数据的时间应包括以下三个部分:

  • 找磁道的时间。
  • 找块(扇区)的时间,即旋转延迟时间。
  • 传输时间。

注意: 其优化即为改变词道上物理块存储位置的顺序,即逻辑上连续,物理上不连续。

图示:磁盘管理优化
优化算法:

  • 先来先服务(FCFS)
  • 最短寻道时间优先(SSTF)
  • 扫描算法(SCAN)
  • 循环扫描(CSCAN)算法

文件系统

文件系统概述

文件管理系统:就是操作系统中实现文件统一管理的一组软件和相关数据的集合,专门负责管理和存取文件信息的软件机构 ,简称"文件系统"。

文件系统的功能 包括按名存取;统一的用户接口;并发访问和控制;安全性控制;优化性能;差错恢复。

文件的逻辑结构可分为两大类:有结构的记录式文件;无结构的流式文件

索引文件

图示:索引文件结构

  • 系统中有13个索引节点,0-9为直接索引,即每个索引节点存放的是内容。假设每个物理盘大小为4KB,共可存4KB * 10=40KB数据;
  • 10号索引节点为一级间接索引节点,大小为4KB,存放的并非直接数据,而是链接到直接物理盘块的地址。假设每个地址占4B,则共有1024个地址,对应1024个物理盘,可存1024 * 4KB=4096KB数据。
  • 二级索引节点类似,直接盘存放一级地址,一级地址再存放物理盘快地址,而后链接到存放数据的物理盘块,容量又扩大了一个数量级,为1024 * 1024 * 4KB数据。

文件目录

文件控制块中包含以下三类信息:基本信息类、存取控制信息类和使用信息类。

  • 基本信息类。例如文件名、文件的物理地址、文件长度和文件块数等。
  • 存取控制信息类。文件的存取权限,像UNIX用户分成文件主、同组用户和一般用户三类,这三类用户的读/写执行RWX权限。
  • 使用信息类。文件建立日期、最后一次修改日期、最后一次访问的日期、当前使用的信息(如打开文件的进程数、在文件上的等待队列)等
    文件控制块的有序集合称为文件目录。若系统在将目录文件修改的结果写回磁盘时发生崩溃,则对系统的影响相对较大。
    空闲区表。 将外存空间上的一个连续的未分配区域称为"空闲区"。操作系统为磁盘外存上的所有空闲区建立一张空闲表,每个表项对应一个空闲区,适用于连续文件结构。

位示图

位示图: 这种方法是在外存上建立一张位示图(Bitmap),记录文件存储器的使用情况。每一位对应文件存储器上的一个物理块,取值0和1分别表示空闲和占用。

图示:位示图

主要明确三点:

  • 总容量大小,物理块大小物理块个数;
  • 位示图bit位个数;
  • 位示图字的个数。

空闲块链。 每个空闲物理块中有指向下一个空闲物理块的指针,所有空闲物理块构成一个链表,链表的头指针放在文件存储器的特定位置上(如管理块中),不需要磁盘分配表,节省空间。
成组链接法。例如,在实现时系统将空闲块分成若干组,每100个空闲块为一组,每组的第一个空闲块登记了下一组空闲块的物理盘块号和空闲块总数。假如某个组的第一个空闲块号等于0,意味着该组是最后一组,无下一组空闲块。

系统性能

性能指标

- 硬件

  • 软件
  • 指标
    • 字长和数据通路宽度
    • 主存容量和存取速度
    • 运算速度
    • 吞吐量与吞吐率
    • 响应时间(RT)与 完成时间(TAT)
    • 兼容性
    • 主频=外频*倍频
    • 主频与CPU时钟周期
    • CPI与IPC
    • MIPS与MFLOPS

MIPS = 指令条数/(执行时间 10^6)=主频/CPI=主频 IPC
MFLOPS = 浮点操作次数/(执行时间 10^6)

平均每条指令的平均时钟周期个数:(CPl,Clock cycle Per Instruction)

每(时钟)周期运行指令条数:(IPC,Instruction Per Clock)

百万条指令每秒:(MIPS,Million Instructions Per Second)

每秒百万个浮点操作:(MFLOPS,Million Floating-point Operations per Second)

响应时间:(RT,ResponseTime)

性能设计

  • 对系统中某组件采用某种更快的执行方式,所获得的系统性能的改变程度,取决于该组件被使用的频率,或所占总执行时间的比例。

加速比计算公式如下:

  • 其中,Tp表示不使用改进组件时完成整个任务的时间,Ti表示使用改进组件时完成整个任务的时间。加速比主要取决于两个因素:
    *
    1. 在原有的系统上,能被改进的部分在总执行时间中所占的比例。这个值称为改进比例,记为Fe,它总是小于1。
      1. 通过改进执行方式所取得的性能提高,即如果整个系统使用了改进的执行方式,那么系统的执行速度会有多少提高,这个值等于在原来的条件下系统的执行时间与使用改进组件后系统的执行时间之比,记为Se,它总大于1。

性能评估


测试精确度排名: 真实的程序>核心程序>小型基准程序>合成基准程序

  • Dhrystone基准程序:它是一个综性的整数基准测试程序,是为了测试编译器和CPU处理整数指令和控制功能的有效性,人地选择一些典型指令综合起来形成的测试程序。
  • Linpack基准程序:它是国际上最济行的用于测试高性能计算机系统浮点性能的测试。
  • Whetstone基准程序:它是用Fortan语言编写的综合性测试程序,主要由执行浮点运算、功能调用、数组变址、条件转移和超越函数的程序组成。
  • SPEC基准程序:一种是测试计算机完成单项任务有多快,称为速度测试;另一种是测试计算机在一定时间内能完成多少项任务,称为吞吐率测试。
  • TPC基准程序:TPC(Transaction Processing Council,事务处理委员会)基准程序用以评测计算机在事务处理、数据库处理、企业管理与决策支持系统等方面的性能。该基准程序的评测结果用每秒完成的事务处理数TPC来表示。

Web服务器的性能评估

  • 在Web服务器的测试中,反映其性能的指标主要有:最大并发连接数响应延迟吞吐量等。
  • 常见的Web服务器性能评测方法有:基准性能测试压力测试可靠性测试

系统监视:

进行系统监视通常有3种方式:

一是通过系统本身提供的命令 ,如UNIX/Linux系统中的W、ps、last,Windows中的netstat等;

二是通过系统记录文件 查阅系统在特定时间内的运行状态;

三是集成命令、文件记录和可视化技术的监控工具,如Windows的Perfmon应用程序

相关推荐
子兮曰3 小时前
后端字段又改了?我撸了一个 BFF 数据适配器,从此再也不怕接口“屎山”!
前端·javascript·架构
卓卓不是桌桌5 小时前
如何优雅地处理 iframe 跨域通信?这是我的开源方案
javascript·架构
Qlly5 小时前
DDD 架构为什么适合 MCP Server 开发?
人工智能·后端·架构
用户881586910911 天前
AI Agent 协作系统架构设计与实践
架构
鹏北海1 天前
Qiankun 微前端实战踩坑历程
前端·架构
货拉拉技术1 天前
货拉拉海豚平台-大模型推理加速工程化实践
人工智能·后端·架构
RoyLin1 天前
libkrun 深度解析:架构设计、模块实现与 Windows WHPX 后端
架构
CoovallyAIHub2 天前
实时视觉AI智能体框架来了!Vision Agents 狂揽7K Star,延迟低至30ms,YOLO+Gemini实时联动!
算法·架构·github
RoyLin2 天前
领域驱动设计:回归本质的工程实践
架构
CoovallyAIHub2 天前
OpenClaw:从“19万星标”到“行业封杀”,这只“赛博龙虾”究竟触动了谁的神经?
算法·架构·github