计算机操作系统(慕课版,汤小丹 王红玲著)

内容仅仅有我学的

第一章 操作系统引论

1.学习内容

1.1目标和作用

操作系统的目标:方便性(他这个性质使得用户不需要知道b站视频是如何加载出来的只要用户点击该视频就能看了)、有效性(你这个OS系统一是要提高资源利用率二是提高作业吞吐量即能同时运行多个软件不然你想边看小说边听音乐就不能实现了)、可扩充性(因为该系统后面肯定会发展的,i不能定死了)、开放性(为的是使国际有一个标准,不然容易导致软硬件不兼容的情况,那你换电脑之类的就要找特定的,很麻烦)

       操作系统的作用:1.作为用户与计算机硬件系统之间的接口 2.作为计算机系统资源的管理者,就是对处理机(CPU)、存储器(内存)、I/O设备、信息(数据和程序)这四类进行管理。3.实现对计算机资源的抽象,就是实现作用1的功能。

1.2发展过程

       未配置操作系统的计算机系统->单道批处理系统->多道批处理系统->分时系统

->实时系统  

他们的区别:

未配置操作系统的计算机系统

想象一下,这就好比是一个毛坯房,只有最基础的硬件在那儿,比如 CPU、内存、硬盘这些东西,但是没有一个“管家”来协调它们怎么工作。你要是想让计算机干点事儿,就得自己手动去控制每个硬件,告诉它们要做什么,怎么配合,操作起来特别麻烦,而且一次基本只能干一件事,效率很低。比如说你要运行一个简单的计算程序,就得自己去安排内存给它用,指挥 CPU 去处理数据,没个专业知识还真搞不定呢。

单道批处理系统

这时候相当于给计算机请了个初级“小管家”,不过这个管家的本事还比较有限。它可以把一堆要做的任务(就像一堆要洗的衣服)先收集起来,然后按照顺序一个一个地处理(一件一件地洗衣服)。同一时间里,计算机就只处理一道程序,等这道程序彻底完成了,才会接着处理下一道。好比洗衣机在洗这一批衣服的时候,就只能按顺序一件洗完再洗另一件,不能同时洗好几件。虽然比没有操作系统的时候方便点了,但效率还是不够高,因为 CPU 有时候得干等着一道程序完成某个步骤(比如等待数据输入输出的时候),没办法充分利用起来。

多道批处理系统

这个就好比是请了个更厉害的“大管家”啦,它能同时把好几件事(多个程序)安排给计算机做。就好像有一台大洗衣机,可以同时塞进去好几件衣服一起洗,CPU 不再是只能干等着一道程序慢吞吞地完成某个操作了,而是可以在这些程序之间灵活切换,一会儿处理这个程序里的数据计算,一会儿又去处理另一个程序的输入输出,充分利用 CPU 的时间,让计算机整体的工作效率大大提高。不过呢,这些程序都是一批一批地处理,用户不能随时去干预它们的运行,得等这一批任务都处理完了才能查看结果或者调整任务。

分时系统

分时系统就更贴心了,它有点像住在公寓里,大家共用一些设施,但是每个人(每个用户)都有固定的时间段可以使用一样。这个系统可以让多个用户同时使用计算机,每个用户感觉自己好像独占了这台计算机似的。其实呢,是系统把 CPU 的时间划分成很短的时间片,快速地在各个用户的任务之间来回切换,比如 1 秒钟里给每个用户轮流分配几毫秒的时间,由于切换速度特别快,大家就感觉不到别人也在同时用这台计算机了。每个用户都可以随时操作自己的任务,就像你随时可以在自己租用的公寓时段里自由活动一样,交互性很强。

实时系统

实时系统就像是一个时刻待命的保镖呀,它特别强调对时间的严格把控,要在规定的时间内完成任务,不能有一点拖延。比如说在一些工厂的自动化生产线上,如果控制系统是实时系统,它必须精确地按照设定好的时间去控制机器设备的启动、停止或者调整参数,要是晚了哪怕一秒,可能就会生产出次品,甚至引发危险。又比如航空航天里的一些监控系统,必须实时反馈飞行器的各种状态数据,一旦有异常得马上处理,不能耽误,所以实时性是它最重要的特点啦,对响应时间要求极高呢。

