![](https://img-blog.csdnimg.cn/1ae58a6518c74496927f9d396ce20027.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
王道操作系统原理学习笔记
文章平均质量分 81
掌握操作系统原理,只是当作笔记来记录,不喜勿喷,谢谢!!
IT贱男
越努力,越幸运!
展开
-
操作系统原理 —— 文件的逻辑结构(二十三)
我们来看下索引顺序文件,索引顺序文件是索引文件和顺序文件思想的结合,在索引顺序文件中,同样会为文件建立一张索引表,但是不同的是,并不是为每一个记录对应一个索引表项,而是一组记录对应一个索引表项。思考一下索引文件的缺点,表里面每一条数据都对应一个索引表项,因此索引表可能会很大,比如主表有1w条数据,那么对应的索引表也会是1w条数据,那有没有可能再优化一下呢?结构来看,我们可以打开一个记事本,里面的文字内容从用户的角度来看就是无结构的,但是又从 Excel 来看,它是有结构的,它可以包含表头、包含数据。原创 2023-06-13 15:10:28 · 1371 阅读 · 0 评论 -
操作系统原理 —— 什么是基本分页存储管理?(二十二)
为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表页表通常是存放在 PCB 当中。那页表是如何来记录的呢?如下图:在页表中会维护叶号和对应的块号,就能完成映射。原创 2023-06-08 14:15:17 · 910 阅读 · 0 评论 -
操作系统原理 —— 内存动态分区分配算法(二十一)
在上一个章节我们讲了的几种方式,有单一、固定、动态这三种,在固定、动态这种里面,操作系统会记录空闲分区表,这个表是用来记录当前空闲的内存。那么在之后有新的进程装入内存,需要从空闲分区表中找到一块比较合适的空闲内存,该怎么找呢? 这个就是今天我们要讲解的,几种不同方式的。算法思想:每次都从低地址开始查找,找到第一个能满足大小的空闲分区。如何实现:,每次分配内存时顺序查找空闲分区表或者空闲分区链,找到第一个能满足大小的空闲分区。这个算法很好理解,就从低位置开始找,找到第一个大小符合要求的就行,看下面的例子:在这原创 2023-06-07 18:12:25 · 2009 阅读 · 1 评论 -
操作系统原理 —— 内存连续分配管理方式(二十)
在之前的章节中,我们到了内存管理,其中有一个很重要的功能,就是对操作系统中的内存进行分配和回收。那如何对操作系统的内存进行分配呢? 整体上可以分为两种方式:连续分配管理方式、非连续分配管理方式。这里提到的是指:为用户进程分配的内存空间,必须是一个连续的内存空间地址。在连续分配管理方式,有划分了三种不同的方式,接下来我们一起来详细看看:在单一连续分配方式中,内存被划分为:系统区和用户区,系统区通常位于内存的低位置,用于存放操作系统相关数据,用户区就存放用户进程相关数据。在单一连续分配模式中,内存空间只能有一道原创 2023-06-06 17:55:51 · 937 阅读 · 0 评论 -
操作系统原理 —— 内存覆盖与交换(十九)
要弄清楚什么是覆盖与交换的概念,首先我们要知道在什么情况下才会使用到覆盖与交换。在早期的计算机内存很小的时候,比如 IBM 推出的第一台 PC 机最大只支持 1 MB 大小的内存,因此会经常出现内存大小不够的情况,后来就引入了 用来解决程序内存大小超过了物理内存总和的问题。说白了就是我需要运行一个 20 MB 大小的程序,但是这台计算机内存大小只有 10 MB 那怎么运行呢? 带入这个问题,我们接着往下看 是如何解决这个问题的。覆盖技术的思想:将程序分为多个段,常用的段常驻内存,不常用的段需要时调入内存原创 2023-06-06 15:00:11 · 785 阅读 · 0 评论 -
操作系统原理 —— 内存管理的概念(十八)
为什么要对内存进行管理,需要解决什么问题?要回答这个问题,首先我们需要明白:进程运行时,需放在内存才能运行。比如在执行一个程序时,需将该程序的相关数据与指令装入内存才能运行。但是内存是有限的,如果多个进程同时运行,就会出现内存不够用的情况。操作系统这时就帮我们做出抉择,并决定当前内存中应该存放哪几个进程,以及存放在内存中的什么位置。总的来说,需要对内存进行管理的原因是:内存空间有限,不能无限使用。引入内存管理能够解决的问题:进程在内存空间中怎么放,什么时候该放哪个进程进入内存。这一过程由操作系统帮助管理。以原创 2023-05-29 16:41:46 · 1073 阅读 · 0 评论 -
操作系统原理 —— 死锁的概念(十七)
什么是死锁,如果你是个程序员,那么这概念肯定是不陌生的,死锁通常是指,在并发环境下,各个进程因竞争资源而造成一种相互等待的现象,导致的结果就是各个进程都处于阻塞状态,无法往下继续执行,这种情况就能称之为死锁。举个生活中的例子就是,张三和李四放学回家,走到家门口,张三却发现钥匙在李四那,同时李四也发现自己家的钥匙在张三那,就这样,两个人都不能进家门。原创 2023-05-24 10:43:48 · 582 阅读 · 0 评论 -
操作系统原理 —— 什么是管程? 管程的概念以及作用(十六)
说白了,管程也是用来解决进程同步互斥的一种工具,他的操作比信号量更加简单,管程封装了同步操作,对进程隐藏了同步细节。那管程有什么好处?1、把分散在各个进程中临界区集中起来进行管理;2、防止进程有意或者无意的违法同步操作;3、便于用高级语言来写程序;说了这些好处,第一次看没理解也是很正常的,只能把管程了解透彻,才能明白它的好处,我们接着往下看。原创 2023-05-22 15:07:14 · 2830 阅读 · 0 评论 -
操作系统原理 —— 什么是信号量,信号量如何实现进程互斥、进程同步?(十五)
信号量可以这么简单的来理解,它其实就是一个变量,这个变量可以是一个整数,也可以是更复杂的记录型变量,可以用一个信号量来表示系统中某种资源的数量。比如:系统中只有一台打印机,就可以设置一个初始值为 1 的信号量。那怎么操作这个信号量变量呢?那么就是原语。原语是一种特殊的程序段,这个程序段它是能够保证原子性操作的,执行只能一气呵成,不能被中断。至于为什么原语能够保证原子性,是因为开中断/关中断这两个指令来实现的。知道原语的特性之后,那什么原语能够操作信号量呢?原创 2023-05-18 15:23:19 · 2528 阅读 · 1 评论 -
操作系统原理 —— 什么是进程互斥? 以及进程互斥的实现方式(十四)
在操作系统中,有两种资源共享方式,一种是互斥共享方式,一种是同时共享方式。互斥共享方式就是指在系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。这里就会有一个互斥的概念,一个时间段只允许一个进程访问,这就是进程互斥,还有一个概念就是,我们把一个时间段内只允许一个进程使用的资源称之为临界资源,比如说摄像头、打印机都属于临界资源。对于临界资源的访问,必须互斥的进行。指当一个进程访问某些临界资源时,另一个想要访问该临界资源的进程必须等待。原创 2023-05-15 11:19:56 · 1874 阅读 · 0 评论 -
操作系统原理 —— 七种常见的调度算法(十三)
大家都知道,学习这种类型的算法,在很多时候,我们只是学习它的一种思想,那有没有好的学习调度算法的思路呢?原创 2023-05-10 14:21:58 · 1782 阅读 · 0 评论 -
操作系统原理 —— 操作系统什么时候会发生进程的调度(十二)
当 CPU 没有任何进程任务需要处理的时候,CPU 它也不会闲着,操作系统会运行闲逛进程,让 CUP 去执行。闲逛进程的特性一般是优先级最低,然后执行能耗低。原创 2023-05-08 11:44:51 · 1708 阅读 · 0 评论 -
操作系统原理 —— 调度的概念、层次(十一)
在操作系统中的,是指操作系统从就序队列中选择一个作业,或者进程进行执行。举个例子:比如我们去银行窗口排队,排队的人就相当于就绪列表,窗口就相当于是操作系统,窗口需要服务排队客户。如果在正常的排队过程当中,如果有一个 VIP 的客户来银行需要办理业务,由于他是 VIP 客户,所以他会被窗口优先进行处理,在操作系统汇总也是同样的道理,有些任务可能比较紧急,或者执行的时间比较短,都有可能被优先执行,这就需要确定。那我们先来看一下,在什么时候用,会发生调度。高级调度又称之为作业调度,按一定的原则,并且创建进程。每个原创 2023-05-05 17:45:01 · 866 阅读 · 0 评论 -
操作系统原理 —— 线程的概念、实现方式、多线程模型(十)
有的进程可能需要 “同时” 做很多事情,而传统的进程只能串行的执行一系列的程序,为此,引入了 “线程” ,来增加并发度。可以把线程理解为轻量级进程,线程是可以基本的 CPU 执行单位,也是程序执行流的最小单位,引入线程之后,不仅是进程之间可以并发,进程内的各个线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务。引入线程后,进程只作为除 CPU 之外的系统资源的分配单元。原创 2023-05-04 16:08:28 · 1233 阅读 · 1 评论 -
操作系统原理 —— 进程之间通讯的几种方式(九)
进程通讯是指两个进程之间产生了数据交互,简称 IPC Inter-Process Communication。什么情况下会产生进程之间通讯呢?比如你们现在用手机看到了我这篇文章,觉得写的非常好,然后想要分享到微信的某个朋友,在这个时候其实就是跨进程了。需要从当前浏览文章的 APP 中,把当前文章相关的信息,通过进程通讯的方式,传递给微信,最终才能转发对应的内容。所以说,进程之间的通讯是很重要的,但是,进程之间的通讯的前提,是需要操作系统支持。那为什么要基于操作系统的支持,才能做到呢?原创 2023-04-26 11:46:53 · 696 阅读 · 0 评论 -
操作系统原理 —— 进程状态切换具体做了哪些事情?(八)
进程控制的主要功能是:对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。简单来说,就是进程控制就是要现实进程状态的转换。那如何实现进程的控制呢?答案就是使用原语来实现,如下图:在之前我们有提到过,原语是具有原子性操作的,运行必须一气呵成,那如果没有原子性,会发生什么事情呢?我们来看一下假设:在上图中,假设需要使用源语进行状态的切换,至少需要做两件事:1、将 PCB 2 的 state 设置为 12、将 PCB 2 从阻塞队列放入到就绪列表。原创 2023-04-24 16:18:08 · 599 阅读 · 0 评论 -
操作系统原理 —— 进程有哪几种状态?状态之间如何切换?(七)
主要是掌握进程的状态,以及状态之间的切换。原创 2023-04-23 14:32:53 · 1681 阅读 · 0 评论 -
操作系统原理 —— 什么是进程?进程由什么组成?有什么特征?(六)
在我小时候,刚刚接触电脑的时候,只会在浏览器中输入 搜索小游戏玩一玩,到后来,我学会了安装游戏,然后知道安装完成之后,找到对应的 的图标就可以运行游戏。好,那么什么时候是程序? 程序就是我们下载好安装包之后,点击安装,然后需要选择安装目录,最后在中对应的磁盘位置就能找到这个程序。在程序安装好之后,它是存储在磁盘上的,并且它是静态的,程序也就是一系列的指令集合。那什么是进程? 我们来一起看看下图:在我们程序安装好之后,运行所安装的程序,如果是你 系统可以使用查看,如果你是使用的 系统,可以使用 来查看原创 2023-04-23 11:23:18 · 599 阅读 · 0 评论 -
操作系统原理 —— 什么是系统调用?(五)
我们想想怎么是系统调用呢?系统调用是操作系统提供给应用程序(程序员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。我们一起来看下图:我们在操作系统中,可以使用控制台输入命令,不通过应用程序可以直接和操作系统交互,这个叫做:命令接口。而在应用程序中,我们程序员可以通过程序接口,来调用操作系统,让操作系统帮助我们完成所需的事情。那为什么需要系统调用呢?原创 2023-04-20 14:31:30 · 741 阅读 · 0 评论 -
操作系统原理 —— 什么是中断?(四)
为了解决程序只能串行执行的问题,人们发明了操作系统,操作系统相当于计算机的管理者,并且引入了中断机制,实现了多道程序并发执行。也就是说,在多个程序同时执行的时候,如果发生了中断就意味着需要操作系统来介入,展开管理工作。官方的定义:中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。从官方的定义来看,中断其实就是为了支持多道程序并发执行。原创 2023-04-19 16:22:44 · 1561 阅读 · 0 评论 -
操作系统原理 —— 操作系统运行机制与体系结构(三)
指令就是处理器(CPU)能识别、执行的最基本命令。比如我们平时写的 Java 代码、C 语言代码,CPU 它能直接识别并且运行吗?当然是不行的。Java、C 语言这些都属于高级语言,它们还需要经过一系列的编译最后才能成为 CPU 能够识别的指令。这里说几个重点:1、特权指令只能在核心态下执行2、内核程序只能在核心态下执行3、用户态、核心态之间的切换,也比较重要,这个后续再讲解。原创 2023-04-19 14:29:15 · 691 阅读 · 0 评论 -
操作系统原理 —— 操作系统的四个特征:并发、共享、虚拟、异步 (二)
本章我们来聊一下操作系统的四个特征在我们的操作系统中有四个特征:,我们结合每一个特征来进行讲解,我们先来看。这里所说的并发,最好不联想到并发编程。咱们就简简单单理解一下,在操作系统中的特性。定义:并发是指两个或多个事件,在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。这里和是两个概念,并行是指两个或者多个事件,在同一时间内,确确实实是一起在同步进行的,而并发不一样,并发是外表上看上去是在一起进行,实际上是底层交进行的。如果对并发、并行还不太了解的同学,可以先暂停,把这个问题弄清楚了,原创 2023-04-19 11:08:21 · 1643 阅读 · 0 评论 -
操作系统原理 —— 操作系统的概念、功能 (一)
不管是电脑、还是手机,都可以大致分为以下层级:我们从下往上看,首先肯定是需要硬件的支持,有了硬件之后才有我们的操作系统,我们可以在操作系统上进行安装应用程序,最终用户可以使用应用程序。在上图中,用户还可以直接来控制操作系统,比如我们可以不需要安装软件,使用命令行直接和操作系统进行交互。那从这个图中来看,操作系统它应该需要具备哪些作用呢?1、负责管理协调硬件、软件等计算机资源的工作2、为上层的应用程序、用户提供简单易操作的服务。原创 2023-04-18 14:52:31 · 607 阅读 · 0 评论