操作系统和案例融合

本文解释了打开图片、创建文件和双击QQ程序时,操作系统如何通过硬盘结构、文件控制块、索引表和进程控制块等概念进行数据查找、内存管理及进程调度的过程,揭示了计算机底层工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

打开一张图片,电脑发生什么?

创建一个文件,电脑发生什么?

双击打开qq程序,电脑发生什么?

https://www.bilibili.com/video/BV1MU4y1d7LH/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=1d308e51d36762a2c170e7f42ab0f628

打开一张图片,电脑发生什么?

图片是由一个个的像素组成的额,像素是由0101这样存储在硬盘上的。

电脑的数据是存放在硬盘里面的,硬盘的结构是盘面 柱面 扇区。

数据的在磁盘上的存储是分散的,所以,当我们一份文件,有多个地址。我们使用索引表来存储这个数据和地址的关系。

那么操作系统是怎么找到这个索引表的??
因为电脑是分区,有c盘,d盘,e盘这样的。每一个盘,都各自拥有一份文件控制块。

每一个盘,都各自拥有一份FCB (File Control Block)文件控制块,这个是一份表,用来记录这个盘里面所有文件名和对应的文件数据,这份表也是存在硬盘中。

(文件名和指针(文件属性))

总结:

操作系统先找到当前文件所在盘的fcb,然后通过fcb找出图片对应的文件路径,找到这个图片的索引表,去寻找这个数据,再集合起来,在显示器显示出来。

为什么这些fcb不合成一张表,因为一张表内容太多,加载时间变慢,所以使用指针,减少体积。

专有名词分解

硬盘结构

https://www.bilibili.com/video/BV1ts4y1L7MS/?spm_id_from=333.337.search-card.all.click&vd_source=1d308e51d36762a2c170e7f42ab0f628

!!!待补充

索引表

索引表也是存放在硬盘。

索引表存放的磁盘块被称为索引块。当用户需要访问某个逻辑块号时,操作系统会查找该文件对应的目录项(如FCB),从目录项中获取索引表的存放位置。

之后,索引表会被从外存读入内存,并在其中查找所需的逻辑块号在外存中的存放位置。这种机制使得索引分配方式能够支持随机访问,并且文件的扩展也变得相对容易实现。

FCB 文件控制块

FCB(File Control Block,文件控制块)是操作系统中与文件相关的数据结构,用于记录和管理文件在系统中的各种属性和状态信息。FCB是文件系统用于跟踪和管理文件的核心数据结构之一。.

FCB 文件控制块里面有什么?

每个文件内存中都对应一个FCB。FCB中包含了文件的标识信息(如文件名)、文件的逻辑结构和物理结构、存取控制信息、管理信息以及其他与文件相关的系统信息。这些信息使得操作系统能够正确地定位、访问和操作文件。

FCB从硬盘到内存

当应用程序请求打开一个文件时,操作系统会在文件系统中查找该文件对应的FCB(硬盘中),并将其加载到内存中。一旦FCB被加载到内存,操作系统就可以通过该FCB来管理文件的操作,如读取、写入、修改文件的属性等。

FCB通常存放在内存中

创建一个文件,电脑发生什么?

创建一个文件,文件是存储放在硬盘的。硬盘上的数据存放是分散的。操作系统需要知道硬盘那些空间是空闲的。空闲表。

空闲表。用来存放一些硬盘空的空间和状态

还有空闲链表,位图法,成组链接法(unix)

总结:

操作系统打开空闲表找到空闲的地方,修改状态就可以了。不需要重新遍历磁盘所有的空间。提高速度。

双击打开qq程序,电脑发生什么?

用户双击qq,操作系统会为这个程序,生成一个进程。进程里面有3样组成(PCB,程序段和数据段)。程序段和数据段是放在用户区(内存),pcb是放在系统区(内存)。

内存

内存可以分为系统区和用户区。

系统区

用户区

进程概述

进程就是一个程序的实例,一个程序可以有多个进程。

每个进程都有一个唯一的标识符,称为进程ID(PID),操作系统使用PID来识别和管理进程。

进程在执行过程中有三种基本状态:就绪状态、执行状态和阻塞状态

进程的组成

数据段和程序段是放在内存的用户区

pcb是放在内存的系统区

---------------------

数据段是存放  程序的变量和用户数据,用户头像