1.3操作系统的特性

1.3.1 并发:指的是在一段时间间隔里,有多个程序同时执行,比如一个小时内前面30分钟由进程1执行后面30分钟由进程2执行。和并行不同,并行指的是同一时间里多个程序同时执行就是两个进程在执行时他们的执行时间是有交叉的。

1.3.2共享:分为互斥共享和同时共享,前者比较典型的就是打印机,你在打印的时候别人没法打印,后者就是想象你住在公寓里,大家共用一条网络宽带(这就好比计算机里的各种资源)。你可以用手机连着它看视频,你的室友可以用电脑连着它打游戏,你们能够在同一时间(同时)使用这个网络资源呀,而且彼此不会互相干扰太多(共享),每个人都能做自己想做的事儿呢。

1.3.3虚拟:就是说你的内存空间其实没有这么大,比如你打游戏,这个游戏是2G的,但你还有其它软件在运行导致你的内存空间不够用,这个是时候OS系统就会使用手段(技术),将硬盘划分出一部分来当内存使用,让你以为你的内存增大了,其实没有。这就是虚拟,虚的是内存空间。

1.3.4异步:指的是一个进程执行完毕不是一下子就执行完的,可能由于各种原因,比如,其他的进程比你这个重要,那么当前进程就得让出资源给那个比较重要的进程执行。所以会导致进程得完成总是走走停停的,而这个走走停停就称为异步。

1.4操作系统的主要功能

1.4.1处理机管理功能(CPU)

进程控制:前面不是要引入进程吗,这个就是实现改功能的。功能就是创建进程、撤销进程、以及控制进程在运行过程中的状态转化。最后这个功能是为了应对前面局举的例子说如果碰到比较重要的进程,当前进程要让出资源,那这就涉及到进程状态的转化。

进程同步:分为进程同步方式和进程互斥方式,前者就是说两个进程分工合作共同完成一件事,这就是同步;后者的互斥,斥的是资源,当一个进程用这个资源的时候,其他进程想用该资源时没办法用,不然就乱套了。就像打印机,你在打印的时候,别人时没法对打印机进行操作的,不然可能你打印到一半的时候,别人一操作就打印他的了。

       进程通信:简单的说就是进程之间的信息交换,将进程与进程比做人与人之间,进程通信就是说我问你你打印完没啊,打印好的话该我打印了。

       调度:分为作业调度和进程调度,作业调度就是将你在硬盘上的东西调到内存中,进程调度就是在内存中的进程选择一个来执行。

1.4.2存储器管理功能(内存)

       内存分配和回收:前面讲作业调度不是说将东西调入内存吗,那你得为该东西(作业)分配地方存放它不是

       内存保护:保证存放在内存中的进程不要相互影响,不然就搞混了。也不允许用户自己更改OS的程序和数据

       地址映射:就是将软件中使用的地址转化到硬件中的地址

       内存扩充:就是前面讲的增加虚拟的内存空间,通过什么实现呢?通过请求调入功能和置换功能。

1.5操作系统的结构(这边主要讲一下模块化结构)

模块化结构追求松散耦合高内聚,什么意思呢,这要理解两个概念。

耦合度:即指模块间相互联系和相互影响的程度,耦合度越低,模块独立性就越强。

内聚性:指模块内部的紧密程度,内聚性越高,模块独立性越强

那为什么要追求松散耦合高内聚?因为当你程序中有一个模块出现问题的时候,如果模块的独立性强,那么有问题的模块对别的模块的影响就比较小,且你修复的时候也不用看整个程序,就只需要看出现问题的模块,维护起来比较方便。

2.学习中的理解

  • 什么是操作系统

