一、cpu的紧张指标
焦点参数
- 焦点数(Cores)
- 含义:焦点是 CPU 中实行指令的运算单元,焦点数代表了 CPU 内独立运算焦点的数量。
- 影响:焦点数越多,CPU 在同一时间内可以或许并行处理的任务就越多。比方,在多任务处理场景下,犹如时运行办公软件、浏览器、视频播放器等,多核 CPU 可以将不同任务分配到不同焦点上同时处理,进步系统的团体运行服从。
- 线程数(Threads)
- 含义:线程是 CPU 调度和实行的最小单元,通过超线程技术,一个物理焦点可以模拟出多个逻辑线程。
- 影响:线程数的增长使得 CPU 在处理多线程任务时更加高效。比如在进行视频编辑、3D 渲染等多线程应用程序中,更多的线程可以让程序更快地完成任务。比方英特尔的一些 CPU,通过超线程技术可以让一个物理焦点模拟出两个逻辑线程,从而在一定程度上提拔 CPU 的多任务处理本领。
- 主频(Clock Speed)
- 含义:主频即 CPU 内核工作的时钟频率,单元是 GHz(吉赫兹),表现 CPU 在一秒钟内可以或许完成的时钟周期数。
- 影响:一般来说,主频越高,CPU 在单元时间内处理的指令就越多,运算速率也就越快。但主频并不是衡量 CPU 性能的唯一标准,由于不同架构的 CPU 在相同主频下的现实性能可能会有所差异。比方,一款主频为 3.0GHz 的 CPU 在处理某些任务时可能不如另一款主频为 2.5GHz 但架构更先进的 CPU。
缓存参数
- 一级缓存(L1 Cache)
- 含义:一级缓存是 CPU 中速率最快、与 CPU 焦点距离最近的缓存,分为数据缓存(L1d)和指令缓存(L1i)。
- 影响:一级缓存的作用是存储 CPU 近期可能会频繁访问的数据和指令,以减少 CPU 从内存中读取数据的时间。较大的一级缓存可以进步 CPU 的运行服从,尤其是在处理一些对数据读取速率要求较高的任务时,如游戏、科学计算等。
- 二级缓存(L2 Cache)
- 含义:二级缓存的容量比一级缓存大,速率稍慢,用于存储一级缓存未命中的数据。
- 影响:当一级缓存中没有所需的数据时,CPU 会从二级缓存中查找。二级缓存可以进一步减少 CPU 从内存中读取数据的时间,进步系统的团体性能。在一些对数据处理本领要求较高的应用中,如数据库管理系统、图形处理软件等,较大的二级缓存可以显著提拔 CPU 的性能。
- 三级缓存(L3 Cache)
- 含义:三级缓存是 CPU 中容量最大、速率相对较慢的缓存,多个焦点共享三级缓存。
- 影响:三级缓存可以存储更多的数据和指令,当一级和二级缓存都未命中时,CPU 可以从三级缓存中获取数据。在多焦点 CPU 中,三级缓存可以进步焦点之间的数据共享服从,减少数据传输延迟,从而提拔 CPU 在多焦点并行处理任务时的性能。
二、不同的 CPU 有不同的指令集
不同的 CPU 系列有不同的指令集,而指令集的差异会导致对应的汇编语言有所不同。
指令集与 CPU 的关系
- 指令集的定义:指令集是计算机硬件的语言系统,它规定了 CPU 可以或许实行的各种操纵,如数据传输、算术运算、逻辑运算、控制转移等。不同的 CPU 系列为了满足不同的应用场景和性能需求,会设计出不同的指令集。
- 常见的指令集架构
- x86 架构:由英特尔公司开发,广泛应用于个人计算机、服务器等范畴。x86 指令集具有丰富的指令和强大的兼容性,从早期的 8086 到现在的酷睿系列 CPU 都基于 x86 架构进行发展和扩展。
- ARM 架构:紧张应用于移动装备(如智能手机、平板电脑)、路由器、嵌入式系统等范畴。ARM 指令集具有低功耗、高性能的特点,被浩繁芯片厂商采用,如苹果 A 系列芯片、华为麒麟芯片等都基于 ARM 架构设计。
- MIPS 架构:曾经在网络装备、游戏机等范畴有广泛应用。MIPS 指令集设计简洁,易于实现,具有较高的实行服从。
指令集对汇编语言的影响
- 汇编语言的本质:汇编语言是一种面向呆板的低级编程语言,它使用助记符来表现 CPU 的指令。每条汇编指令都对应着 CPU 指令集中的一条具体指令,因此不同的指令集一定导致不同的汇编语言。
- 不同汇编语言的差异
- 指令助记符不同:以 x86 和 ARM 汇编语言为例,x86 汇编中使用 “MOV” 指令进行数据传输,而 ARM 汇编中使用 “MOV”(ARM)或 “LDR/STR”(Thumb)指令来实现雷同的数据传输功能,但它们的语法和操纵数格式可能会有所不同。
- 寄存器使用不同:不同的 CPU 架构拥有不同的寄存器组,因此在汇编语言中对寄存器的使用和操纵也会不同。比方,x86 架构有通用寄存器(如 EAX、EBX、ECX 等),而 ARM 架构有本身的通用寄存器(如 R0 - R15)。
- 寻址方式不同:寻址方式是指指令中指定操纵数所在的方法。不同的指令集支持不同的寻址方式,这也反映在汇编语言中。比方,x86 汇编支持直接寻址、间接寻址、基址变址寻址等多种寻址方式,而 ARM 汇编的寻址方式也有其自身的特点。
示例对比
x86 汇编示例
- ; 计算两个数的和
- MOV AX, 5 ; 将立即数5传送到寄存器AX
- MOV BX, 3 ; 将立即数3传送到寄存器BX
- ADD AX, BX ; 将AX和BX中的值相加,结果存放在AX中
复制代码 ARM 汇编示例
- ; 计算两个数的和
- MOV R0, #5 ; 将立即数5传送到寄存器R0
- MOV R1, #3 ; 将立即数3传送到寄存器R1
- ADD R2, R0, R1 ; 将R0和R1中的值相加,结果存放在R2中
复制代码
通过以上示例可以看出,x86 和 ARM 汇编语言在指令助记符、寄存器使用等方面存在明显的差异,这正是由于它们所基于的指令集不同所导致的。
三、计算机系统中各组成部分之间的条理关系
硬件装备 >> 驱动程序 >> 操纵系统内核 >> 系统调用 >> 应用程序
硬件装备
- 定义:硬件装备是计算机系统的物理组成部分,包括中央处理器(CPU)、内存、硬盘、显卡、网卡、键盘、鼠标等。它们是计算机系统运行的物质基础,为计算机提供了各种计算和输入输出本领。
- 作用:不同的硬件装备具有不同的功能,比方 CPU 负责实行计算机的指令和进行数据处理,硬盘用于恒久存储数据,键盘和鼠标则是用户输入信息的装备。硬件装备须要通过特定的方式与计算机系统进行毗连和通信。
驱动程序
- 定义:驱动程序是一种特殊的软件,它是硬件装备与操纵系统之间的桥梁。每种硬件装备都须要相应的驱动程序才能在操纵系统中正常工作。驱动程序由硬件制造商开发,它了解硬件装备的内部工作原理和通信协议,可以或许将操纵系统的指令转换为硬件装备可以明白的信号。
- 作用:驱动程序的紧张作用是实现对硬件装备的控制和管理。它负责初始化硬件装备,使其进入正常工作状态;处理硬件装备的停止请求,及时相应硬件装备的状态变化;提供硬件装备的各种功能接口,使得操纵系统和应用程序可以方便地使用硬件装备的功能。比方,显卡驱动程序可以让操纵系统和应用程序正确地控制显卡进行图形渲染和表现,声卡驱动程序可以实现声音的播放和录制。
- 驱动程序是以文件的情势存在于计算机的硬盘或其他存储装备中的。这些文件包罗了驱动程序的代码和相干数据,当操纵系统启动时,会自动加载和运行须要的驱动程序,以确保硬件装备可以或许正常工作。比方,在 Windows 操纵系统中,驱动程序文件通常以.sys、.dll 等扩展名末端。
操纵系统内核
- 定义:操纵系统内核是操纵系统的焦点部分,它是计算机系统中最底层的软件,直接与硬件装备进行交互。内核负责管理计算机的各种资源,包括 CPU、内存、装备等,为上层的应用程序提供一个稳固、高效的运行环境。
- 作用:操纵系统内核的紧张功能包括进程管理、内存管理、装备管理、文件管理等。它通过调度算法来分配 CPU 时间片,确保多个进程可以公平、高效地共享 CPU 资源;通过内存分配和接纳机制来管理计算机的内存空间,包管程序的正常运行;通过装备驱动程序来控制和管理各种硬件装备;通过文件系统来构造和管理计算机中的文件和文件夹。
应用程序
- 定义:应用程序是为了满足用户的特定需求而开发的软件,如办公软件、游戏软件、浏览器等。应用程序运行在操纵系统之上,通过调用操纵系统提供的系统调用和服务来完成各种任务。
- 作用:应用程序是用户与计算机系统进行交互的紧张方式,它为用户提供了各种功能和服务。用户可以通过应用程序来完成笔墨处理、数据处理、娱乐等各种任务。应用程序的开发通常基于操纵系统提供的开发工具和库,利用操纵系统的功能来实现本身的业务逻辑。比方,一个办公软件可以利用操纵系统的文件管理功能来保存和打开文档,利用操纵系统的图形界面功能来表现用户界面。
四、计算机系统中各组成部分之间的交互流程
各组成部分之间的交互流程可以概括为以下几个步骤:
- 用户启动应用程序:用户通过操纵系统的用户界面(如桌面图标、开始菜单等)启动一个应用程序。操纵系统接收到用户的启动请求后,会为应用程序分配须要的系统资源,如内存空间、CPU 时间片等,并将应用程序加载到内存中开始实行。
- 应用程序请求系统服务:应用程序在运行过程中,可能须要访问计算机的各种资源,如文件、网络、装备等。此时,应用程序会通过调用操纵系统提供的系统调用接口来请求操纵系统提供相应的服务。比方,应用程序可以调用 “open” 系统调用函数来打开一个文件,调用 “send” 系统调用函数来发送网络数据。
- 操纵系统处理请求:操纵系统接收到应用程序的请求后,会根据请求的类型和参数进行相应的处理。如果请求涉及到硬件装备的操纵,操纵系统会调用相应的驱动程序来完成具体的操纵。比方,当应用程序请求读取文件时,操纵系统会调用硬盘驱动程序来从硬盘中读取数据。
- 驱动程序与硬件装备通信:驱动程序接收到操纵系统的指令后,会与硬件装备进行通信,将操纵系统的指令转换为硬件装备可以明白的信号,并控制硬件装备实行相应的操纵。比方,硬盘驱动程序会向硬盘发送读取数据的指令,硬盘接收到指令后会将数据从磁盘中读取出来,并通过数据线传输给计算机。
- 返回效果给应用程序:硬件装备完成操纵后,驱动程序会将操纵效果反馈给操纵系统,操纵系统再将效果返回给应用程序。应用程序接收到效果后,会根据效果进行相应的处理,如表现数据、进行计算等。
以用户使用浏览器访问网页为例,其交互流程如下:
- 用户双击桌面上的浏览器图标,操纵系统为浏览器分配内存和 CPU 资源,并将浏览器程序加载到内存中运行。
- 浏览器程序通过调用操纵系统的网络服务接口,向指定的网站发送 HTTP 请求。
- 操纵系统接收到浏览器的请求后,调用网卡驱动程序,将 HTTP 请求数据封装成网络数据包,并通过网卡发送到网络中。
- 网站服务器接收到请求后,处理请求并返回 HTTP 相应数据。
- 网卡接收到服务器返回的数据包后,网卡驱动程序将数据包解封装,并将数据传递给操纵系统。
- 操纵系统将数据传递给浏览器程序,浏览器程序解析 HTTP 相应数据,并将网页内容表现在浏览器窗口中。
五、系统调用
系统调用:操纵系统给程序员提供的api(比如有一个程序员想操纵一下硬件装备,就须要先通过系统调用,把操纵命令告诉系统内核,内核调用驱动程序,进一步操纵硬件装备。)
系统调用(System Call)是操纵系统提供给用户程序的接口,用于程序向操纵系统请求特定的服务。它是用户程序与操纵系统内核交互的桥梁。
定义
系统调用是操纵系统内核提供给应用程序的一组特殊接口,应用程序通过调用这些接口来请求操纵系统内核完成一些特权操纵,由于用户程序通常运行在用户态,没有足够的权限直接访问系统资源或实行某些敏感操纵,所以须要通过系统调用切换到内核态,让具有更高权限的操纵系统内核来完成相应任务。
作用
- 资源管理:应用程序可以通过系统调用请求操纵系统分配和管理各种资源,如内存、文件、装备等。比方,使用malloc函数分配内存时,现实上会调用底层的系统调用来向操纵系统申请内存空间。
- 进程控制:系统调用允许应用程序创建、停止和管理进程。比如,fork系统调用可以创建一个新的进程,exit系统调用用于停止当前进程。
- 文件操纵:应用程序可以使用系统调用来进行文件的创建、打开、读写和关闭等操纵。像open系统调用用于打开一个文件,read和write系统调用分别用于从文件读取数据和向文件写入数据。
- 装备交互:借助系统调用,应用程序可以或许与各种外部装备进行交互,如键盘、鼠标、打印机等。比方,通过特定的系统调用可以读取键盘输入或向打印机发送打印任务。
- 网络通信:在网络编程中,系统调用提供了创建网络套接字、发送和接收网络数据等功能。比方,socket系统调用用于创建一个网络套接字,send和recv系统调用用于在网络上发送和接收数据。
调用过程
- 应用程序准备:应用程序在须要使用系统服务时,会设置好系统调用所需的参数,通常将这些参数存放在寄存器或栈中。
- 触发系统调用:应用程序通过实行特定的指令(如 x86 架构中的int 0x80或syscall指令)来触发系统调用,这会导致CPU从用户态切换到内核态。
- 内核处理:操纵系统内核接收到系统调用请求后,根据系统调用号(每个系统调用都有一个唯一的编号)来确定具体要实行的操纵,并实行相应的内核代码来完成任务。
- 返回效果:内核完成系统调用的处理后,将效果返回给应用程序,并将处理器从内核态切换回用户态,应用程序继承实行后续的代码。
常见类型
- 进程管理类:包括fork(创建新进程)、exec(实行新程序)、wait(等待子进程竣事)、exit(停止当前进程)等。
- 文件操纵类:如open(打开文件)、close(关闭文件)、read(读取文件内容)、write(写入文件内容)、lseek(移动文件读写指针)等。
- 装备管理类:比方ioctl(装备控制操纵),可以用于控制各种装备的工作模式、获取装备状态等。
- 内存管理类:像brk和sbrk(调整进程的堆内存大小)、mmap(内存映射,将文件或装备映射到进程的所在空间)等。
- 网络通信类:有socket(创建套接字)、bind(绑定套接字到特定所在和端口)、listen(监听毗连请求)、accept(接受毗连请求)、connect(建立毗连)等。
六、寄存器
寄存器是计算机处理器内部的高速存储部件,是 CPU 的紧张组成部分,用于暂时存储数据和指令,在计算机的运行过程中发挥着关键作用。以下为你详细介绍:
基本概念
寄存器是一种由触发器组成的存储电路,具有非常高的访问速率。它直接集成在 CPU 芯片内部,与 CPU 的运算器和控制器紧密相连,可以或许在极短的时间内完成数据的读写操纵,这使得 CPU 可以快速地处理数据和实行指令。
紧张功能
- 数据暂存:在 CPU 进行运算时,寄存器用于暂时存放到场运算的数据和运算效果。比方,在进行加法运算时,两个加数会被先存放到寄存器中,CPU 对寄存器中的数据进行加法操纵,运算效果也会暂时存放在寄存器里。
- 指令控制:寄存器可以保存指令所在和指令信息。程序计数器(PC)是一种特殊的寄存器,它存储着下一条要实行的指令的所在,CPU 根据 PC 的值从内存中取出指令并实行。指令寄存器(IR)则用于存放当前正在实行的指令。
- 所在索引:在访问内存时,寄存器可以作为所在指针,资助 CPU 快速定位内存中的数据。比方,基址寄存器和变址寄存器可以组合使用,形成复杂的内存所在,用于访问数组、结构体等数据结构。
常见类型
- 通用寄存器:可用于多种用途,如存储数据、所在等。不同架构的 CPU 通用寄存器数量和名称有所不同。比方,在 x86 架构中,常见的通用寄存器有 EAX、EBX、ECX、EDX 等,它们可以用于算术运算、数据传递等操纵。
- 专用寄存器:具有特定的功能,专门用于完成某些特定的任务。
- 程序计数器(PC):也称为指令指针寄存器(IP),它始终指向下一条要实行的指令的内存所在。当一条指令被实行后,PC 的值会自动更新,指向下一条指令的所在,从而包管程序可以或许按顺序依次实行。
- 指令寄存器(IR):用于存放当前正在实行的指令。当 CPU 从内存中取出一条指令后,会将其存放到 IR 中,然后对 IR 中的指令进行解码和实行。
- 状态寄存器(PSW):也叫标志寄存器,用于记录 CPU 的状态信息和运算效果的特征。比方,进位标志(CF)表现算术运算是否产生了进位;零标志(ZF)表现运算效果是否为零等。这些标志位可以作为条件判断的依据,用于实现程序的分支和循环控制。
- 栈指针寄存器(SP):在使用栈这种数据结构时,SP 指向栈顶的所在。栈是一种后进先出(LIFO)的数据结构,常用于函数调用、参数传递和局部变量存储等操纵。当进行压栈(PUSH)和出栈(POP)操纵时,SP 的值会相应地改变。
紧张性
寄存器的高速访问特性使得 CPU 可以或许快速地获取和处理数据,制止了频繁地从内存中读写数据所带来的延迟。在计算机的运行过程中,大量的数据处理和指令实行都依靠于寄存器的支持。如果没有寄存器,CPU 的运算速率将会受到极大的限定,计算机的团体性能也会大幅下降。
六、进程
描述:使用结构体(pcb 进程控制块)来描述进程属性
构造:通过双向链表,来把多个pcb串在一起
创建一个进程 本质上就是创建一个pcb如许的结构体对象,把他插入到链表中
烧毁一个进程 本质上就是把链表上的pcb节点删撤除
任务管理器检察到进程列表,本质上就是遍历这个pcb链表
七、pcb内里描述进程的特征
1.进程标识信息
- 进程标识符(PID):每个进程都有一个唯一的标识符,用于在操纵系统中区分不同的进程。PID 是一个整数,由操纵系统在进程创建时分配。PCB 中会存储这个 PID,操纵系统通过它来对进程进行各种操纵,如调度、停止等。比方,当用户使用 kill 命令停止某个进程时,就是通过指定该进程的 PID 来实现的。
- 父进程标识符(PPID):记录创建该进程的父进程的 PID。这种父子关系有助于操纵系统进行进程的条理管理和资源接纳。比如,当父进程停止时,操纵系统可以根据 PPID 找到其所有子进程,并进行相应的处理。
2.进程状态信息
- 当前状态:PCB 中会明确记录进程当前所处的状态,如运行态、停当态、阻塞态、创建态或停止态。这些状态反映了进程在其生命周期内的不同阶段和活动环境。操纵系统根据进程状态来进行调度和资源分配。比方,只有处于停当态的进程才有机会被调度到 CPU 上运行。
- 状态转换信息:除了当前状态,PCB 可能还会记录进程状态转换的相干信息,如进入阻塞态的原因、从阻塞态恢复到停当态的条件等。这些信息有助于操纵系统更好地管理进程的状态转换。
3.进程调度信息
- 优先级:PCB 中存储了进程的优先级,用于操纵系统进行进程调度时确定进程的实行顺序。优先级高的进程通常会优先获得 CPU 资源。比方,及时进程的优先级通常较高,以确保它们可以或许及时相应外部变乱。
- 调度相干时间信息:包括进程已经使用的 CPU 时间、上次调度的时间等。这些信息可以资助操纵系统实现公平调度和时间片轮转等调度算法。比方,在时间片轮转调度算法中,操纵系统会根据进程已经使用的 CPU 时间来判断是否须要将其停息,转而调度其他进程。
4.进程资源信息
- 内存信息:记录进程的内存使用环境,如进程的代码段、数据段和堆栈段在内存中的起始所在和大小(内存指针)。操纵系统通过这些信息来管理进程的内存分配和接纳,确保进程之间的内存空间相互隔离。
- 文件描述符表:PCB 中包罗一个文件描述符表,用于记录进程打开的文件和装备。每个文件描述符对应一个打开的文件或装备,进程可以通过文件描述符来进行文件的读写、装备的控制等操纵。
- I/O 装备信息:记录进程使用的 I/O 装备,如正在使用的磁盘、打印机等。操纵系统根据这些信息来和谐进程对 I/O 装备的访问,制止装备冲突。
5.进程上下文信息
- 寄存器值:PCB 中保存了进程在实行过程中的各种寄存器值,如程序计数器(PC)、栈指针(SP)、通用寄存器等。当进程被停息实行时,这些寄存器值会被保存到 PCB 中;当进程再次被调度实行时,操纵系统会从 PCB 中恢复这些寄存器值,使进程可以或许继承之前的实行状态。
- 程序状态字(PSW):记录了进程的实行状态和一些控制信息,如标志位(如进位标志、零标志等)、停止允许位等。PSW 对于操纵系统进行停止处理和非常处理非常紧张。
八、进程调度相干的属性
1)进程的状态
1. 运行态(Running)
- 定义:进程正在占用 CPU 并实行其程序代码。在单 CPU 系统中,同一时刻只有一个进程处于运行态;而在多 CPU 系统中,可能有多个进程同时处于运行态。
- PCB 表现:PCB 中会有相应的标志位来表明该进程正处于运行态,同时记录当前进程在 CPU 上实行时的各种寄存器值,如程序计数器(PC),它指向进程下一条要实行的指令所在,还有通用寄存器的值等,这些信息能让进程在运行过程中保持其实行现场。
2. 停当态(Ready)
- 定义:进程已经准备好运行,只等待操纵系统分配 CPU 资源。处于停当态的进程已经具备了运行的所有条件,只是由于 CPU 被其他进程占用,暂时无法实行。
- PCB 表现:PCB 中状态字段会标记为停当态。操纵系统会将所有处于停当态的进程构造成一个停当队列,通过 PCB 中的指针等信息将这些进程毗连起来,方便操纵系统进行调度,选择下一个要运行的进程。
3. 阻塞态(Blocked)
- 定义:也称为等待态,进程因等待某个变乱(如 I/O 操纵完成、等待信号量等)而无法继承实行,主动放弃 CPU 进入等待状态。在变乱未发生之前,进程不能被调度实行。
- PCB 表现:PCB 状态标记为阻塞态,并且会记录进程等待的变乱类型和相干信息。比方,如果进程在等待磁盘 I/O 操纵完成,PCB 中会记录对应的磁盘装备号、要读写的数据块所在等信息。操纵系统会将处于阻塞态的进程构造成不同的阻塞队列,每个队列对应一种等待变乱。
4. 创建态(New)
- 定义:进程正在被创建的过程中。操纵系统须要为新进程分配 PCB、初始化相干信息、分配内存空间等,在这些操纵完成之前,进程处于创建态。
- PCB 表现:此时 PCB 处于初始化阶段,部分信息可能还未完全设置好。操纵系统会渐渐添补 PCB 中的各项内容,如进程 ID、初始状态等。
5. 停止态(Terminated)
- 定义:进程已经实行完毕或者因某种原因(如程序堕落、被外部强制停止等)而停止。操纵系统须要进行一些善后工作,如开释进程占用的资源(内存、文件描述符等)。
- PCB 表现:PCB 状态标记为停止态,操纵系统会根据 PCB 中的信息来接纳进程所占用的各种资源,之后再开释 PCB 本身所占用的内存空间。
进程状态转换
- 创建态 -> 停当态:当操纵系统完成了新进程创建的所有初始化工作后,将进程放入停当队列,进程状态从创建态转换为停当态。
- 停当态 -> 运行态:操纵系统的调度程序从停当队列中选择一个进程,为其分配 CPU 资源,该进程状态从停当态变为运行态。
- 运行态 -> 阻塞态:当运行中的进程须要等待某个变乱时(如发起 I/O 请求),主动放弃 CPU 进入阻塞态。
- 阻塞态 -> 停当态:当进程等待的变乱发生(如 I/O 操纵完成),操纵系统会将该进程从阻塞队列移到停当队列,进程状态从阻塞态变为停当态。
- 运行态 -> 停止态:进程实行完毕或者碰到严峻错误、被外部强制停止等环境,进入停止态。
2)优先级
先给谁排 给谁排多少
3)上下文(存档的内容)
操纵系统在进行进程间切换的时候 就须要把进程实行的“中央状态”记录下来,保存好
下次这个进程再上cpu运行的时候,就可以恢复上次的状态好继承向下实行
存档,读档
进程的上下文,就是cpu中的各个寄存器的值 (寄存器:CPU内置的存储数据的模块,保存的就是程序运行过程中的中央效果)
保存上下文 就是把这些CPU寄存器的值记录保存到内存中(pcb中)
恢复上下文 就是把内存中的这些寄存器值恢复归去
4)记账信息
1. 操纵系统,统计每个进程在cpu上占用的时间和实行的指令数目,根据这个来决定下一阶段如何调度
2. 内存管理:捏造所在 MMU硬件装备 (捏造所在映射物理所在)操纵系统内核发现所在越界 直接反应错误(谁出bug谁崩溃 不会对其他进程造成影响)
当物理内存不足时,操纵系统可以将暂时不用的内存页面交换到磁盘上,须要时再换回来,从而为程序提供一个比现实物理内存大得多的捏造内存空间
3. 进程之间相互交互的题目 在隔离性的基础上 创建一个公共区域来交换数据
共享内存
- 原理:共享内存是一种最为高效的进程间通信(IPC)方式。操纵系统会在物理内存中开辟出一块特定的区域,多个进程可以将这块区域映射到它们各自的捏造所在空间中。如许,不同进程就可以直接对这块公共的物理内存区域进行读写操纵,犹如访问本身的内存空间一样,从而实现数据的快速交换。
- 示例:在 Linux 系统中,可以使用shmget函数来创建共享内存段,使用shmat函数将共享内存段映射到进程的所在空间。多个进程通过这种方式毗连到同一个共享内存段后,就能进行数据的交互。比方,一个数据收罗进程将收罗到的数据写入共享内存,另一个数据分析进程从共享内存中读取数据进行分析。
消息队列
- 原理:消息队列是一种异步的通信方式,它在操纵系统内核中创建一个队列数据结构作为公共区域。进程可以将消息(数据块)放入队列中,也可以从队列中取出消息。消息队列按照一定的规则进行管理,如先进先出(FIFO),确保消息的有序传递。
- 示例:在 Unix 和 Linux 系统中,使用msgget函数创建或获取一个消息队列,使用msgsnd函数将消息发送到队列中,使用msgrcv函数从队列中接收消息。比如,在一个多进程的日记处理系统中,各个进程将日记消息发送到消息队列,日记处理进程从队列中取出消息进行统一的存储和分析。
管道
- 原理:管道是一种半双工的通信方式,分为无名管道(Pipes)和命名管道(FIFOs)。无名管道通常用于具有亲缘关系的进程(如父子进程)之间的通信,它是一个特殊的文件,在内存中开辟一块缓冲区作为公共区域。数据从管道的一端写入,从另一端读出。命名管道则可以在恣意两个进程之间进行通信,它有一个对应的文件路径名,多个进程通过该路径名来访问这个管道。
- 示例:在 Linux 系统中,使用pipe函数创建无名管道。比方,父进程可以将数据写入管道,子进程从管道中读取数据。命名管道可以使用mkfifo函数创建,不同进程可以通过读写该命名管道文件来实现数据交换。
共享文件
- 原理:多个进程可以同时访问同一个文件,将文件作为公共的数据交换区域。进程可以将数据写入文件,其他进程从文件中读取数据。为了包管数据的一致性和完整性,通常须要使用文件锁等机制来进行并发控制。
- 示例:多个进程可以对一个文本文件进行读写操纵。比方,一个进程将统计数据写入文件,另一个进程定时从文件中读取数据进行展示。在数据库系统中,多个客户端进程可以通过共享数据库文件来进行数据的交互和共享。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |