操作系统
gloryor
这个作者很懒,什么都没留下…
展开
-
RT-Thread的INIT_xxx_EXPORT 宏详解
【代码】RT-Thread的INIT_xxx_EXPORT 宏详解。转载 2022-09-24 10:12:27 · 1153 阅读 · 1 评论 -
I/O输入输出——I/O设备(块设备与字符设备)
从设备两个字我们应该了解它们属于操作系统的哪个部分,和什么部分交互,以及有什么性质和特征。块设备是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存放暂时的数据,待条件成熟后,从缓存一次性写入设备或者从设备一次性读到缓冲区。这些数据片就称作块。最常见的块设备是硬盘,除此以外,还有软盘驱动器、CD-ROM驱动器和闪存等等许多其他块设备。注意,它们都是以安装文件系统的方式使用的——这也是块设备的一般访问方式。字符设备另一种基本的设备类型是字符设备。是一个顺序的数据原创 2021-09-23 17:25:13 · 1356 阅读 · 0 评论 -
内存、RAM、ROM、Cache的关系
1、内存内存在电脑中起着举足轻重的作用。内存一般采用半导体存储单元,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)。2、RAMRAM:随机存取存储器(random access memory),又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。当电源关闭时RAM不能保留数据。如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。我们通常购买原创 2021-09-23 09:55:09 · 15940 阅读 · 0 评论 -
实模式和保护模式
在学习操作系统时,出现了实模式或者保护模式的概念。我不是很清楚。历史发展 从80386开始,CPU有三种工作模式:实模式、保护模式和虚拟8086模式。80286开始的CPU引入保护模式,实际上,实模式概念是在保护模式推出之后为了区别保护模式之前的8086CPU工作模式才有的,在8086时代CPU工作模式只有一种,自然没有实模式之说。实模式有着先天的缺陷(下文详述),但出于向上兼容的考虑,现代CPU仍然保持着对16位操纵模式的兼容。 所谓工作模式,是指CPU的寻址方式、寄存器大...转载 2021-09-23 09:45:26 · 4119 阅读 · 1 评论 -
自旋锁和互斥锁
背景我们知道互斥锁的概念经常和 进程(同步)通信 和 线程同步 等联系起来。自旋锁常常在内核同步的内容中。实现原理:在实现机制上,互斥锁属于sleep-waiting(睡眠等待)类型的锁。自旋锁则不然,它属于busy-waiting(忙等待)类型的锁。例如在一个双核的机器上有两个线程(线程A和线程B),它们分别运行在A和 B上。我们从线程来了解。假设线程A想要通过pthread_mutex_lock操作去得到一个临界区的锁,而此时这个锁正被线程B所持有,那么线程A就会被阻塞 (blo原创 2021-09-21 17:36:37 · 353 阅读 · 0 评论 -
Linux——虚拟文件系统
组成在Linux组成中我们知道,Linux内核可以分为 进程管理 内存管理 网络接口 设备驱动程序 以及 虚拟文件系统。背景和定义“一切皆是文件”是 Unix/Linux 的基本哲学之一。不仅普通的文件,目录、字符设备、块设备、 套接字等在 Unix/Linux 中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作界面。而虚拟文件系统正是实现上述两点 Linux 特性的关键所在。虚拟文件系统(Virtual File System, 简称 VFS), 是 Linux...转载 2021-09-20 23:41:34 · 563 阅读 · 0 评论 -
Linux系统——组成与结构
结构图这是我在不同的文章看到的不同的形式,实际上只是侧重点不同。左图是分为用户空间 和 内核空间 ,用户空间有应用程序 和 glibc。 内核空间 包括 内核 和 系统调用。右图是应用软件,shell——用户界面的意思,提供了用户与内核进行交互操作的一种接口;系统调用,库函数,以及内核。Linux内核的结构都基本是这个形式内核包括,进程管理,内存管理,文件系统——文件系统有虚拟文件系统,网络接口,以及设备驱动程序——这个模块在更底层,访问硬件设备。每个部分都可以自行搜索,..原创 2021-09-17 15:41:43 · 112 阅读 · 0 评论 -
vscode插件分享
这里原创 2021-09-14 14:19:10 · 57 阅读 · 0 评论 -
阻塞,忙等待,睡眠,挂起简单理解
阻塞是线程自己发现没资源,获取不到资源,它自己先去休息了,有资源它会自己回来,而且不占用CPU。忙等待是指线程找不到资源就一直等,并且将CPU占据。睡眠是指CPU告诉线程,你先去休息,过规定时间,你自己回来。挂起是指CPU告诉线程你先去休息,有资源我告诉你。它会释放CPU。...原创 2021-09-12 17:54:27 · 2379 阅读 · 0 评论 -
Linux的inode
inode是什么?——index node理解inode,要从文件储存说起。文件存储在硬盘上,硬盘的最小存储单位叫做“扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是4KB,即连续八个sector组成一个block。文件数据都储存在“块”中,那么很显然,我们还必须找到一个地方原创 2021-09-11 22:58:36 · 97 阅读 · 0 评论 -
IO多路复用
了解什么是IO对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说,当一个read操作发生时,它会经历两个阶段:1. 等待数据准备 (Waiting for the data to be ready) 等待客户端连接(conn ,addr 客户端的每一个连接就是一个socket对象) 2. 将数据从内核拷贝到进程中 (Copying the data from the kernel to the process.原创 2021-09-11 17:15:54 · 170 阅读 · 0 评论 -
Linux的进程间通信(IPC)
管道( pipe ):最初是半双工的,现在某些系统提供全双工管道。Linux的管道是继承Uinx的进程间通信机制。在管道的具体实现中,根据通信所使用的的文件是否具有名称,有“匿名管道”和“命名管道”。通常,一个管道由一个进程创建,然后该进程调用fork,此后父进程与子进程之间就可以使用管道通讯。这就是匿名管道。命名管道是在实际文件系统上实现的一种通信机制。由于它是一个与进程没有“血缘关系”的、真正且独立的文件,所以它可以在任意进程之间实现通信。由于命名管道不支持诸如lseek()等文件定位操作.原创 2021-09-10 15:29:21 · 104 阅读 · 0 评论 -
open() 与 fopen()
什么是open()?open函数属于Linux中系统IO。在Linux下一般用来打开或者创建一个文件,使用open()打开一个文件意味着获得了这个文件的访问句柄。 如果操作成功,它将返回一个文件描述符,如果操作失败,它将返回-1。什么是句柄(file descriptor 简称fd)首先每个文件都属于自己的句柄,例如标准输入是0,标准输出是1,标准出错是2。每打开一个文件就会返回句柄来操作这个文件,一般是从3开始,然后4,5,6一直下去。close(fd) 之后句柄就返回给系统,例...原创 2021-09-09 21:51:01 · 406 阅读 · 0 评论 -
Linux操作系统包含哪些部分?学习笔记
简介:三部分:bootloader(引导加载程序)、linux kernel(linux内核)、rootfile(根文件系统)。 那么这3部分是怎么相互协作来构成这个系统的呢?各自有什么用呢?三者有什么联系?怎么联系?系统的执行流程又是怎么样的呢?1 启动顺序当启动一个Linux系统 :bootloader->linuxkernel->rootfile启动过程:一个嵌入式Linux系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux内核,文件系..原创 2021-09-09 21:22:44 · 834 阅读 · 0 评论 -
Linux编译过程
预编译过程一般是读取 .c 或 .cpp 源程序,对其中的伪指令(以# 开头的指令)和特殊符号进行处理。伪指令有 宏定义,条件编译, 头文件包含指令。特殊符号如 LINE 标识将被解释为当前行号(十进制数),FILE则被解释为当前被编译的C源程序的名称。编译过程编译程序要做的是,通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将其翻译成等价的中间代码表示或汇编代码。不同编译系统会有优化处理。汇编过程实际上指把汇编语言代码翻译成目标机器指令的过程。链接过程由汇编原创 2021-09-08 17:35:47 · 204 阅读 · 0 评论 -
哲学家就餐问题,饥饿和死锁
1965年,Dijkstra提出并解决了一个他称之为哲学家就餐的同步问题。从那时起,每个发明新的同步原语的人都希望通过解决哲学家就餐问题来展示其同步原语的精妙之处。这个问题可以简单地描述如下:五个哲学家围坐在一张圆桌周围,每个哲学家面前都有一盘通心粉。由于通心粉很滑,所以需要两把叉子才能夹住。相邻两个盘子之间放有一把叉子,餐桌如图所示。哲学家的生活中有两种交替活动时段:即吃饭和思考都无关紧要)。当一个哲学家觉得饿了时,他就试图分两次去取其左边和右边的叉子,每次拿一把,但不分次序。如果成功地得到了两把原创 2021-09-08 16:40:35 · 1531 阅读 · 0 评论 -
硬链接和软链接
硬链接是多个目录项中的「索引节点」指向一个文件,也就是指向同一个 inode,但是 inode 是不可能跨越文件系统的,每个文件系统都有各自的 inode 数据结构和列表,所以硬链接是不可用于跨文件系统的。由于多个目录项都是指向一个 inode,那么只有删除文件的所有硬链接以及源文件时,系统才会彻底删除该文件。软链接相当于重新创建一个文件,这个文件有独立的 inode,但是这个文件的内容是另外一个文件的路径,所以访问软链接的时候,实际上相当于访问到了另外一个文件,所以软链接是可以跨文件系统的,..原创 2021-09-07 21:40:20 · 100 阅读 · 0 评论 -
一个进程最多可以创建多少个线程?
一个32位的linux操作系统,一个进程有4G虚拟内存,内核会分走1G,一般的linux系统创建一个线程会分配一个栈空间,一般栈空间大小在8-10M。所以可以创建大约300个线程。原创 2021-09-07 21:21:20 · 1937 阅读 · 0 评论 -
进程调度算法
操作系统三大调度机制之一——进程调度算法也称CPU调度算法先来先服务调度算法(First Come First Severd, FCFS)顾名思义,先来后到,每次从就绪队列选择最先进入队列的进程,然后一直运行,直到进程退出或被阻塞,才会继续从队列中选择第一个进程接着运行。这似乎很公平,但是当一个长作业先运行了,那么后面的短作业等待的时间就会很长,不利于短作业。FCFS 对长作业有利,适用于 CPU 繁忙型作业的系统,而不适用于 I/O 繁忙型作业的系统。最短作业优.转载 2021-09-07 21:04:52 · 136 阅读 · 0 评论 -
中断和轮询
外部设备与中央处理器交互一般有两种手段:轮询和中断。轮询(Polling)很多I/O设备都有一个状态寄存器,用于描述设备当前的工作状态,每当设备状态发生改变时,设备将修改相应状态寄存器位。通过不断查询设备的状态寄存器,CPU就可以了解设备的状态,从而进行必要的I/O操作。为了节约CPU资源,查询工作往往不是连续的,而是定时进行。轮询方式具有简单、易实现、易控制等优势,在很多小型系统中有大量应用。对那些实时敏感性不高、具有大量CPU资源的系统来说,轮询方式有很广泛的应用。最典型的用途就是...原创 2021-09-07 18:01:02 · 5100 阅读 · 0 评论 -
Linux内核同步机制
为什么要引入同步机制?在操作系统引入了进程概念,进程成为调度实体后,系统就具备了并发执行多个进程的能力,但也导致了系统中各个进程之间的资源竞争和共享。另外,由于中断、异常机制的引入,以及内核态抢占都导致了这些内核执行路径(进程)以交错的方式运行。对于这些交错路径执行的内核路径,如不采取必要的同步措施,将会对一些关键数据结构进行交错访问和修改,从而导致这些数据结构状态的不一致,进而导致系统崩溃。因此,为了确保系统高效稳定有序地运行,linux必须要采用同步机制。各种内核同步机制原子操...原创 2021-09-06 16:08:07 · 351 阅读 · 0 评论 -
那么什么是静态库?什么是动态库呢?
静态库:静态库就是在编译程序时,直接讲库中的代码链接到可执行程序中优点:这样做的一个优点就是可执行程序可以直接运行,并且运行效率较高(不需要额外链接)缺点:假如多个程序使用同一个静态库,等同于多段相同的代码分别保存在不同的可执行程序中,变相占用了更多的内存空间。动态库:动态库就是编译程序时,可执行程序中只保存对应的函数引用表,只有到程序执行时,再链接对应的库。优点:多个可执行程序共用同一个库,节省内存。缺点:运行可执行程序需要额外做一次链接操作,执行速度会相对慢一些...原创 2021-09-04 22:13:27 · 1982 阅读 · 0 评论 -
为什么操作系统采用缓冲技术
,能够减少对CPU的中断次数,从而提高资源的利用率。CPU的电子速度,内存和硬盘的机械速度,这两者之间是无法逾越的鸿沟,多层级的缓冲储存器设置就是为了缓解这一矛盾。中断是不可避免的(纯科学计算的情况很少发生)。缓冲区的作用是提高了IO速度,减少了中断的可能性。...原创 2021-09-04 16:56:35 · 1742 阅读 · 0 评论 -
用户态和内核态是如何切换的?
所有的用户进程都是运行在用户态的,但是我们上面也说了,用户程序的访问能力有限,一些比较重要的比如从硬盘读取数据,从键盘获取数据的操作则是内核态才能做的事情,而这些数据却又对用户程序来说非常重要。所以就涉及到两种模式下的转换,即用户态 -> 内核态 -> 用户态,而唯一能够做这些操作的只有系统调用,而能够执行系统调用的就只有操作系统。一般用户态 -> 内核态的转换我们都称之为 trap 进内核,也被称之为陷阱指令(trap instruction)。他们的工作流程如下:...转载 2021-09-03 15:43:06 · 2049 阅读 · 0 评论 -
linux——内核态和用户态的区别
内核态:操作系统在内核态运行——运行操作系统程序用户态:应用程序只能在用户态运行——运行用户程序当一个进程在执行用户自己的代码时处于用户运行态(用户态),此时特权级最低,为3级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态。Ring3状态不能访问Ring0的地址空间,包括代码和数据;当一个进程因为系统调用陷入内核代码中执行时处于内核运行态(内核态),此时特权级最高,为0级。执行的内核代码会使用当前进程的内核栈,每个进程都有自己的内核栈。...原创 2021-09-02 10:44:47 · 530 阅读 · 0 评论 -
linux系统调用与普通调用的区别
系统调用:1.使用INT和IRET指令,内核和应用程序使用的是不同的堆栈,因此存在堆栈的切换,从用户态切换到内核态,从而可以使用特权指令操控设备2.依赖于内核,不保证移植性3.在用户空间和内核上下文环境间切换,开销较大4.是操作系统的一个入口点普通函数调用:1.使用CALL和RET指令,调用时没有堆栈切换2.平台移植性好3.属于过程调用,调用开销较小4.一个普通功能函数的调用...原创 2021-09-02 10:41:31 · 379 阅读 · 0 评论 -
操作系统——死锁篇
什么是僵尸进程僵尸进程是已完成且处于终止状态,但在进程表中却仍然存在的进程。僵尸进程通常发生在父子关系的进程中,由于父进程仍需要读取其子进程的退出状态所造成的。死锁产生的原因死锁产生的原因大致有两个:资源竞争和程序执行顺序不当死锁产生的必要条件资源死锁可能出现的情况主要有 互斥条件:每个资源都被分配给了一个进程或者资源是可用的 保持和等待条件:已经获取资源的进程被认为能够获取新的资源 不可抢占条件:分配给一个进程的资源不能强制的从其他进程抢占资源,它只转载 2021-08-31 14:08:08 · 472 阅读 · 0 评论 -
操作系统的时钟是什么?
时钟(Clocks)也被称为定时器(timers),时钟/定时器对任何程序系统来说都是必不可少的。时钟负责维护时间、防止一个进程长期占用 CPU 时间等其他功能。时钟软件(clock software)也是一种设备驱动的方式。下面我们就来对时钟进行介绍,一般都是先讨论硬件再介绍软件,采用由下到上的方式,也是告诉你,底层是最重要的。时钟硬件在计算机中有两种类型的时钟,这些时钟与现实生活中使用的时钟完全不一样。 比较简单的一种时钟被连接到 110 V 或 220 V 的电源线上,这样...原创 2021-08-31 13:53:23 · 3658 阅读 · 0 评论 -
内存管理——虚拟内存(基本概念)
虚拟内存中,允许将一个作业分多次调入内存。釆用连续分配方式时,会使相当一部分内存空间都处于暂时或永久的空闲状态,造成内存资源的严重浪费,而且也无法从逻辑上扩大内存容量。因此,虚拟内存的实需要建立在离散分配的内存管理方式的基础上。虚拟内存的实现有以下三种方式: 请求分页存储管理。 请求分段存储管理。 请求段页式存储管理。 不管哪种方式,都需要有一定的硬件支持。一般需要的支持有以下几个方面: 一定容量的内存和外存。 页表机制(或段原创 2021-08-30 21:58:58 · 432 阅读 · 0 评论 -
什么是虚拟内存?
虚拟内存是一种内存分配方案,是一项可以用来辅助内存分配的机制。我们知道,应用程序是按页装载进内存中的。但并不是所有的页都会装载到内存中,计算机中的硬件和软件会将数据从 RAM 临时传输到磁盘中来弥补内存的不足。如果没有虚拟内存的话,一旦你将计算机内存填满后,计算机会对你说对不起,您无法再加载任何应用程序,请关闭另一个应用程序以加载新的应用程序。对于虚拟内存,计算机可以执行操作是查看内存中最近未使用过的区域,然后将其复制到硬盘上。虚拟内存通过复制技术实现了系统能装这么多程序的资本。复制是自动进行...原创 2021-08-30 21:49:57 · 93 阅读 · 0 评论 -
进程和线程的关系和区别
1.一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程,即主线程2.资源分配给进程,同一进程的所有线程共享该进程的所有资源3.处理机分给线程,即真正在处理机上运行的是线程4.同个进程间的线程,在执行过程中,需要协作同步5.不同进程间的线程,在执行过程中,则需要利用消息通信的办法实现同步进程与线程的区别调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行..原创 2021-08-29 21:39:13 · 128 阅读 · 0 评论 -
内存为什么要分段?
内存是随机访问设备,对于内存来说,不需要从头开始查找,只需要直接给出地址即可。内存的分段是从8086 CPU开始的,8086 的 CPU 还是 16 位的寄存器宽,16 位的寄存器可以存储的数字范围是 2 的 16 次方,即 64 KB,8086 的 CPU 还没有虚拟地址,只有物理地址,也就是说,如果两个相同的程序编译出来的地址相同,那么这两个程序是无法同时运行的。为了解决这个问题,操作系统设计人员提出了让 CPU 使用段基址 + 段内偏移的方式来访问任意内存。这样的好处是让程序可以重定位,这...原创 2021-08-27 18:05:25 · 2052 阅读 · 0 评论 -
进程间状态转换
图中会涉及三种状态运行态:运行态指的就是进程实际占用 CPU 时间片运行时就绪态:就绪态指的是可运行,但因为其他进程正在运行而处于就绪状态阻塞态:阻塞态又被称为睡眠态,它指的是进程不具备运行条件,正在等待被 CPU 调度。逻辑上来说,运行态和就绪态是很相似的。这两种情况下都表示进程可运行,但是第二种情况没有获得 CPU 时间分片。第三种状态与前两种状态不同的原因是这个进程不能运行,CPU 空闲时也不能运行。三种状态会涉及四种状态间的切换,在操作系统发现进程不能继续执行...原创 2021-08-27 16:05:09 · 494 阅读 · 0 评论 -
IPC——进程间的通信
消息传递:消息传递是进程间实现通信和同步等待的机制,使用消息传递,进程间的交流不需要共享变量,直接就可以进行通信;消息传递分为发送方和接收方 先进先出队列:先进先出队列指的是两个不相关联进程间的通信,两个进程之间可以彼此相互进程通信,这是一种全双工通信方式 管道:管道用于两个相关进程之间的通信,这是一种半双工的通信方式,如果需要全双工,需要另外一个管道。 直接通信:在这种进程通信的方式中,进程与进程之间只存在一条链接,进程间要明确通信双方的命名。...原创 2021-08-27 15:52:42 · 68 阅读 · 0 评论 -
进程和线程的区别
我们上面说到进程是正在运行的程序的实例,而线程其实就是进程中的单条流向,因为线程具有进程中的某些属性,所以线程又被称为轻量级的进程。浏览器如果是一个进程的话,那么浏览器下面的每个 tab 页可以看作是一个个的线程。下面是线程和进程持有资源的区别线程不像进程那样具有很强的独立性,线程之间会共享数据创建线程的开销要比进程小很多,因为创建线程仅仅需要堆栈指针和程序计数器就可以了,而创建进程需要操作系统分配新的地址空间,数据资源等,这个开销比较大。...原创 2021-08-27 13:44:54 · 104 阅读 · 0 评论 -
什么是进程和进程表?
进程就是正在执行程序的实例。比如说一个web网页,shell,vim。操作系统负责管理所有正在运行的进程,操作系统会为每个进程分配特定的时间来占用 CPU,操作系统还会为每个进程分配特定的资源。操作系统为了跟踪每个进程的活动状态,维护了一个进程表。在进程表的内部,列出了每个进程的状态以及每个进程使用的资源等。...原创 2021-08-27 11:56:30 · 1262 阅读 · 0 评论 -
什么是内核?
在计算机中,内核是一个计算机程序,它是操作系统的核心,可以控制操作系统中的所有的内容。内核通常是在 boot loader 装载程序之前加载的第一个程序这里需要了解一下什么是 boot loaderboot loader 又被称为引导加载程序,能够将计算机的操作系统放入内存中。在电源通电或者计算机重启时,BIOS 会执行一些初始测试,然后将控制权转移到引导加载程序所在的主引导记录(MBR)。...原创 2021-08-27 11:40:53 · 3001 阅读 · 0 评论 -
什么是用户态和内核态?
用户态和内核态是操作系统的两种运行状态。内核态:处于内核态的 CPU 可以访问任意的数据,包括外围设备,比如网卡、硬盘等,处于内核态的 CPU 可以从一个程序切换到另外一个程序,并且占用 CPU 不会发生抢占情况,一般处于特权级 0 的状态我们称之为内核态。用户态:处于用户态的 CPU 只能受限的访问内存,并且不允许访问外围设备,用户态下的 CPU 不允许独占,也就是说 CPU 能够被其他程序获取。那么为什么要有用户态和内核态呢?这个主要是访问能力的限制的考量,计算机中有一些比..原创 2021-08-27 10:18:40 · 12953 阅读 · 4 评论 -
为什么linux的运行应用程序不能直接在windows下运行?
第一点linux和windows系统的格式不同,格式就是协议,就是在固定位置有意义的数据。linux下的可执行程序是elf ,可以使用 readelf 命令查看 elf 文件头。而windows下的可执行程序是PE格式,它是一种可移植的可执行文件。还有一点因为Linux系统和Windows系统的API不同,这个API是指操作系统的API。Linux中的API被称为系统调用,是通过int0x80这个软中断实现的。而Windows中的API时放在动态链接库文件中的,也就是Windows开.原创 2021-08-27 10:14:42 · 1565 阅读 · 0 评论 -
什么是操作系统?
操作系统是管理硬件和软件的一种应用程序。操作系统是运行在计算机上最重要的一种软件,它管理计算机的资源和进程以及所有的硬件和软件。它为计算机硬件和软件提供了一种中间层,使应用软件和硬件进行分离,让我们无需关注硬件的实现,把关注点更多放在软件应用上。通常情况下,计算机上会运行着许多应用程序,它们都需要对内存和 CPU 进行交互,操作系统的目的就是为了保证这些访问和交互能够准确无误的进行。...原创 2021-08-26 13:53:48 · 153 阅读 · 0 评论