操作系统是硬件之外的第一层软件,为用户提供一个接口来间接使用硬件。OS即操作系统为其他系统服务,例如数据库系统之类的。

  • 怎么判断一个系统是不是操作系统

资源管理:

操作系统要能管理计算机的硬件资源,像给不同软件分配 CPU 时间、合理划分内存空间,以及协调各软件使用硬盘、打印机等设备,还得管理文件存储,规定文件咋存、咋取名、谁能访问等。例如,它会决定你开多个软件时,哪个软件这会儿能用 CPU 运行,哪个软件得等会儿,像 Windows 系统就能在你同时开着办公软件、浏览器、音乐播放器时,协调好它们使用资源,让都能正常工作。

用户接口:

提供方便用户操作的方式,要么有命令行(输入命令操作,像 Linux 里输“ls”查文件列表),要么有图形化界面(用鼠标点图标、菜单操作,像 Windows 桌面那种直观界面),或者两者都有。

多任务支持:

可以同时运行多个程序,并且让它们好像一起在运行似的。比如你边听歌边用办公软件编辑文档,操作系统能让这俩事儿互不干扰,像 Windows、Linux、Mac OS 都能轻松做到这点。

  • 用户使用方便和计算机高效运行这两个矛盾吗

矛盾:

资源分配上:比如同时开多个大软件,用户想每个都流畅响应,希望多占资源,但计算机为整体高效,按策略分配资源,可能让软件卡顿,就矛盾了。

软件启动和后台管理方面:用户想软件快速启动、后台常驻方便用,可太多软件后台运行占资源,让计算机变慢,产生矛盾。

数据更新与实时反馈方面:像协同办公软件实时更新数据方便用户,但这会耗很多资源,影响计算机高效运行,也是矛盾。

       不矛盾:

合理设计的操作系统和软件:好的操作系统按任务轻重合理分资源,软件优化得好,占资源少又好用,像一些轻量化办公软件,既方便用又不拖累计算机,就不矛盾。

硬件资源充足时:计算机硬件配置高,比如内存大、CPU 性能强,即便软件功能多、方便用户,也有足够资源保证高效运行,这时两者不矛盾。

3.作业

图 1第一章作业1

图 2第一章作业1答案

图 3 第一章作业2

图 4 第一章作业2答案

第二章 进程的描述与控制

1.学习内容

1.1程序并发执行的特点

间断性:其实就是CPU的轮转法,可以理解为雨露均沾,每个进程分配点时间去执行。

失去封闭性: 就是指你这个进程在执行的时候不能只考虑自己了还得考虑别的进程有没有将你的资源拿去用,有的话你就得等待器完成后才能继续执行。

       不可再现性:就像几个人做一道菜,一人负责洗菜,一人炒菜,假如炒菜的人先把菜炒了,那洗菜的人想洗菜就没法倒退回去洗菜了。不可再现形就是说不可撤销性。

1.2进程描述

1.2.1定义与特征

进程是程序的执行过程,是系统进行资源分配和调度的一个独立单位。动态性(可以创建也可撤销)、并发性(就是前面讲的OS系统有着并发的特性,而进程的引入就是为了实现改功能,所以他也有这个性格)、独立性(能独立运行独立获得资源)、异步性(就是这个使得程序不可再现)

1.2.2状态与转化

一个循环就是从就绪转到执行再转到阻塞最后回到就绪,还有一个就是执行转到就绪,总共4种转化3种状态。这是最基本的三种状态之间的转化。就绪到执行在CPU调度时实现;执行到就绪在该进程时间片用完或被其他优先级更高的进程抢占CPU时实现;执行转为阻塞是因发生某事件而使当前进程执行受阻例如进程要访问已经被占领的临界资源,这是它就会由执行进入阻塞;阻塞转为就绪是在进程等待的事件发生,拿前面的例子就是说改进程要的临界资源可以分配给它了。

      

1.2.3挂起操作