程序段是存放  程序的代码,指令

PCB   进程的状态信息、代码、数据等

操作系统在内存中创建的进程

PCB进程控制块

PCB(Process Control Block)是进程控制块的简称,是一种用于描述和管理进程的数据结构。每个进程在操作系统中都有一个对应的PCB,PCB中包含了进程的状态信息、代码、数据和相关的控制信息。

PCB的作用主要有以下几点:

  1. 记录和描述进程的情况:PCB中包含了进程的各种属性信息,如进程标识符、进程当前状态、程序与数据地址等,使得操作系统可以清晰地了解和管理进程。
  2. 控制进程的运行:通过对PCB的操作,操作系统可以进行进程的创建、调度、切换以及资源的分配和管理。这使得多个进程可以在操作系统中并发执行,而不会相互干扰。
  3. 进程存在的标志:系统总是通过PCB对进程进行控制,进程的唯一标识符是PID(Process Identifier,进程标识符)

因此,PCB在操作系统中起到了至关重要的作用,是操作系统进行进程管理和资源分配的基础。

程序块

存放程序代码

数据块

存放程序的数据,变量等

进程的状态

创建态

  • 在这个状态下,操作系统为新进程分配必要的资源,如内存空间、文件描述符等,并设置进程的初始属性。

就绪态

进程已经准备好了所有执行的条件,等待被调度到CPU上执行时,它处于就绪态。

运行态

  • 当进程获得CPU的处理权并开始执行其指令时,它处于运行态。
  • 在这个状态下,进程实际上正在使用CPU进行计算或执行其他操作

阻塞态

  • 正在运行的进程可能因为某些原因(如等待I/O操作完成、等待某个事件或资源)而无法继续执行,此时它会进入阻塞态。
  • 在阻塞态,进程会释放CPU的处理权,并等待相关事件或资源变得可用。

阻塞挂起态(硬盘)

  • 当一个处于阻塞态的进程被操作系统决定暂时换出到外部存储设备(如硬盘)以释放内存资源时,它进入阻塞挂起态。
  • 在阻塞挂起态,进程既不在内存中执行,也不在等待任何事件或资源,而是被存储在外部存储设备上(硬盘),等待将来被重新加载到内存并恢复执行。

就绪挂起态(硬盘)

  • 当一个处于就绪态的进程被操作系统决定暂时换出到外部存储设备以释放内存资源时,它进入就绪挂起态。
  • 在就绪挂起态,进程已经准备好执行,但因为不在内存中,所以不能被调度到CPU上执行。当内存资源变得可用时,操作系统会将其重新加载到内存,并将其状态转换为就绪态。

终止态

  • 当进程执行完毕或因某种错误而异常终止时,它进入终止态。
  • 在终止态,操作系统会释放进程所占用的所有资源,并回收其PID(进程标识符),以便将来分配给新的进程。销毁进程。

当内存资源不足时,操作系统可能会将处于就绪态或阻塞态的进程换出到外部存储设备。(挂起)

进程的切换

进程3态图

进程5态图

挂起是进程的一种特殊状态,不会在主存中,会被转移到硬盘。

总结:

操作系统从硬盘中把qq加载进内存,为qq在内存中创建一个而进程(pcb 和数据段程序段),这时的进程处于创建态

但操作系统把所以资源空间分配好,qq进程进入就绪态,加进就绪队列,等待cpu执行,

当进程进入运行态。qq进程获得cpu的处理权的时候,cpu执行进程中的代码(进程进入运行态的时候,操作系统已经定位到进程的程序段和数据段,cpu就可以执行指令)

(当操作系统决定将一个进程加载到CPU中执行时,它首先会查找该进程的PCB,获取进程的状态和相关信息。

然后,根据PCB中的信息,操作系统会定位到进程在内存中的实际位置,包括程序区和数据区的地址,

一旦确定了程序区和数据区的地址,CPU就可以通过内存管理单元(MMU)将这些虚拟地址转换为物理地址,并访问相应的内存空间来执行指令

MMU负责将CPU发出的虚拟地址转换为物理地址,这样CPU就能正确地访问进程在内存中的代码和数据。)

在运行态,CPU确实是通过访问进程的内存空间来执行其指令的,但CPU并不是直接通过进程的PCB(进程控制块)来获得进程的程序区和数据区的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值