挂起是将一个进程从内存中移出到外存中,使其不能被执行。那不是有阻塞吗,为什么不用。第一,阻塞的进程还是处在内存中占用资源,挂起能提高系统系能,以满足系统负荷调节的需要;第二,若终端用户发现程序运行有问题时,可以通过挂起操作来暂停程序以便进行对程序的修改,因为阻塞是由进程被动地由于无法获得资源而暂停,所以终端用户无法出于各种主观意愿去灵活地暂停程序的功能。

1.2.4进程管理的数据结构

OS系统用于资源管理的数据结构是PCB(process control block)

PCB由什么组成:进程标识符(类似身份证号)、处理机状态(用来记录进程在CPU的状态)

PCB的组织方式:线性方式(所有PCB都在一张表中,每次查找PCB都得查整张表)、链接方式(分类PCB,查找更快)、索引方式(类似书本的目录)

1.3 进程控制

进程控制负责创建新进程、终止已经完成的进程还有进程状态之间的转化。进程控制由OS内核中的原语来实现,原语就是可以把计算机程序想象成一个复杂的机械装置,原语就像是这个装置中的最基本的零件,如螺丝、螺母、齿轮等。这些零件本身具有简单而明确的功能,而且它们的功能是固定的,不能再细分。通过组合这些基本零件(原语),就可以构建出各种各样复杂的机械结构(复杂的程序)。

1.3.1 引起进程创建的事件(一个进程创建另一个进程)

1.用户登录:由登录进程去创建新进程。登录进程像酒店前台招待员,当有客人要入住酒店的时候,招待员(登录进程)会为其分配一个房间,这个房间就是客人(用户)在酒店(计算机系统)活动(使用系统资源)的专属空间。

2.作业调度:由作业调度进程来创建新进程以用来执行该作业

3.提供服务:可以理解为当作业调度进程创建的新进程不够用的时候而用户又提出新要求,那么提供服务进程就会产生一个新进程来执行新要求。有点像酒店里的服务员吧。

4.应用请求:就像你向酒店招待员提出请求,招待员会先判断你的请求复不复杂,如果复杂,它就会安排其他人(创建新进程)为你解决。

       1.3.2 进程的创建

申请空白PCB—>分配资源—>初始化PCB

1.4 线程的概念

就一个问题,为什么要引入线程,它是干什么用的

通过引入线程可以提高程序并发执行的程度也就是说提高程序运行效率,那不是直接多创建PCB就行了吗,首先PCB是有限的,其次线程有更低的资源开销和更高的切换效率。

2.学习中的理解

  • 为什么程序一定要被创建成为进程后,才能在OS中运行
  1. 进行资源分配:进程为程序提供独立空间进行安全、稳定执行,同时OS系统还可以为进程进行资源分配以实现并发执行,提高效率。
  2. 为上下文切换提供基础,为实现多任务处理,在时间片结束时需要保存当前进程状态而进入下一进程,所以为实现这点需要用到进程。
  3. 调度和优先级管理,通过对进程设置优先级以合理分配资源。
  • 在进程的创建中为什么先申请PCB再进行分配资源

因为你若先给资源,没有地方放该资源,得先有个PCB得空间来放系统给的资源。

3.作业

图 5 第二章作业1

图 6 第二章作业1答案

第三章 处理机调度与死锁

1.学习内容

1.1处理机调度概述

1.1.1高级调度

高级调度是将外存上处于后备队列中的哪几个作业调入内存,调度的对象是作业。高级调度主要用于多道批处理系统,分时和实时系统中不设置高级调度。

1.1.2低级调度

调度的对象是进程,根据某种算法,决定那个进程应获得CPU进行执行。

1.1.3中级调度

引入的目的就是为了提高内存利用率和系统吞吐量,实际上就是存储器中的对换功能,将暂时不能运行的进程调至外存等待,又将外存中具备条件的就绪进程调入内存。

1.2作业和作业调度

1.2.1作业

作业比进程更为广泛,包括程序和数据以及一份作业说明书(系统用来对程序的运行进行控制)在多道批处理系统中,会将作业作为基本单位从外存调入内存。

       作业像进程一样也有控制块,作业的叫做JCB(job control block)。

       作业调度算法要做什么:1.接纳多少个作业 2.接纳哪些作业   

1.3 进程调度

1.3.1进程调度任务:1.保存CPU现场信息(因为如果该进程由于发生了什么而被抢占CPU,那么下次在执行的时候为了能从上一次的进度开始,就得用用这个,不然从头加载态浪费资源了)。2.按某种算法选取进程:就是选择哪个进程来执行。 3.把CPU分配给进程:此时需要PCB里面有关CPU的现场信息以便从上次的断点出恢复。

1.4 调度算法

1.4.1 FCFS(先来先服务调度算法)

按照进程到达的顺序进行执行,就像排队结账,先到的人先结

1.4.2 SJF(短作业优先调度算法)

就是按照作业后进程所需要执行的实间的长短来决定先执行哪一个,越短的先执行。

缺点:忽视作业或进程的等待时间,可能使得作业等待时间过长以致引起饥饿现象;没考虑某一些作业的紧迫性,就是说重要性,越紧迫越得先执行。

1.4.3 优先级调度算法

相比于前面两种调度算法,该种算法考虑了进程或作业的紧迫性质来进行CPU的分配

1.4.4 RR(轮转调度算法)

就是你在一开始会设置一个固定的时间(时间片),比如30秒,然后这个算法就是给每个进程都分配30秒来执行,像几个人(进程)一起吃一根冰棒(CPU),怎么样吃态合理,就是一人舔一口轮着来,直到舔完为止。

所以该算法要有一个功能判断什么时候把CPU拿走或分配给别人,那什么时候呢,一种是在时间片用完你这个还没有执行完的情况,那该进程就得继续等下一轮来使用CPU。第二种是时间片还没用完或刚好用完时你这个进程就已经执行完了,那么这时系统也得进行切换CPU。

1.4.5多级列表队列调度算法

前面的轮转法有个缺点就是说如果一个进程需要执行的时间很长,而你设置的时间片对它来说都很短,那么它就得轮流很多次才可以执行完,现在用多级列表来解决这个问题。

       那他时怎么解决的呢:就是他会设计几个不同的队列,然后为每个队列设置不同的时间片,假设它设置了一、二、三级队列,分别有着由低到高的2、4、6大小的时间片。那么它是怎么分配CPU的呢,在前面的基础上,当有进程到达的先让他们都进入第一队列,然后在第一队列中按照FCFS算法分别分配CPU来执行一个2大小的时间片,若该进程没完成,就将其放入第二队列,这样下一次它执行的时候就是执行的4大小的时间片,从而避免的按轮转法执行的轮转许多次的缺点。这里要注意的是多个队列不是同时执行的,而是等上一个队列里的进程都没了才会去执行下一个队列里的进程,其实就是等上一个队列里的进程都执行一个当前大小的时间片后(因为这是不管某个进程有/没有执行完,按照算法它只会结束/进入下一队列),才会执行下一队列的进程。

下面两种算法主要用于实时系统的调度算法

1.4.6 EDF(最早截至时间优先算法)

       根据任务截至时间越早优先级越高,那么它就先执行。

1.4.7 LLF(最低松弛度优先算法)

       就是根据松弛度来决定进程优先级,松弛度越小,优先级越高。那怎么计算松弛度呢,就是等于截止时间-本身进程运行时间-当前时间。

1.5死锁

1.5.1死锁与资源

死锁是由竞争资源而引起的,不仅是在争夺不可抢占资源会,争夺可消耗资源也会。

资源按照两种分法,第一种分为可重用资源和可消耗资源:可重用资源指改资源可以重复多次被使用,数目一般固定不变,如果你要用该资源那么你得按照下面得步骤,请求资源->使用资源->释放资源;对于可消耗资源,一般由生产者创建,消费者消耗,数目是可变的;第二种分为可抢占资源和不可抢占资源,这个好理解,可不可以抢占就是决定着有优先级更高的进程能不能抢占优先级更低的进程在使用的资源。

1.5.2 死锁产生的条件

互斥条件(理解为不可抢占)、请求和保持条件、不可抢占条件、循环等待条件 这四个条件缺一不可,所以后面讲到如何解决死锁问题其实就是破环这四个条件中的一个

1.5.3 死锁的处理方式

主要从预防死锁和避免死锁两个方面简单讲一讲。

预防死锁:通过设置某些限制条件取破坏产生死锁的四个必要条件之一

避免死锁:用某种方法阻止系统进入不安全状态(你安全我才给你资源做事,否则我不给你资源,这样你没法做事就无法进入不安全状态。所以这需要一个安全判断的算法)

1.5.4 系统安全检查

银行家算法,这算法不好讲,看作业题目吧

2.学习中的理解

  • 为什么高级调度和中级调度都有将作业从外存中调入内存的功能,还要设置两个不同名字的调度

两个调度虽然实现的是有点一样的结果但是他们的目标是不一样的,高级调度的目标是提高系统的资源利用率和作业的吞吐量,且一般有新作业到达时才用高级调度将其调入内存,使用频率较中级调度低,中级调度的目标是提高内存的利用率和系统的并发性能,就是说当内存中有站着茅坑不拉屎的进程或外存有更紧急的进程的时候就将其调出或调入。

3.作业

这一题要注意一个点就是当B运行完结束的时候,是A抢占CPU而不是C,原因是这道题的内存一次性只能装入两道作业,且B执行完的时候C还处于后备状态,还没有变成就绪状态,进程要被执行首先得先成为就绪状态。

图 7第三章作业1

图 8第三章作业1答案

图 9 第三章作业2

图 10 第三章作业2答案

图 11 第三章作业2答案

图 12 第三章作业2

图 13第三章作业2答案

图 14第三章作业3

我做题遇到的问题总结:

1.开始截至实间指的是改进程最晚得在这个时间开始;

2.做抢占得时候记得把之前被抢占的进程继续执行完,不要落了;

3.做松弛度算法的时候是松弛度为零的时候抢占而不是松弛度比较小就可以抢占;

4.做松弛度算法的时候麻烦的是画图,但是画图是必须因为可以帮助你理解,我觉得我一般关注松弛度和任务执行就行了,记住松弛度计算的时候只要注意是否有进程松弛度为零就行。

图 15第三章作业3答案

银行家算法这题要注意的是,在判断有没有安全序列的时候你要给出安全序列,而不是仅仅是一个安全就完事了。

图 16第三章作业4及其答案

第四章 进程同步

1.学习内容

1.1进程同步的引入

为什么需要这个,因为会有两种情况需要这个来解决:第一种就是间接相互制约关系:举个例子,你在编辑word文档的时候是无法将其发送给好友的,就是相互制约关系。第二种就是直接相互制约关系:就是一件我做完我的步骤后你才能做你的步骤的事情。

进程同步怎么发挥作用呢:进程调度管理将CPU分配给进程,当CPU分配给多个不同的进程的时候,进程同步在此时发挥作用以防止多个进程运行时发生矛盾。

1.2信号量机制

       简单讲一下整型信号量机制和记录型信号量机制的区别:整型的要不断检查信号量的值,而记录型的时通过内置函数来实现,一旦发现资源不可用便阻塞进程,而整型的不断检查功能会占用大量CPU的时间却没做什么有用的事,浪费资源。

1.3 进程同步问题

1.3.1 生产者-消费者问题

mutex实现个进程对缓冲区的互斥使用,empty和full分别表示缓冲区中空缓冲区和满缓冲区的数量

       1.3.2 哲学家进餐问题

有这样一个问题:N个进程同时进行,每个进程执行需要Max个资源,问至少需要多少可用资源A才可以使N个进程并发运行。

       有个公式是:A=[N x(Max-1)]

1.3.3 读者-写者问题

总结一下就是关于这个你要搞清楚什么东西是临界资源(就是可重用资源),你要为其设立一个互斥信号量(mutex),还要关注什么是临时性资源(可消耗资源),为其设立数量count。

2.学习中的理解

3.作业

图 17 第四章作业

图 18 第四章作业答案

第五章 存储器管理

1.学习内容

1.1存储器的层次结构

在存储层次中,层次越高越靠近CPU,由高到低分别是寄存器、高速缓存、主存储器、磁盘缓存、固定磁盘、可移动存储介质。其中寄存器和主存储器又被称作可执行存储器。

1.2程序的装入与链接

       要在系统中运行用户程序就必须先将其装入内存中,然后将其转变为一个可执行的程序。

1.2.1地址绑定与内存保护

分别是干什么的呢,地址绑定就是给程序在内存中的地址以便可以运行它,内存保护为的是防止其他程序进错别的程序的内存里和OS系统不被用户访问。

      地址绑定的知道程序的逻辑地址和物理地址,逻辑地址(虚拟地址)就有点像你在手机地图软件里的地址,而物理地址则是实实在在的硬件上的位置

1.3 连续分配存储管理方式

该分配方式是为用户程序分配一个连续的内存空间给它。有个概念就是碎片,分为内碎片和外碎片,内和外是相对于程序执行的区域来说的,举个例子,你为一个程序划分了50kb空间给它执行但是它只用了30kb,那么内碎片大小就是那20kb。

1.3.1 单一连续分配

这是最早的一种分配方式,因为最早的存储器管理方式是把内存分为系统区和用户区,而这个单一的意思就是有程序要运行的时候将用户区全部给该程序,只有该程序执行完之后,其他程序才可以执行,效率很低。

       1.3.2 固定分区分配

之前不是由于将用户区全部都给一个程序执行吗,所以效率有点低,现在将用户区进行划分,比如划分为四个区的话就可以有四个程序同时执行,划分的区域分为大小相等的分区·和大小不等的分区。

1.3.3 动态分区分配

动态分区分配通常会将系统中空闲的分区连接成一个链,叫做空闲分区链。

1.首次适应算法(FF):就是你不是分区了吗,但是各个区大小不是固定的,这个算法就是从头开始遍历空闲分区链,直到直到找到一个大小能够给程序运行的分区。但这个算法每次都从头开始遍历,效率很低,且增加了低址部分的大量内碎片。

2.循环首次适应算法(NF):这个避免了低址部分的很多小的空闲分区和减少了查找可用空闲分区的时间开销。具体是怎么实现的呢,就是这个算法也是找一个能够使程序执行的空闲分区,不过它不是从头开始找他是从上次找到的空闲分区的下一个空闲分区开始查找,然后一直转着找直到找到。

3.最佳适应算法(BF)

最佳,佳的是什么,就是该空闲区的大小刚好满足或仅仅多一点程序需要用到的分区大小。怎么实现,就是该算法一开始会将所有的空闲分区按照小到大的顺序进行一个排列,然后也是从头开始遍历寻找。这个算法由于每次切割下来的剩余部分总是最小的所以存储器中会留下许多无法利用的碎片。

  4.最坏适应算法(WF)

最坏的是什么,其实和上面的最佳是相反的反在哪里,最佳是将空闲区按照小到大的顺序排列而最坏是将空闲区按照大到小的顺序排列,也就是说它总是会挑一个空闲区最大的来执行程序。

5.伙伴系统

就是它的划分总是2的几次方大小,像2、4、8、32、256这样的,而且相同大小的区域在一派的划分中可以合并。后面有题目可以理解。

       1.3.4 动态重定位分区分配

怎么通过重定位来进行分区分配的呢,就是利用一个叫做紧凑的功能实现的,就是系统在运行一段时间后会将那些小碎片进行重新组合成一个大的空闲区来使用。

1.4分页存储管理方式

就是将用户程序分为若干个固定大小的区域,成为“页”或“页面”,同时也将内存分为若干个大小相同的物理块,这样就可以将用户程序的任意一页放入任一物理块中。

 1.4.1页面的地址结构

举个例子就好理解了,假如系统的页面大小L为1KB,设A=2170,则他的页号为2,页内地址为122.

 1.4.2 地址变换机构

2.学习中的理解

3.作业

图 19第五章作业及其答案

第六章 虚拟存储器

1.学习内容

1.1虚拟存储器的定义

 什么是虚拟存储器,就是具有请求调度功能和对换功能的技术不是指物理上的存储器。

1.2页面置换算法

1.2.1 OPT最佳页面置换算法

原理就是根据提供的页面流来从后面看哪些页面永远不使用或未来最长时间内不会被访问,就将该页面换掉。

1.2.2 FIFO先进先出页面置换算法

该算法总是淘汰最先进入内存的页面

1.2.3 LRU最近最久未使用页面置换算法

就是往前面看,看目前内存中的页面哪一个是醉最久还没有被用过的,就将其替换掉。

1.2.4 Clock页面置换算法

下面是总结的算法步骤:

图 20 clock算法步骤

1.3 多道程序与“抖动”

       1.3.1 多道程序与处理机的利用率

1由于虚拟存储器能从逻辑上扩大内存,这时只要装入一个进程的部分程序和数据就能运行,所以大家都想尽可能多的在系统中运行进程,但是实操发现当进程数量很多的时候,每个进程能分配到的物理块就少了,于是大多数时间大多数时间都花在了页面置换上,效率降低了。

2产生抖动的原因是由于进程数太多了,而不是进程所需内存过大。

1.4工作集

什么是工作集,一般情况下,进程总是在一段时间内访问某些页面,这些页面称为活跃页面,如果分配的物理块恰好满足活跃页面,则这个物理块数称为工作集

2.作业

图 21第六章作业及其答案

第六章 输入/输出系统

1.学习内容

1.1假脱机系统

      假脱机系统(Spooling System)是一种计算机技术,它就像是一个中间人,让输入输出设备(比如打印机、磁带机等)和计算机的工作配合得更加高效。可以类比为快递柜,这个快递柜就是快递员和买家的中间人。

1.2 磁盘调度算法

1.2.1 FIFS调度算法:先来先服务嘛,但是平均寻道时间长

1.2.2 SSTF调度算法:就是每次都访问当前磁头与要访问的磁道距离最近的磁道,但是会导致老进程饥饿。

1.2.3 SCAN调度算法

就是单方向的对磁道进行扫描。

1.2.4 CSCAN调度算法

就是在SCAN调度算法的基础上增加循环

2.作业

图 22 第七章作业及其答案

计算机操作系统()》是由汤小丹王红玲、姜华和汤子瀛合,人民邮电出社于2021年出的图书。 本书主要介绍了计算机操作系统的相关知识。计算机操作系统是指控制和管理计算机硬件与软件资源,使计算机系统能够高效地运行和进行任务处理的系统软件。操作系统计算机的核心组成部分,它负责管理硬件设备、控制程序运行、保护数据信息、提供用户与计算机系统之间的交互界面等。 《计算机操作系统()》从基础概念出发,全面讲解了操作系统的基本原理、功能和结构,并深入探讨了常见的操作系统如Windows、UNIX和Linux等。书中还介绍了操作系统的进程管理、内存管理、文件系统、设备管理、网络管理等重要内容,帮助读者全面了解和掌握操作系统的运行机制和管理方法。 该书主要面向计算机专业的本科生和研究生,也适合从事计算机系统工程、软件开发和系统维护的相关人员阅读。作者采用通俗易懂的语言,结合具体实例和案例分析,使得读者能够更好地理解和应用操作系统的知识。 《计算机操作系统()》是一本权威、实用的操作系统教材,对于学习计算机操作系统的人员来说是一本必备的参考书。读者通过学习本书,可以深入了解计算机操作系统的基本理论和实践,提高自己的操作系统技能,为今后从事计算机相关工作打下坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值