2024年最全《操作系统》考前秘籍_通道能够完成什么之间的传输,大厂内部资料

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

可重定位分区分配方式也是属于连续分配方式的,只是它在内存碎片很多而导致的程序不能放入内存时,进行“紧凑”(可能会移动原来的数据的,所以此时就需要重定位啦紧凑完了,就能放进去啦~)

连续分配方式是指为一个用户程序分配一个连续的内存空间。在连续分配方式中,必须把一个系统或用户程序装入一连续的内存空间,如果在系统中只有若干个小的分区,即使他的容量总和大于要装入的程序,但由于这些分区不相邻接的小分区,他们单独的容量不能满足作业大小但它们的容量总和大于作业的要求时,若想把作业装入,可采用的可重定位分区分配方式。

可重定位分区分配方式与拼接方式不同在于拼接时机的不同。前者是在某个分区回收时立即进行拼接,这样在内存中总是只有一个连续的空闲区。但由于拼接很费时间,拼接频率过高会使系统开销加大。后者是当找不到足够大的空闲区且空闲区的容量可以满足作业要求时进行拼接。拼接的频率比第一种要小得多,但空闲区的管理稍微复杂一些。

动态重定位是指在虚拟地址空间向物理地址空间装换的过程中利用的技术。

存储保护

  • 通常所说的"存储保护"的基本含义是 防止程序间相互越界访问

存储保护
在采用虚拟存储技术的存储系统中,一个多任务的操作系统经常将多个不同的程序同时调入主存执行,因此,首先需要保证这些程序间不会相互覆盖,并且,一个程序不能访问其他程序的数据以及不是分配给他的主存区域。其次,一个程序出错不会破坏其他用户程序和系统程序。通过一些限制方式保护主存中程序的技术被称为存储保护。简单的说,存储保护就是对主存中的程序和数据进行保护。为了降低开销,在进行存储保护的时候,通常不会直接保护单个存储单元,而是以页或者段为单位进行保护。存储保护主要包括以下两个方面内容。
存储区域保护: 存储区域保护主要是为了防止地址越界。常用的存储区域保护方式有基于页表或段表的保护,键保护和环保护。
(1)基于页表或段表的保护。在分页式虚存中,每个程序的虚页号是固定的经过地址变换后的实存页号也是固定的。这样,程序只能访问或影响到相应的主存页面,不会影响或访问其他程序空间。
在分段式虚存中,段表和页表的保护功能类似,但段表还需要记录段的上界,下界和段长,这样就很容易保证程序访问的地址不越界。
(2)键保护方式:操作系统为主存中的每一页分配一个键,通常被称为存储键,用于指明保护的等级。!存储键相当于一把锁,只有拥有打开这把锁的钥匙才能访问相应的页面。而钥匙就是操作系统为每道程序分配的!访问键,该访问键通常保存在!该道程序的《状态寄存器》中。当程序要访问主存的某一页时,程序的访问键要与该页的存储键!进行比较。若两键相符,则允许访问该页,否则拒绝访问。
(3)环保护方式:操作系统按照系统程序和用户程序的重要性及对整个系统正常运行的影响程度,将程序分为多个保护级别(层),每个级别称为一个环,这样,各个级别就构成了同心环。在现行程序运行前由操作系统为程序设置!个页的环号,并置入页表中。并将该道程序的开始环号保存在CPU的<现行环号寄存器》中。程序可以访问任何外层空间。访问内层空间则需要由操作系统的环控《例行程序》判断这个向内访问是否合法。pentium微处理器采用环保护方式。
访问方式保护
访问方式保护是为了保证程序不能对主存执行非授权的操作,通常,通过对页表或者段表设置访问权限标志位来实现。
对内存信息的使用可以有以下三种方式:读(R),写(w)和执行(E),因此相应的访问权限就是R,W,E三种方式形成的逻辑组合。例如,R+W+E表示可以进行任何访问(全权限),(R+W)*E表示能够读和写但不能执行。
通常,操作系统对每个程序访问方式保护的规定如下:《对本程序所在存储区域拥有全权限。对共享!数据区域(或获得授权的其他用户数据区域)可读不可写。对共享程序区域(或获得授权的其他用户程序区域)!可执行。对操作系统内核等非授权区域不可访问。
这种访问方式经常和存储区域保护结合起来实现。例如基于页表和段表的保护方式下,通常将访问方式“位”保存在段表和页表中,使得同一个段内的不同页有不同的访问方式。这样可以提高保护的灵活性。
存储保护一般以硬件保护为主,以降低系统实现开销,提高保护效率。当发生访问越界等非法操作时,硬件产生中断,进入操作系统处理。

虚存管理和实存管理的区别

  • 虚存管理和实存管理的主要区别是 实存要求一程序全部装入内存才开始运行,虚存允许程序在执行的过程中逐步装入

虚存之所谓称之为虚,就是因为逻辑内存要大于物理内存。
假如程序要求全部装入才可以执行,根本没必要有虚存的存在了。
所以是否要求程序一次性全部装入内存,是实存和虚存的根本区别。

  • 能够装入内存任何位置的代码程序必须是 可动态链接的

程序的链接有以下三种方式:
静态链接:在程序运行之前,先将各目标模块及它们所需的库函数链接成一个完整的可执行程序,以后不再拆开。
装入时动态链接:将用户源程序编译后所得到的一组目标模块,在装入内存时,釆用边装入边链接的链接方式。
运行时动态链接:对某些目标模块的链接,是在程序执行中需要该目标模块时,才对它进行的链接。其优点是便于修改和更新,便于实现对目标模块的共享。

内存的装入模块在装入内存时,同样有以下三种方式:

绝对装入。在编译时,如果知道程序将驻留在内存的某个位置,编译程序将产生绝对地址的目标代码。绝对装入程序按照装入模块中的地址,将程序和数据装入内存。由于程序中的逻辑地址与实际内存地址完全相同,故不需对程序和数据的地址进行修改。

绝对装入方式只适用于单道程序环境。另外,程序中所使用的绝对地址,可在编译或汇编时给出,也可由程序员直接赋予。而通常情况下在程序中釆用的是符号地址,编译或汇编时再转换为绝对地址。

可重定位装入。在多道程序环境下,多个目标模块的起始地址通常都是从0开始,程序中的其他地址都是相对于起始地址的,此时应釆用可重定位装入方式。根据内存的当前情况,将装入模块装入到内存的适当位置。装入时对目标程序中指令和数据的修改过程称为重定位,地址变换通常是在装入时一次完成的,所以又称为静态重定位
静态重定位的特点是在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。此外,作业一旦进入内存后,在整个运行期间不能在内存中移动,也不能再申请内存空间。

动态运行时装入,也称为动态重定位,程序在内存中如果发生移动,就需要釆用动态的装入方式。装入程序在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址均为相对地址。这种方式需要一个重定位寄存器的支持,如上图B所示。

动态重定位的特点是可以将程序分配到不连续的存储区中;在程序运行之前可以只装入它的部分代码即可投入运行,然后在程序运行期间,根据需要动态申请分配内存;便于程序段的共享,可以向用户提供一个比存储空间大得多的地址空间。

请求分页管理

在页表中要有"状态位"、"访问位"等信息

在请求分页系统中,只要求将当前需要的一部分页面装入内存,便可以启动作业运行。在作业执行过程中,当所要访问的页面不在内存时,再通过调页功能将其调入,同时还可以通过置换功能将暂时不用的页面换出到外存上,以便腾出内存空间。
为了实现请求分页,系统必须提供一定的硬件支持。除了需要一定容量的内存及外存的计算机系统,还需要有页表机制、缺页中断机构和地址变换机构。请求分页系统的页表机制不同于基本分页系统,请求分页系统在一个作业运行之前不要求全部一次性调入内存,因此在作业的运行过程中,必然会出现要访问的页面不在内存的情况,如何发现和处理这种情况是请求分页系统必须解决的两个基本问题。为此,在请求页表项中增加了四个字段:
在这里插入图片描述
增加的四个字段说明如下:
状态位P:用于指示该页是否已调入内存,供程序访问时参考。
访问字段A:用于记录本页在一段时间内被访问的次数,或记录本页最近己有多长时间未被访问,供置换算法换出页面时参考。
修改位M:标识该页在调入内存后是否被修改过。
外存地址:用于指出该页在外存上的地址,通常是物理块号,供调入该页时参考。

在请求分页系统中,每当所要访问的页面不在内存时,便产生一个缺页中断,请求操作系统将所缺的页调入内存。此时应将缺页的进程阻塞(调页完成唤醒),如果内存中有空闲块,则分配一个块,将要调入的页装入该块,并修改页表中相应页表项,若此时内存中没有空闲块,则要淘汰某页(若被淘汰页在内存期间被修改过,则要将其写回外存)。

  • 在请求分页系统中,页表中的修改位是供 页面置换

页表项(页描述子)中各个位的作用:

  1. 页号
  2. 块号(页框号)
  3. 中断位: 用于判断该页是不是在内存中,如果是0,表示该页面不在内存中,会引起一个缺页中断
  4. 保护位(存取控制位):用于指出该页允许什么类型的访问,如果用一位来标识的话:1表示只读,0表示读写
  5. 修改位(脏位):用于页面的换出,如果某个页面被修改过(即为脏),在淘汰该页时,必须将其写回磁盘,反之,可以直接丢弃该页
  6. 访问位:不论是读还是写(get or set),系统都会设置该页的访问位,它的值用来帮助操作系统在发生缺页中断时选择要被淘汰的页,即用于页面置换
  7. 高速缓存禁止位(辅存地址位):对于那些映射到设备寄存器而不是常规内存的页面有用,假设操作系统正在循环等待某个I/O设备对其指令进行响应,保证硬件不断的从设备中读取数据而不是访问一个旧的高速缓存中的副本是非常重要的。即用于页面调入。
  • 在请求分页系统中,页表中的辅存始地址是供(页面调入)参考的。

1)状态位P:用于指示该页是否已调入内存,供程序访问时参考;
2)访问字段A:用于记录本页在一段时间内被访问次数,供选择置换页面时参考;
3)修改位M:表示该页在调入内存后是否被修改过,供换出页面时参考;
4)外存地址:用于指出该页在外存上的地址,通常是物理块号,供调入该页时参考;

  • 在请求分页管理中,已修改过的页面再次装入时应来自 磁盘对换区

未被修改的页直接从文件区读入,而被置换时不需要调出;已被修改的页面,被置换时需要调出到交换区,以后从交换区调入。
请求分页系统,缺页时,如果页面未被修改是直接从磁盘文件区调入,对于那些可能修改的页面,在将它们换出时,便须调到对换区,以后需要时,再从对换区调入。(对换区采用连续分配方式,故磁盘I/O速度要较快一些。)

  • 在请求页式存储管理中,若页面尺寸变小,则缺页中断的次数可能增加也可能减少

1.Belady现象:是指当所分配的物理块数增大而页故障数不减反增的异常现象。
2.抖动现象:是指刚刚换出的页面马上又要换入内存,刚刚换入的页面马上又要换出主存,这种频繁的页面调度行为称为抖动,或者颠簸。

  • 请求分页管理中,若把页面尺寸增大一倍而且可容纳的最大页数不变,则在程序顺序执行时缺页中断次数会(B)
    A.增加 B.减少 C.不变 D.可能增加也可能减少
    因为在请求分页存储器中,由于页面尺寸增大,存放程序需要的页帧数就会减少,因此缺页中断的次数也会减少。
  • 在硬件和环境相同的条件下,一个作业在(分页)存储管理系统中运行的时间最长。

分页式存储管理可能将连续的指令放置在不同的页中,会发生换页中断,而分段、段页都是逻辑分配空间,段长可变,逻辑上相对连续的指令放在同一段中,不会像分页那样频繁换页操作。

  • 计算题在这里插入图片描述

地址偏移量=逻辑地址%页面大小(1024)=0A1F(H)(2591)%1024=543
页号=逻辑地址/页面大小=2591/1024=2
查页表得到块号为3,
故物理地址=3*1024+543=3615=0E1F(H)

  • 在页式存储管理中,当CPU形成一个有效地址时,要查页表。这一工作是由(硬件自动)实现的。

这是地址映射的知识点,为了提高系统效率,逻辑地址到物理地址的映射,是由处理机中设置的专门硬件完成,即地址管理部件。
当进程要访问某个逻辑地址中的数据时,分页地址变换机构会自动地将有效地址分为页号和页内地址两个部分,再以页号为索引去检索页表,查找操作由硬件执行。

缺页中断

  • 在请求分页存储管理的系统中,若采用FIFO页面淘汰算法,则当进程分配到的页面数增加时,缺页中断的次数 可能增加也可能减少

随着内存的增大:缺页次数增加的现象:称之为 Belady 现象(异常现象); 我们都知道常用的页面淘汰算法有五种:
1 : FIFO: 先进先出 页面淘汰算法会产生Belady现象

2 :LRU 最近最久未用置换算法

3 : LFU 最近访问频率最低的

4 : NUR 最近没有使用页面淘汰算法( NUR )

5: 理想的淘汰算法:( OPT )
这五种算法可见简单的将其分为两类,堆栈型算法和非堆栈型算法; 注意:堆栈型算法:最新压入到堆栈中的永远在栈顶;栈顶是刚刚访问过的,栈底是最久没有访问过的; LRU和LFU都 是堆栈型算法, OPT 也是堆栈算法; 但是 FIFO非堆栈型算法 ; 非堆栈式算法可能出现 Belady 问题,是栈式算法不会出现类似问题;

缺页中断的次数是由页面数量,页面置换算法与页面走向三个因素决定的,题目中采用FIFO,页面数增大,但是页面走向不确定,所以缺页次数可能增大页可能减小,比如Belady异常

  • 在请求分页存储管理中,当访问的页面不在内存时,便产生缺页中断,缺页中断是属于 程序中断

中断

中断类型分为如下两大类:
一、强迫性中断:正在运行的程序所不期望的,来自硬件故障或外部请求。
1、I/O 中断:来自外部设备通道;
2、程序性中断:运行程序本身的中断,如 溢出、缺页中断、缺段中断、地址越界。
3、时钟中断
4、控制台中断
5、硬件故障

二、自愿性中断:用户在编程时要求操作系统提供的服务,使用访管指令或系统调用使中断发生。也称为访管中断。包括执行I/O,创建进程,分配内存,信号量操作,发送/接收消息。

访管中断是用户程序在运行中请求操作系统为其提供服务而执行一条“访管指令”所引起的中断,又称软件中断。访管中断是进程所期待的,它是自愿性的中断,又称自愿中断,其它几种中断不是运行进程所期望的,它属于强迫性中断事件。

外部中断一般是由计算机外设发出的中断请指求,如:键盘中断、打印机中断、定时器中断等

  • 分页式存储系统中,页面的大小与可能产生的缺页中断次数 无关

一种说法:

由于内存的大小是固定的,所以无论页面是大是小,可以进入内存的大小也是固定的,最多不超过内存的大小。实际上,分页的大小并不影响进入内存作业的数量。从宏观上看,进入内存的页面内容是没有变化的。
所以分页式虚拟存储管理系统中,页面的大小与可能产生的缺页中断次数关系不大。

在分页存储管理系统中,页面的大小是由计算机系统的地址结构所决定的,一般由软硬件共同决定。
对于某一种系统一般采用一种大小的页面(也有部分现代操作系统采用双页面系统的)。
在确定地址结构时,若选择的页面较小,一方面可使内碎片减小,并减少了内碎片的总空间,有利于提高内存利用率。
另一方面,也会使每个进程要求较多的页面,从而导致页表过长,占用大量内存。此外还会降低页面换进换出的效率。
若选择的页面较大,虽然可减少页表长度,提高换进换出效率,但却又会使页内碎片增大。由于内存的大小是固定的,所以无论页面是大是小,可以进入内存的作业大小也是固定的,最多不超过内存的大小。
实际上,分页的大小并不影响进入内存作业的数量。从宏观上看,进入内存的页面内容是没有变化的。所以分页式虚拟存储管理系统中,页面的大小与可能产生的缺页中断次数关系并没有确定的关系。

Belady现象

Belady现象是指:在分页式虚拟存储器管理中,发生缺页时的置换算法采用FIFO( 先进先出 )算法时,如果对—个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多但缺页率反而提高的异常现象。

1.Belady现象:是指当所分配的物理块数增大而页故障数不减反增的异常现象。
2.抖动现象:是指刚刚换出的页面马上又要换入内存,刚刚换入的页面马上又要换出主存,这种频繁的页面调度行为称为抖动,或者颠簸。

请求段的分配管理

适应于请求段的内存分配方法是 最佳适应和可变分区

请求分段系统是在分段系统的基础上,增加了请求调段功能和分段置换功能所形成的分段式虚拟存储系统。分段式存储管理方式分配算法与可变分区的分配算法相似,可以采用最佳适应法、最坏适应法和首次适应法等分配算法。显然仍然要解决外碎片的问题。

首次 适应分配算法: 这种算法按分区序号从空闲分区表的第一个表目开始查找该表, 把最先找到的大于或等于作业大小的空闲分区分给要求的作业。然后,再按照作业的大小,从该分区中划出一块内存空间分配给作业,余下的空闲分区仍留在空闲分区表中。如果查找到分区表的最后仍没有找到大于或等于该作业的空闲区,则此次分配失败。
优点:优先利用内存中低址部分的空闲分区,而高址部分的空闲分区很少被利用,从而保留了高址部分的大空闲区。为以后到达的大作业分配大的内存空间创造了条件。
缺点:低址部分不断被划分,致使留下许多难以利用的、很小的空闲分区。
循环 首次 适应分配算法
这种算法是由最先适应分配算法经过改进而形成的。在为作业分配内存时,不再每次从空闲分区表的第一个表项开始查找,而是从上次找到的空闲区的下一个空闲区开始查找,直至找到第一个能满足要求的空闲区为止,并从中划分出一块与请求大小相等的内存空间分配给作业。为实现该算法,应设置一起始查找指针,以指示下一次开始查找的空闲分区,并采用循环查找方式。即如果最后一个空闲分区的大小仍不能满足要求,则返回到第一个空闲分区进行查找。
优点 :内存中的空闲区分布得更均匀,减少查找空闲分区的开销。
缺点 :系统中缺乏大的空闲分区,对大作业不利。
最佳适应分配算法:该算法从所有未分配的分区中挑选一个 最接近作业大小且大于或等于作业的空闲分区分配给作业
,目的是使每次分配后剩余的碎片最小。为了查找到大小最合适的空闲分区,需要查遍整个空闲分区表,从而增加了查找时间。因此,为了加快查找速度,要求将所有的空闲分区,按从小到大递增的顺序进行排序。这样,第一次找到的满足要求的空闲分区,必然是最佳的。
缺点 :每次分配之后形成的剩余部分,却是一些小的碎片,不能被别的作业利用。因此,该算法的内存利用率是不高的。 最坏适应分配算法:
该算法从所有未分配的分区中挑选一个 最大的空闲分区分配给作业
,目的是使分配后剩余的空闲分区足够大,可以被别的作业使用。为了查找到最大的空闲分区,需要查遍整个空闲分区表,从而增加了查找时间。因此,为了加快查找速度,要求将所有的空闲分区按从大到小递减的顺序进行排序。这样,第一次找到的空闲分区,必然是最大的。优点:最坏适应分配算法在分配后剩余的空闲分区可能比较大,仍能满足一般作业的要求,可供以后使用。从而最大程度地减少系统中不可利用的碎片。缺点:这种算法使系统中的各空闲分区比较均匀地减小,工作一段时间以后,就不能满足对较大空闲分区的分配要求。

  • 例题
    在这里插入图片描述

最佳适应算法(Best Fit): 它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小

LRU置换算法所基于的思想

在最近的过去很久未使用的在最近的将来也不会使用

LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面!

LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页!

LRU:仅与上一次的使用时间有关,选择距离最远的;

LFU:与一定时间内的使用频率有关,选择频率最小的;

  • 选择在最近的过去使用次数最少的页面予以淘汰的算法称为 LFU
  • 选择在最近的过去很久未访问的页面予以淘汰的算法称为 LRU

LRU 最近最久未使用 recently:也就是首先淘汰最长时间未被使用的页面!

LFU 最不频繁被使用 frequenly:也就是淘汰一定时期内被访问次数最少的页!

虚拟存储

在下面关于虚拟存储器的叙述中,正确的是 要求程序运行前不必全部装入内存且在运行过程中不必一直驻留在内存

虚拟存储的基本原理是:在程序装入时不必将其全部读到内存,而只需将当前需要执行的部分页或段读到内存,就可让程序开始执行。在程序执行过程中,如果需执行的指令或访问的数据尚未在内存,则由处理器通知操作系统将相应的页或段调入到内存,然后继续执行程序。另一方面,操作系统将内存中暂时不使用的页或段调出保存在外存上,从而腾出空间存放将要调入的页或段

  • 虚存的可行性基础是计算机中著名的局部性原理
  • 虚存最基本的特征是 多次性

虚拟内存的特征是:
1.虚拟扩充 即不是物理上而是逻辑上扩充了内存容量
2.部分装入 即每个作业不是全部一次性地装入内存,而是只装入一部分
3.离散分配 即不必占用连续的内存空间,而是“见缝插针”
4.多次对换 即所需的全部程序和数据要分成多次调入内存

  • 虚存的实际存储容量=min(内、外存容量之和,CPU逻辑地址给出的空间大小)
  • 实现虚存最主要的技术是 对换技术

根据程序执行的互斥性和局部性两个特点,我们允许作业装入的时候只装入一部分,另一部分放在磁盘上,当需要的时候再装入到主存,这样以来,在一个小的主存空间就可以运行一个比它大的作业。因此虚拟存储的主要技术是部分对换。

  • 实现虚拟存储的目的是 扩充主存容量

根据程序执行的互斥性和局部性两个特点,我们允许作业装入的时候只装入一部分,另一部分放在磁盘上,当需要的时候再装入到主存,这样以来,在一个小的主存空间就可以运行一个比它大的作业。同时,用户编程的时候也摆脱了一定要编写小于主存容量的作业的限制。也就是说,用户的逻辑地址空间可以比主存的绝对地址空间要大。对用户来说,好像计算机系统具有一个容量很大的主存储器,称为“虚拟存储器”。
虚拟存储(Storage Virtualization)是指将多个不同类型、独立存在的物理存储体,通过软、硬件技术,集成转化为一个逻辑上的虚拟的存储单元,集中管理供用户统一使用。这个虚拟逻辑存储单元的存储容量是它所集中管理的各物理存储体的存储量的总和,而它具有的访问带宽则在一定程度上接近各个物理存储体的访问带宽之和。

  • 静态页式管理内存管理方法不能实现虚存

页式管理有: 静态页式管理; 动态页式管理;
其中,静态页式管理是在作业或进程执行前,把作业或进程全部装进内存中,如果内存中可用页面数小于请求页面数,该作业或进程等待。
动态页式管理不会把作业或进程一次性全部装进内存,只装入被反复调用或执行的部分,其他部分在执行过程中动态装入。

静态页式管理是一次性为要求内存的进程分配足够多的页面,无法将外存的空间利用起来实现虚存

虚存是 充分利用了地址空间

把辅存作为对主存的扩充,向用户提供了一个比实际主存大得多的地址空间,即充分利用了辅存的地址空间。

  • 虚拟存储器的最大容量是由(计算机系统的地址结构和外存空间)决定的。

虚拟存储器的最大容量 = min(内存+外存,2^n)。n为计算机的地址总线位数。

  • 若处理器有32位地址,则它的虚拟地址空间4G

页式虚拟存储管理

页式虚拟存储管理的主要特点是不要求将作业同时全部装入到主存的连续区域

程序动态链接

程序动态链接的时刻是 装入时 调用时

动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过程的一部分。在这些系统上,可执行文件包含一个叫做import
directory的表,该表的每一项包含一个库的名字。根据表中记录的名字,装载程序在硬盘上搜索需要的库,然后将其加载到内存中预先不确定的位置,之后根据加载库后确定的库的地址更新可执行程序。可执行程序根据更新后的库信息调用库中的函数或引用库中的数据。这种类型的动态加载成为装载时加载
,被包括Windows和Linux的大多数系统采用。 操作系统在加载应用软件时要完成的最复杂的工作之一就是加载时链接。

其他操作系统可能在运行时解析引用。在这些系统上,可执行程序调用操作系统API,将库的名字,函数在库中的编号和函数参数一同传递。操作系统负责立即解析然后代表应用调用合适的函数。这种动态链接叫做运行时链接
。因为每个调用都会有系统开销,运行时链接要慢得多,对应用的性能有负面影响。现代操作系统已经很少使用运行时链接。
可以动态链接的库,在Windows上是dynamic link library (DLL),在UNIX或Linux上是Shared
Library。库文件是预先编译链接好的可执行文件,存储在计算机的硬盘上。大多数情况下,同一时间多个应用可以使用一个库的同一份拷贝,操作系统不需要加载这个库的多个实例。

  • 下面哪种内存管理方法有利于程序的动态链接?
    分段存储管理

动态链接 是指在作业运行之前,并不把几个 目标程序 段链接起来。要运行时,先将主程序所对应的 目标程序
装入内存并启动运行,当运行过程中又需要调用某段时,才将该段(目标程序)调入内存并进行链接。可见, 动态链接 也要求以段作为管理的单位。

首次适应算法的空闲区

首次适应算法(First Fit):
从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。

最差适应算法

在可变式分区分配方案中,只需要进行一次比较就可以判定系统是否能满足作业对主存空间要求的算法是 最差适应算法

最先适应算法:依次判定后找到第一个满足要求的哈 最佳适应算法:对空闲区按从小到大排序,第一个满足的就是啦
最差适应算法:对空闲区按从大到小排序,第一个满足的就是啦

固定式分区算法:是分区的

内存碎片

  • 采用(分段式存储管理)不会产生内部碎片

在内存管理中,内部碎片是已经被分配出去的的内存空间大于请求所需的内存空间。
外部碎片是指还没有分配出去,但是由于大小太小而无法分配给申请空间的新进程的内存空间空闲块。
固定分区存在内部碎片,可变式分区分配会存在外部碎片; 页式虚拟存储系统存在内部碎片;段式虚拟存储系统,存在外部碎片
为了有效的利用内存,使内存产生更少的碎片,要对内存分页,内存以页为单位来使用,最后一页往往装不满,于是形成了内部碎片。
为了共享要分段,在段的换入换出时形成外部碎片,比如5K的段换出后,有一个4k的段进来放到原来5k的地方,于是形成1k的外部碎片。

在内存管理中,内部碎片是已经被分配出去的的内存空间大于请求所需的内存空间。
外部碎片是指还没有分配出去,但是由于大小太小而无法分配给申请空间的新进程的内存空间空闲块。

段式存储管理会出现外部碎片。

  • 解决碎片问题,以及使程序可浮动的最好的办法是采用动态重定位技术

静态重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变。

动态重定位即在程序运行过程中要访问数据时再进行逻辑地址与物理地址的变换(即在逐条指令执行时完成地址映射。

动态内存分配是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不象数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。

内存的静态分配和动态分配的区别主要是两个: 一是时间不同。静态分配发生在程序编译和连接的时候。动态分配则发生在程序调入和执行的时候。
二是空间不同。堆都是动态分配的,没有静态分配的堆。

抖动

系统"抖动"现象的发生是由 置换算法选择不当

在请求分页存储管理中,刚被替换出去的页,立即又要被访问,此时因无空闲内存,又要替换另一页,而后者又是下一次要被访问的页,于是系统需花费大量的时间忙于进行这种频繁的页面交换,致使系统的实际效率很低,这种现象称为抖动现象。一般都是由于置换算法不佳引起

在固定分区分配中

在固定分区分配中,每个分区的大小是 可以不同但预先固定

固定分区分配,是满足多道程序设计的存储技术,可以将内存划分成多个区,每个区运行一个作业,从而达到多道程序设计的多个作业同时在内存中的设计。
但是固定分区分配是提前将内存划分成多个区,区的大小可以不同,但是划分好后,个数和大小都不能发生改变。
作业到来,选择一个合适大小的区放置,但是作业长度不一,不会有太合适的区恰好满足其大小,从而会造成区空间的浪费,并且此浪费非常严重。

在可变式分区分配方案

在可变式分区分配方案中,某一作业完成后,系统收回其主存空间,并与相邻空闲区合并,为此需修改空闲区表,造成空闲区数减2的情况是 有上邻空闲区,也有下邻空闲区

作业归还分区,要调整空闲区表,把空闲区表调整成空闲区长度递减的次序排列登记。
可变分区分配方式下,当收回主存时,应检查是否有与归还区相邻的空闲区,若有,则应合并成一个空闲区。
相邻可能有上邻空闲区、下邻空闲区、既上邻又下邻空闲区、既无上邻又无下邻空闲区。
若有上邻空闲区,只修改上邻空闲区长度(为收回的空闲区长度与原上邻区长度之和)即可;
若有下邻空闲区,改记录这个下邻空闲区记录的地址为收回空闲区的地址,长度为下邻空闲区的长度和收回空闲区的长度即可;
若既有上邻又有下邻空闲区,改记录上邻区记录的长度(为上邻区长度、下邻区长度和收回区长度之和),再把下邻区记录的标志位改为空即可;
若既无上邻区又无下邻区,那么找一个标志位为空的记录,记下该回收区的起始地址和长度,且改写相应的标志位为未分配,表明该登记栏中指示了一个空闲区。
还有一种情况,合并后空闲区数不变,是有下邻区,没有上邻区

  • 在可变式分区分配方案中,某一作业完成后,系统收回其主存空间,并与相邻空闲区合并,为此需修改空闲区表,造成空闲区数减 1 的情况是 有上邻空闲区,也有下邻空闲区
  • 在可变分区存储管理中的拼接技术可以 集中空闲区

用“拼接”技术把存储空间内的碎片合并成一个更大的空间。

可重入码

如果一个程序为多个程序所共享,那么该程序的代码在执行的过程中不能被修改,即程序应该是可重入码

可重入码:当被多个线程调用的时候,不会引用任何共享数据,他们是线程安全的。(注意与线程安全做区别 可重入是线程安全的真子集)

重入代码(Reentry code)也叫纯代码(Pure
code)是一种允许多个进程同时访问的代码。为了使各进程所执行的代码完全相同,故不允许任何进程对其进行修改。程序在运行过程中可以被打断,并由开始处再次执行,并且在合理的范围内(多次重入,而不造成堆栈溢出等其他问题),程序可以在被打断处继续执行,且执行结果不受影响。

页式存储管理

在这里插入图片描述

物理地址=内存块号*块长+页内地址 ;
块的大小与叶大小一致;
由于页面大小是4K = 2^12 ,所以逻辑地址的后12位为 页内地址;
所以物理地址 = 2 *(2^12) + 0 = 8192;

逻辑地址=页号页面大小+页内地址=04096+0=0 页号=逻辑地址/页面大小; 0/4096=0
页内地址=逻辑地址%页面大小;0%4096=0 通过页号0找出对应的块号为2,另外,块大小=页面大小=4096
物理地址=块号块大小+页内地址=24096(4KB)+0=8192

  • 由连续分配方式发展为分页存储管理方式的主要动力是 提高内存利用率

存储模型

存储模型可以分为六种方式:

  1. 单一连续区:一段时间内只能有一个进程在内存中,因此内存利用率低
  2. 固定分区:把内存空间分割成若干区域,成为分区,每个分区装载一个且只能有进程
  3. 可变分区:根据进程的需要,把内存空间分割出一个分区,分配给进程,剩余的部分成为新的空闲区。 缺点:产生外部碎片,内存利用率低
  4. 页式存储
  5. 段式存储
  6. 段页式存储

这里的连续区应该就是单一连续区,页式存储改善了内存利用率低的特点
引入段式分配才是为了满足用户的需求
那么应该是引入多道序程序提高系统利用率,而基于段页式不连续的内存分配的交换技术更好地满足了多道程序的运行需要。

段式存储管理

  • 某段表的内容如表所示。480KB+154
    在这里插入图片描述

段号为2,那么查表可以知道段首地址为480KB,也就是说段号为2的这个段的段首在存储区中的位置为480KB,然后154为逻辑地址中的偏移量,也就是相对于地址480KB的相对位置,那么物理地址就是 480KB+154

  • 在段页式存储管理系统中其虚拟地址空间是 二维
    段页式存储是二维的,段号+页号 页内位移不算一维

首先,页式存储是一维的,段式存储是二维的。 其次,这是两种存储管理的设计初衷决定的,跟逻辑地址的结构没有关系。
在程序员的角度,你想操作一个内存地址,
(1)页式存储,你直接给一个逻辑地址就行,所以是一维的。虽然这个逻辑地址包含(页号,偏移量),但是,分页那是系统自己完成的事,我们不知道也不用关心最终地址到底在哪个页上。
(2)段式存储,你必须给出(段号,偏移量),所以是二维的。 因为分段的好处就是程序模块化,不同的段权限不同,所以在哪个段上,是我们关心的。

  • 分段尺寸受内存空间的限制,但作业总的尺寸不受内存空间的限制。

分段对应的是内存具体存储管理的一种方式,是对具体内存进行管理,段号+基地址,分段尺寸最大为具体内存。
在动态链接时先将主程序所对应的目标程序装入内存并启动运行,运行过程中需要调用某段时才将该段内存合并进行链接。
而作业的大小不受内存大小限制,由虚拟存储器解决空间不够问题,允许作业装入的时候只装入一部分,另一部分放在 磁盘上,当需要的时候再装入到主存,这样以来,在一个小的主存空间就可以运行一个比它大的作业。同时,用户编程的时候也摆脱了一定要编写小于主存容量的作业的限制。

IO控制方式

在下面的I/O控制方式中,需要CPU干预最少的方式是 I/O通道控制方式

程序IO方式

程序IO方式,是采用busy-waiting的方式,即CPU会采用轮询的方式来询问数据的方式来询问数据-------效果最差

中断IO方式

中断IO方式,是设备控制器当取出一个数据之后向CPU发送一个中断,然后CPU将数据从控制器中取到CPU寄存器,再然后转移到内存中。这种方式,CPU是以字节的方式来响应数据的。

DMA方式

DMA方式,是CPU通过向DMA控制器设定若干参数,然后DMA打开了一条内存到设备的通道,这样,设备(内存)中的数据可以不通过CUl来进行数据交互。缺点是,DMA是多少设备就需要多少DMA,而且,DMA方式下,CPU的访问设备是以数据块为周期的。

IO通道方式

IO通道方式,IO通道相当于一个简单的处理机,有自己的指令,也可以执行指令。指令存储在内存。

IO通道相当于一条PCI总线,一条IO通道可以连接所有的设备控制器。然后CPU向IO通道发出指令,IO通道将会自动进行获取数据。

另外,IO通道是以一组块为单位进行获取的。
所以,IO通道方式需要最少的CPU干预

一个独立于CPU的专门I/O控制的处理机,控制设备与内存直接进行数据交换。
它有自己的通道命令,可由CPU执行相应指令来启动通道,并在操作结束时向CPU发出中断信号。
通道指令的格式一般由:操作码,记数段,内存地址段,结束标志组成
一个系统中可设立三种类型的通道:字节多路通道、数组多路通道、选择通道

  • 利用通道实现了(内存和外设)之间数据的快速传输。

DMA控制器的出现已经减轻了CPU对数据输入输出的控制、使得CPU的效率合显著的提高.
通道的出现进一步提高了CPU的效率.这是因为通道一个特殊功能的处理器.
它有自己的指令和程序专门负责数据输入输出的传输控制.而CPU将“传输控制”的功能下放给通道后只负责“数据处理”功能.这样.通道与CPU分时使用内存,实现了CPU内部运算与I/O设备的平行工作.

缓冲技术

CPU输出数据的速度远远超过打印机的打印速度,影响程序执行速度,为解决这一问题,可以采用 缓冲技术

通道

通道是一个独立与CPU的专管输入/输出控制的处理机,它控制设备与内存直接进行数据交换。引入通道的目的是让数据的传输独立于CPU,使CPU从繁重的I/O工作中解脱出来。它有自己的通道指令,这些指令受CPU启动,并在操作结束向CPU发出中断信号。通道技术主要是为了减轻CPU的工作负担,增加了计算机系统的并行工作程度。

  • 下列关于通道、设备、设备控制器三者间关系的叙述中正确的是 通道控制设备控制器,设备控制器控制设备

CPU要完成一组I/O操作,只需要向I/O通道发送一条I/O指令,通道接到指令,通过执行通道程序,并且与设备控制器一起共同来实现对I/O设备的控制和操作。

CPU控制I/O通道,I/O通道控制设备控制器,设备控制器控制设备

通道是一种特殊的处理机,具有(执行I/O指令集)能力。

I/O通道的目的是为了建立独立的I/O通道,使得原来一些由CPU处理的I/O任务由通道来承担,从而解脱cpu。
通道所能执行的命令局限于I/O操作的指令,也就是执行I/O指令集。

虚拟存储器

虚拟存储器:它使得应用程序认为它拥有连续的可用的内存,而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。

并行技术

并行技术可以分为多进程编程和多线程编程。通常用IPC的形式来实现进程间的同步,如管道,信号量,消息队列或者共享存储。在所有IPC敏感词享存储器是最快的。

缓冲技术

缓冲技术是为了缓和CPU和I/O设备速度不匹配的矛盾,提高CPU和I/O设备的并行性,在现代操作系统中,几乎所以的I/O设备在与处理机交换数据时都用了缓存区,并提供获得和释放缓冲区的手段。
总的来说,缓冲区技术用到了缓冲区,而缓冲区的引入是为了缓和CPU和I/O设备速度不匹配,从而可以有效的减少CPU的终端频率,提高CPU和I/O设备的并行性。

单缓冲技术

  • 设从磁盘将一块数据传送到缓冲区所用实际为80μs,将缓冲区中数据传送到用户区所用时间为40μs,CPU处理数据所用的时间为30μs。则处理该数据,采用单缓冲传送磁盘数据,系统所用总时间为(120μs)。

max(磁盘到缓冲区,CPU处理) + 缓冲区到用户区 = max(80, 30) + 40 = 120

在这里插入图片描述
在这里插入图片描述
T和C并行。max(t,c)+m

缓存区存在的意义是:使用户输入数据的速度与cpu处理数据的速度相协调; 因而,用户输入数据的过程与cpu处理的过程可以并行;

双缓冲技术

在这里插入图片描述

  • 为了实现CPU与外部设备间最大的并行性,应采用 通道设备

缓冲是进一步提高两者的并行,而通道就是为了解放CPU才提出来的,如果没有通道,CPU需要对设备进行较多的控制,如何能并行?

  • 操作系统采用缓冲技术,能够减少对CPU的 中断 次数,从而提高资源的利用率。

缓冲区的作用是提高了IO速度,减少了中断的可能性

  • 在现代操作系统中采用缓冲技术的主要目的是 提高CPU与设备之间的并行程度

磁盘设备

磁盘设备的特点
传输速率较高,以数据块为传输单位
I/O控制方式常采用DMA方式
可以寻址,随即地读/写任意数据块
一段时间内只允许多个用户(进程)访问

磁盘允许一段时间内,多个进程交叉访问,对于每一时刻而言,只允许一个进程访问。
在这里插入图片描述

磁盘寻址

在这里插入图片描述

SPOOLing假脱机技术

假脱机又称为Spooling,是用来保存设备输出的缓冲区,这些设备不能接受交叉的数据流。例如打印机虽然只能一次打印一个任务,但是可能有多个程序希望希望并发打印而又不能将其输出混在一起。应用程序的输出先是假脱机到一个独立的磁盘上。当应用程序完成打印时,假脱机系统将响应的待送打印机的假脱机文件进行排队。

  • 假脱机技术中,对打印机的操作实际上是用借助磁盘存储实现的,这样实现的打印机构是 共享设备

虚拟设备是种技术,将独占设备变成共享设备

spooling技术又称“假脱机”技术 :是用软件的方式实现脱机技术 脱机技术:脱离主机的控制进行的输入/输出 操作
例子:共享打印机:打印机原本是一种“独占式”设备,使用spooling技术
可以变为逻辑上的共享设备,当多个用户进程提出打印请求时,系统会答应它们的请求,但不会真正把打印机分配给它们,而是把数据放到磁盘的输出井中,然后把该进程用户打印请求表挂到假脱机队列中,当打印机空闲时,才进行打印

  • 使用SPOOLing系统的目的是为了提高(I/O设备)的使用效率。

SPOOLing (即 外部设备 联机并行操作),即Simultaneous Peripheral Operation
On-Line的缩写,它是关于慢速 字符设备 如何与计算机主机交换信息的一种技术,通常称为“ 假脱机 技术”。 SPOOLing 技术特点:
(1)提高了I/O速度.从对低速I/O设备进行的I/O操作变为对输入井或输出井的操作,如同脱机操作一样,提高了I/O速度,缓和了CPU与低速I/O设备速度不匹配的矛盾.
(2)设备并没有分配给任何进程.在输入井或输出井中,分配给进程的是一存储区和建立一张I/O请求表.
(3)实现了虚拟设备功能.多个进程同时使用一独享设备,而对每一进程而言,都认为自己独占这一设备,不过,该设备是逻辑上的设备.

SPOOLing系统(假脱机)的特点

①提高了I/O的速度。
②将独占设备改造为共享设备。
③实现了虚拟设备功能。

虚拟设备是种技术。假脱机对设备本身而言实现了将独占设备变成共享设备

使用SPOOLing系统的目的是为了提高(I/O设备)的使用效率。

SPOOLing (即外部设备联机并行操作),即Simultaneous Peripheral Operation On-Line的缩写,它是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。
该技术是在通道技术和多道程序设计基础上产生的,它由主机和相应的通道共同承担作业的输入输出工作,利用磁盘作为后援存储器,实现外围设备同时联机操作。
SPOOLing系统由专门负责I/O的常驻内存的进程以及输入井、输出井组成;它将独占设备改造为共享设备,实现了虚拟设备功能。

缓和CPU与低速I/O设备速度不匹配的矛盾; 实现了 虚拟设备 功能 。

虚拟设备

虚拟设备是指把一个物理设备变换成多个对应的逻辑设备。

通过SPOOLing技术可将一台物理I/O设备虚拟为多台逻辑I/O设备,允许多个用户共享一台物理I/O设备,如打印机。

IO重定向

是指将命令的执行结果重新导出到其他的设备或者文件。主要包括输入重定向和输出重定向

I/O重定向,是指用于I/O操作的设备可以更换(重定向),而不必改变应用程序。比如调试程序,可将所有输出送屏幕显示,而程序调试完后,如需正式打印出来,需将I/O重定向中的数据结构—逻辑设备表中的显示终端改为打印机。

  • 在调试程序时,可以把所有输出送到屏幕显示,而不必正式输出到打印设备,其运用了 IO重定向
  • 一计算机系统配备了三台HP1000激光打印机、一台绘图机。为此该系统需在内存中配置(2)个设备驱动程序。

分时操作系统

把计算机与许多终端用户连接起来,分时操作系统将系统 处理机
时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是可有效增加资源的使用率。例如UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。——百度百科词条:分时操作系统

分时会导致进程切换,效率反而不高。 应该是多道程序的出现是为了提高系统资源的利用率

  • 推动分时操作系统形成和发展的主要动力是 方便用户

分时系统可以很好的将一台计算机提供给多个用户使用,主要用于查询系统。
用户需求表现:
1人机交互
2 共享主机
3 便于用户上机

系统开销

  • 假设就绪队列中有10个进程,以时间片轮转方式进行进程调度,时间片大小为300ms,CPU进行进程切换需要花费10ms,则系统开销所占比率和进程数目增加到30个,其余条件不变时系统开销所占的比率相比,其结果是 等于

进程数为 10 的情况下,系统开销比率等于切换进程总时间 / 进程总共运行时间,其中切换进程运行时间为 1010ms ,进程运行总时间为
300
10+1010ms ,因此系统开销比率为 1010/(30010+1010),
可以看出系统开销比率与进程数无关,故选择等于选项。

CPU利用率

  • 测得某个请求调页的计算机系统部分状态数据为:CPU利用率20%,用于对换空间的硬盘利用率为97.7%,其他设备的利用率为5%。由此断定该系统异常。此情况下(安装一个更快的硬盘、减少运行的进程数目)能提高CPU的利用率。

cpu利用率的瓶颈是硬盘的读写慢:
一,安装 一个更快的硬盘。相当于拓宽公路。因此A肯定没有为题。
二,减少进程数。相当于本来拥堵的公路车采取限号,让整个路更通畅了。这里有一个误区,并不是进程数越多,cpu利用率越高。就好像公路上车越多,单位时间内通过的车就越多一样。也可能情况相反,还不如让车少一点,单位时间内通过的车可能会更多。

对换空间的硬盘利用率为97.7% 可见进程数目太多导致内存不足,导致频繁的换页

CPU和I/O设备占用率较低,而磁盘交换区占用率非常高,说明当前系统频繁缺页,频繁进行页面置换,导致真正执行任务的时间变短,效率变低,系统发生抖动。因此要缓解这种情况就需要降低系统缺页率,才能使系统有更多时间来处理任务而不是置换页面。
对于A,安装一个更快的硬盘,既把交换分区放在更快的硬盘上,相当于给你电脑把分页文件pagefile.sys放在固态硬盘上肯定比你放在机械硬盘上在交换页面的时候速度要快,但是这并没有从根本上解决页面置换算法的抖动现象,换入换出的频率并没有改变,只是一定程度上的改善了这一状况。
对于D,减少进程运行数目,这样每个进程分配到的内存空间会相对增大,可以有效降低缺页率。 还有在增加内存的情况下也可以从根本上解决这一情况。

通信时中断计算

在利用RS-232串口进行通信时,其通信速率为9.6Kb/s(b为bit)。如果通信串口中设置了一个16位寄存器作为缓冲寄存器,这意味着每隔(1.6ms)时间便要中断一次CPU。

t=16/(9.6*2^10)=1.62ms

在数据通讯的时候,1Kb/s = 1000bit/s,只有关于内存和存储时,才是1024,9.6kb/s = 9600bit/s,计算出约为1.6ms

数据块处理时间(单缓冲双缓冲)

假定把磁盘上的一个数据块中的信息输入到一个双缓冲区的时间为T=0.1ms,将缓冲区中的数据传送到用户区的时间M=0.05ms,而CPU对数据的处理时间C=0.05ms,这样系统对每个数据块的处理时间为:
因为是双缓冲,所以从磁盘读数据到缓冲区和CPU处理缓冲区数据可以同步进行,因此时间为0.1ms

对于单缓冲: 假定从磁盘把一块数据输入到缓冲区的时间为T,操作系统将该缓冲区中的数据传送到用户区的时间为M,而CPU对这一块数据处理的时间为C。由于T和C是可以并行的,当T>C时,系统对每一块数据的处理时间为M十T,反之则为M+C,故可把系统对每一块数据的处理时间表示为Max(C,T)+M。
对于双缓冲: 系统处理一块数据的时间可以粗略地认为是MAC(C, T)。如果C<T,可使块设备连续输入;如果C>T,则可使CPU不必等待设备输入。对于字符设备,若釆用行输入方式,则釆用双缓冲可使用户在输入完第一行之后,在CPU执行第一行中的命令的同时,用户可继续向第二缓冲区输入下一行数据。而单缓冲情况下则必须等待一行数据被提取完毕才可输入下一行的数据。
对每一块的平均耗时:MAX(T,C+M);

文件

  • 文件的物理结构不仅与外存的分配方式相关,还与存储介质的特性相关,通常在磁带上只适合使用顺序结构
  • 采用顺序结构的文件既适合进行顺序访问,也适合进行随机访问
  • 虽然磁盘是随机访问的设备,但其中的文件也可以使用顺序结构
  • 顺序文件必须采用连续分配方式,而链接文件和索引文件则可采用离散分配方式。

文件分配对应于文件的物理结构,是指如何为文件分配磁盘块。常用的磁盘空间分配方 法有三种:连续分配、链接分配和索引分配。
顺序分配:顺序分配方法要求每个文件在磁盘上占有一组连续的块。
隐式链接分配:
每个文件对应一个磁盘块的链表;磁盘块分布在磁盘的任何地方,除最后一个盘块外,每一个盘块都有指向下一个盘块的指针,这些指针对用户是透明的。
显式链接分配:是指把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中。
该表在整个磁盘仅设置一张,每个表项中存放链接指针,即下一个盘块号。 在该表中,凡是属于某一文件的第一个盘块号,或者说是每一条链的链首指针所对应的盘块号,均作为文件地址被填入相应文件的FCB的“物理地址”字段中。
由于查找记录的过程是在内存中进行的,因而不仅显著地提高了检索速度,而且大大减少了访问磁盘的次数。由于分配给文件的 所有盘块号都放在该表中,故称该表为文件分配表(File Allocation Table, FAT)。
MS-DOS 采用的就是这种方式。

  • 磁带机属于 顺序存取 设备
  • 在UNIX中,通常把设备作为(特殊)文件来处理。
  • 外存上存放的数据 必须在访问前先装入内存
  • 文件的存储方法依赖于 文件的物理结构和存放文件的存储设备的特性
  • 目录文件所存放的信息是 该目录中所有子目录文件和数据文件的目录

文件目录:把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合;
目录文件:为了实现对文件目录的管理,通常将文件目录以文件的形式保持在外存,这个文件就叫目录文件。

多道程序设计

  • 多道程序设计是指在一台处理机上并发运行多个程序
  • 在计算机系统中,操作系统是 核心系统软件

操作系统,是计算机系统中负责支撑应用程序运行环境以及用户操作环境的系统软件,同时也是计算机系统的核心与基石。即操作系统首先是软件,而且是系统软件。它在计算机系统中的作用,大致可以从两方面体会:对内,操作系统管理计算机系统的各种资源,扩充硬件的功能;对外,操作系统提供良好的人机界面,方便用户使用计算机

多道程序技术运行的特征:多道、宏观上并行、微观上串行

  • 多道程序运行的特征:多道 、宏观上并行、实际上多道程序是串插运行的
  • 引入多道程序的目的在于 充分利用CPU,减少CPU等待时间

多道程序设计技术是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制下,相互穿插运行,两个或两个以上程序在计算机系统中同处于开始到结束之间的状态,
这些程序共享计算机系统资源。
与之相对应的是单道程序,即在计算机内存中只允许一个的程序运行。
即:提高CPU的利用率
在多道程序环境下,多个程序共享计算机资源当某个程序等待I/O操作时,CPU可以执行其他程序,大大提高CPU的利用率。

进程

由程序段、相关数据段和PCB三部分便构成进程实体(进程映像)
(1)进程是程序的一次执行
(2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动
(3)进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位

  • 进程是动态的,程序是静态的,这是进程和程序的一个本质区别。
  • 进程在系统中是否存在的惟一标志是 进程控制块

进程唯一表征为以下元素:标示符,状态,优先级,程序计数器,内存指针,上下文数据,I/O状态信息,记账信息。这些信息被存储在一个称为进程控制块(PCB)的数据结构中。

UNIX 操作系统 (分时操作系统)

UNIX操作系统是著名的 分时系统

UNIX操作系统(尤尼斯),是一个强大的多用户、多任务 操作系统 ,支持多种 处理器架构 ,按照操作系统的分类,属于 分时操作系统
UNIX系统是一个多用户,多任务的分时操作系统。
UNIX的系统结构可分为三部分:操作系统内核(是UNIX系统核心管理和控制中心,在系统启动或常驻内存),系统调用(供程序开发者开发应用程序时调用系统组件,包括进程管理,文件管理,设备状态等),应用程序(包括各种开发工具,编译器,网络通讯处理程序等,所有应用程序都在Shell的管理和控制下为用户服务)。
UNIX系统大部分是由C语言编写的,这使得系统易读,易修改,易移植。
UNIX提供了丰富的,精心挑选的系统调用,整个系统的实现十分紧凑,简洁。
UNIX提供了功能强大的可编程的Shell语言(外壳语言)作为用户界面具有简洁,高效的特点。
UNIX系统采用树状目录结构,具有良好的安全性,保密性和可维护性。
UNIX系统采用进程对换(Swapping)的内存管理机制和请求调页的存储方式,实现了虚拟内存管理,大大提高了内存的使用效率。
UNIX系统提供多种通信机制,如:管道通信,软中断通信,消息通信,共享存储器通信,信号灯通信。

不是分时系统的特征 成批性
特征

交互性 多路性 独占性

操作系统的特征

  • 现代操作系统的两个基本特征是(程序的并发执行)和 资源共享

操作系统的特征:并发,共享,虚拟和异步 并发:计算机中存在多个运行的程序,需要OS管理和调度。

多个应用程序交替执行,需要知道所有运行的程序当前的执行的位置,当前正在执行的是哪一个应用,如果应用之间有切换的时候,切换到下一个应用的时候,它上次执行到什么位置,这次就从什么时候开始。当时的状态是什么样子,都需要操作系统来维护。

共享: “同时”共享 和 互斥共享

多个应用并发执行的时候,宏观上要体现出它们在同时访问资源的情况,而微观上要实现它们的互斥访问。比如说我们说到的内存,两个应用同时访问内存,那这个时候,每个应用需要知道它访问的是哪一个,另一个应用访问的是哪一个,他们俩之间不能访问出错,其中一个需要保护的内存资源,不能让另外一个应用去访问。在微观上需要对它们做很好的隔离,因为在数据总线上任何时刻只有一个应用去访问存储单元,这就是所说的微观上的互斥。

虚拟:利用多道程序设计技术(程序的交替运行),让每个用户都觉得有一个计算机专门为他服务。

操作系统在每个应用执行的时候,这种交替执行的交替频率特别高,让用户在应用的时候感觉不太出来这台机器还有其他用户在用,当然负载大到一定程度,用户是可以感觉到的。

异步:
1.程序的执行不是一贯到底的,而是走走停停,向前推进的速度不可预知。
2.只要运行的环境相同,OS需要保证程序运行的结果也要相同。

如果说某个应用就是需要知道跟时间相关的这种走走停停的信息,也是可以在操作系统的支持之下,发现这种时间上的差异的。

  • 在操作系统中,可以并行工作的基本单位是 进程

并行性:两个或多个事件在同一时刻发生
并发性:两个或多个事件在同一时间间隔内发生

作业只能并发操作,进程可以并行

  • 操作系统是一种 系统软件
  • 从用户的观点来看,操作系统是 用户与计算机之间的接口
  • 下列的(中断)不属于操作系统所管理的资源。

数据、内存、CPU

  • 操作系统的功能不包括 用户管理

处理机管理、存储管理、文件管理、设备管理

分区

分区 存储管理支持多道程序设计,算法简单,但存储碎片多。

分区分配是能满足多道程序设计需要的一种最简单的存储管理技术,如可变式分区法,基本思想是,当用户作业要求进入主存时,在主存可利用的空间区中,找到大于等于用户作业所需要的空间容量,如果该空间大于用户用需要的容量,那么操作系统将会把该分区分成两部份,一部份大小是刚好用户作业所需要的大小,一份则是较小剩下来的,由此可见,这样就会产生很多小的存储碎片。

其他选项就不是很简单的算法了,均需要地址变换。

为了支持多道程序系统和分时系统,支持多个程序并发执行,引入了分区式存储管理。分区式存储管理是把内存分为一些大小相等或不等的分区,操作系统占用其中一个分区,其余的分区由应用程序使用,每个应用程序占用一个或几个分区。分区式存储管理虽然可以支持并发,但难以进行内存分区的共享。
常用的分区方法有固定分区和动态分区,而动态分区中常用的分区分配算法有首次适配法,下次适配法,最佳适配法,最差适配法。
为了解决分区分配带来的碎片问题,引入了伙伴系统:无论已分配分区或空闲分区,其大小均为2的k次幂。在系统运行过程中,由于不断的划分,可能会形成若干个不连续的空闲分区,将这些空闲分区根据分区的大小进行分类,对于每一类具有相同大小的所有空闲分区,单独设立一个空闲分区双向链表。这样,不同大小的空闲分区形成了k个空闲分区链表。

原语

原语是一种特殊的系统调用命令,它的特点是 执行时不可中断

原语和广义指令都可以被进程所调用,两者的差别在于原语有不可中断性,它是通过在执行过程中关闭中断实现的,且一般由系统进程调用。

原语是由若干个 机器指令 构成的完成某种特定功能的一段程序,具有不可分割性·即原语的执行必须是连续的,在执行过程中不允许被中断。
原语通常由若干条指令组成,用来实现某个特定的操作。
通过一段不可分割的或不可中断的程序实现其功能。
原语是操作系统的核心,它不是由进程而是由一组程序模块所组成,是操作系统的一个组成部分,它必须在管态(一种机器状态,管态下执行的程序可以执行特权和非特权两类指令,通常把它定义为操作系统的状态)下执行,并且常驻内存,而个别系统有一部分不在管态下运行。
原语和广义指令都可以被进程所调用,两者的差别在于原语有不可中断性,它是通过在执行过程中关闭中断实现的,且一般由系统进程调用。
许多广义指令的功能都可用目态(一种机器状态,通常把它作为用户程序执行时的状态)下运行的系统进程完成,而不一定要在管态下完成,例如文件的建立、打开、关闭、删除等广义指令,都是借助中断进入管态程序,然后转交给相应的进程,最终由进程实现其功能。
引进原语的主要目的是为了实现进程的通信和控制。

系统调用

系统调用的目的是 请求系统服务

请求系统服务。
操作系统编制了许多不同功能的子程序,供用户程序执行中调用。这些由操作系统提供的子程序称为系统功能调用,简称系统调用。
系统调用是操作系统为用户程序提供的一种服务界面,或者说,是操作系统保证程序设计语言能正常工作的一种支持。

操作系统的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境来使应用程序具有更好的兼容性,为了达到这个目的,内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用(system call)的接口呈现给用户。
系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序。

系统调用,也称为系统功能调用。操作系统编制了许多不同功能的小程序。供用户程序执行中调用。这些由操作系统提供的子程序称为系统调用

  • 时间片轮转法进行进程调度是为了 多个终端都能得到系统的及时响应

时间片轮转法是以选择一个单位时间片进行调度的,若当前进程在单位时间片内没有执行完成,会将其根据上下文以FIFO的形式放到队列最后,进而执行下一个时间片的进程
时间片轮转就是保证每个都能得到等概率的执行

  • 操作系统内核与用户程序、应用程序之间的接口是 系统调用

计算机结构分析自底向上依次是: 硬件->驱动程序->内核->用户接口程序->应用程序。
用户接口程序:基于文本的叫shell,基于图标的叫图形用户界面(GUI)如Gnome、KDE。

在这里插入图片描述

系统调用为用户程序提供了接口。
内核空间和用户空间之间存在着明显的权限差异。
而操作系统会在程序,系统部件以及内核与外部程序之间设置安全隔离,系统调用此时提供了一个系统级的接口,使得用户程序可以合法使用系统功能。(超越用户态的权限和功能)

  • 在一段时间内,只允许一个进程访问的资源称为 临界资源 ,访问这类资源的代码叫做 临界区

对临界资源,应采取 互斥访问 方式,来实现共享

五大类型操作系统各自的特点

批处理操作系统

(1) 批处理操作系统的特点有:
a.用户脱机使用计算机。用户提交作业之后直到获得结果之前就不再和计算机打交道。作业提交的方式可以是直接交给计算中心的管理操作员,也可以是通过远程通讯线路提交。提交的作业由系统外存收容成为后备作业。
b.成批处理。操作员把用户提交的作业分批进行处理。每批中的作业将由操作系统或监督程序负责作业间自动调度执行。
c.多道程序运行。按多道程序设计的调度原则,从一批后备作业中选取多道作业调入内存并组织它们运行,成为多道批处理。

分时操作系统

(2)分时操作系统的特点有:
a. 交互性:首先,用户可以在程序动态运行情况下对其加以控制。其次,用户上机提交作业方便。分时系统还为用户之间进行合作提供方便。
b.多用户同时性:多个用户同时在自己的终端上上机,共享CPU和其他资源,充分发挥系统的效率。
c.独立性:客观效果上用户彼此间感觉不到有别人也在使用该台计算机,如同自己独占计算机一样。

就绪队列中进程的数目;
系统的处理能力;
系统对响应时间的要求
是分时系统中确定时间片大小需要考虑的因素。

实时操作系统

(3) 实时操作系统的特点有:
a.实时时钟管理(定时处理和延时处理)。
b. 连续的人-机对话,这对实时控制往往是必须的。
c.要求采取过载保护措施。例如对于短期过载,把输入任务按一定的策略在缓冲区排队,等待调度; 对于持续性过载,可能要拒绝某些任务的输入;
在实时控制系统中,则及时处理某些任务,放弃某些任务或降低对某些任务的服务频率。
d.高度可靠性和安全性需采取冗余措施。双机系统前后台工作,包括必要的保密措施等。

网络操作系统

(4) 网络操作系统的特点有:
a.计算机网络是一个互连的计算机系统的群体。
b. 这些计算机是自治的,每台计算机有自己的操作系统,各自独立工作,它们在网络协议控制下协同工作。
c.系统互连要通过通信设施(硬件、软件)来实现。 d.系统通过通信设施执行信息交换、资源共享、互操作和协作处理,实现多种应用要求。

网络操作系统:不是基本的操作系统。

分布式操作系统

(5)分布式操作系统的特点有:
a.计算机网络的开发都遵循协议,而对于各种分布式系统并没有制定标准的协议。当然,计算机网络也可认为是一种分布式系统。
b.分布式系统要求一个统一的操作系统,实现系统操作的统一性。
c.分布式操作系统对用户是透明的。但对计算机网络,若一个计算机上的用户希望使用另一台计算机上的资源,则必须明确指明是哪台计算机。
d.分布式系统的基础是网络。分布式系统已不仅是一个物理上的松散耦合系统,同时还是一个逻辑上紧密耦合的系统。
e.分布式系统还处在研究阶段。而计算机网络已经在各个领域得到广泛的应用。

比较页式虚拟存储器和段式虚拟存储器的优缺点

页式虚拟存储器管理方法的
主要优点是页表硬件少,查表速度快,主存零头少;
主要缺点是分页无逻辑意义,不利于存储保护。
而段式虚拟存储器管理方法的
优点是段的界限分明,支持程序的模块化设计,易于对程序段的编译、修改和保护;便于多道程序的共享。
主要缺点是因为段的长度不同,所以主存利用率不高,且因为段间地址不连续会产生大量的内存碎片,造成浪费;段表庞大查表速度慢。

简述什么是RAID,RAID0

RAID是一种把多块独立的 硬盘 (物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供 数据备份 技术。组成 磁盘阵列 的不同方式称为 RAID级别 (RAID Levels)。在用户看起来,组成的磁盘组就像是一个硬盘,用户可以对它进行分区,格式化等等。总之,对磁盘阵列的操作与单个硬盘一模一样。不同的是,磁盘阵列的存储速度要比单个硬盘高很多,而且可以提供自动数据备份。数据备份的功能是在用户数据一旦发生损坏后,利用备份信息可以使损坏数据得以恢复,从而保障了用户数据的安全性。

RAID 0 可以把多块硬盘连成一个容量更大的硬盘群,可以提高磁 盘的性能和吞吐量。RAID
0没有冗余或错误修复能力,成本低,要求至少两个磁盘,一般只是在那些对数 据安全性要求不高的情况下才被使用。

RAID1 称为磁盘镜像:把一个磁盘的数据镜像到另一个磁盘上,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,具有很高的数据冗余能力,但磁盘利用
率为50%,故成本最高,多用在保存关键性的重要数据的场合。RAID 1的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外一个硬盘上。

RAID 2 是RAID 0的改良版,以汉明码(Hamming
Code)的方式将数据进行编码后分割为独立的位元,并将数据分别写入硬盘中。因为在数据中加入了错误修正码(ECC,Error
Correction Code),所以数据整体的容量会比原始数据大一些。

RAID 3 是把数据分成多个“块”,按照一定的容错算法,存放在N+1个硬盘上,实际数据占用的有效空间为N个硬盘的空间总和,而第N+1个硬盘上存储的数据是校验容错信息,当这N+1个硬盘中的其中一个硬盘出现故障时,从其它N个硬盘中的数据也可以恢复原始数据,这样,仅使用这N个硬盘也可以带伤继续工作(如采集和回放素材),当更换一个新硬盘后,系统可以重新恢复完整的校验容错信息。由于在一个硬盘阵列中,多于一个硬盘同时出现故障率的几率很小,所以一般情况下,使用RAID3,安全性是可以得到保障的。

SimpleTest

A

fill blank

  1. 操作系统的五大管理功能: 作业管理、文件管理、内存管理、设备管理、进程管理

拓展知识:

操作系统的五大管理功能:
  (1)作业管理:包括任务、界面管理、人机交互、图形界面、语音控制和虚拟现实等;
  (2)文件管理:又称为信息管理;
  (3)存储管理:实质是对存储“空间”的管理,主要指对主存的管理;
  (4)设备管理:实质是对硬件设备的管理,其中包括对输入输出设备的分配、启动、完成和回收;
  (5)进程管理:实质上是对处理机执行“时间”的管理,即如何将CPU真正合理地分配给每个任务。

  1. FCB 是文件存在的标志,它记录了系统管理文件所需的全部信息。

文件控制块 FCB 是文件存在的标志,它记录了系统管理文件所需要的全部信息。

  1. 创建一个进程的主要任务是建立该进程的 PCB或程序控制块,并把它挂到就绪队列中。

创建进程的主要步骤:
( 1 )申请空白 PCB 。
( 2 )为新进程分配资源。
( 3 )为新进程分配其他必要资源。
( 4 )初始化进程控制块。
( 5 )将新进程插入就绪队列,如果进程就绪队列能够接纳新进程, 便将新进程插入就绪队列。

进程创建原语的主要任务是 创建进程控制块PCB,并分配所需的各种资源

  1. 进程间的同步与互斥反应了进程间的 并发和共享

同步反映了进程间的合作关系,
互斥反映了进程间的竞争关系。

  1. SPOOLing系统中的 输入缓冲区输出缓冲区 对脱机输入中的磁盘进行模拟,输入进程输出进程 对脱机输入中的外围设备进行模拟。

Spooling系统中的用户程序可以随时将输出数据送到输出井中,待输出设备空闲时再由 Spooling系统完成数据的输出操作。
SPOOLing是对脱机I/O工作方式的模拟,SPOOLing系统中的输入井是对脱机输入中的(磁盘)进行模拟,输出井是对脱机输出中的(磁盘)进行模拟,输入进程是对脱机输入中的(外围控制机)进行模拟。

  1. 在响应比高者优先的调度算法中,各个作业等待时间相同时,运行时间短的将得到优先调度,运行时间相同时,等待时间长的将得到优先调度。

choice question

  1. 在分时系统中时间片一定时,(用户数越多)响应时间越长。

在分时系统中,时间片越小不一定好。

  1. 多道程序环境下,操作系统分配资源的基本单位是 进程
  2. 设计分时操作系统时,首先要考虑的是 交互性和响应时间;
    设计实时操作系统时,首先要考虑的是 实时性和可靠性
  3. 在分时操作系统环境下运行的作业通常称为 终端型作业
  4. 在请求页式存储管理中,在(内存中无空闲页面)时调用置换算法。
    在请求页式存储管理中,若所需页面不在内存中,则会引起 缺页中断
  5. 在批处理系统中,作业调度程序从后备作业队列中选出若干作业,使其进入 内存

不属于作业管理程序任务的是 为作业对应的进程分配处理器

作业调度程序从处于就绪状态的队列选取适当的作业投入运行。 错误

  1. 在没有快表的情况下,分页系统每访问一次数据,要访问( 2 )次内存;分段系统每访问一次数据,要访问( 2 )次内存;段页式系统每访问一次数据,要访问( 3 )次内存。
  2. PCB是进程存在的唯一标志,也是系统感知进程存在的唯一实体。多道程序的引入主要是为了提高CPU的利用率。
  3. 当作业进入完成状态,操作系统 将该作业的控制块从当前作业队列中剔除,收回其所占资源
  4. 既考虑等待时间,有考作业执行时间的调度算法是:响应比高者优先
  5. 产生死锁的主要原因:系统资源不足和进程推进顺序不当 多个进程竞争资源出现了循环等待
  6. 段页式管理的地址映象表是:每个作业或进程一张段表,每个段一张页表。
    页式存储管理的地址是一维的,段式存储管理的地址是二维的。
  7. 页式存储管理中,页表的起始地址存放在(寄存器)中。
  8. 位示图可用于 磁盘空间管理
  9. 一般来说,文件名及属性可以收纳在( 目录)中以便查找。
  10. 设基址寄存器的内容为 1000 ,当执行指令 “ LOAD A , 2000 ”时,操作数的地址是 3000
  11. 页式存储管理 每访问一次数据 ,要访问(2) 次内存

short question

  1. 生产者消费者问题中为什么用三个信号量,作用是什么?

设置互斥信号量 mutex,表示缓冲池是否可用,初值为1。;
设置生产者的同步信号量buffer(empty),表示缓冲区个数(空单元数),初值为n。;
设置消费者的同步信号量product(full),表示产品个数(满单元个数),初值为0。

  1. 在一个请求分页存储管理系统中,内存块大小1K,已知作业A为3K,把它分为3页,作业分批装入内存后,其页表及存储块表如图所示:当作业中指令访问相对地址 2500 时。
    在这里插入图片描述
    1) 系统得到2500后,发现不在内存中,检测发现内存块5有空,将第三页放到内存中,根据地址2500的相对地址和内存块5的起始地址确定实际物理地址。
    2500的相对地址(页内偏移量): 2500-1024*2 = 452
    物理地址:1024 * 5+452 = 5572
  2. 桌上有一个空盘子,可放一个水果,爸爸只可放苹果,妈妈只放橘子,儿子只可取苹果,女儿只可取橘子,使用PV操作实现四个人的互斥

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

交互性和响应时间;**
设计实时操作系统时,首先要考虑的是 实时性和可靠性
4. 在分时操作系统环境下运行的作业通常称为 终端型作业
5. 在请求页式存储管理中,在(内存中无空闲页面)时调用置换算法。
在请求页式存储管理中,若所需页面不在内存中,则会引起 缺页中断
6. 在批处理系统中,作业调度程序从后备作业队列中选出若干作业,使其进入 内存

不属于作业管理程序任务的是 为作业对应的进程分配处理器

作业调度程序从处于就绪状态的队列选取适当的作业投入运行。 错误

  1. 在没有快表的情况下,分页系统每访问一次数据,要访问( 2 )次内存;分段系统每访问一次数据,要访问( 2 )次内存;段页式系统每访问一次数据,要访问( 3 )次内存。
  2. PCB是进程存在的唯一标志,也是系统感知进程存在的唯一实体。多道程序的引入主要是为了提高CPU的利用率。
  3. 当作业进入完成状态,操作系统 将该作业的控制块从当前作业队列中剔除,收回其所占资源
  4. 既考虑等待时间,有考作业执行时间的调度算法是:响应比高者优先
  5. 产生死锁的主要原因:系统资源不足和进程推进顺序不当 多个进程竞争资源出现了循环等待
  6. 段页式管理的地址映象表是:每个作业或进程一张段表,每个段一张页表。
    页式存储管理的地址是一维的,段式存储管理的地址是二维的。
  7. 页式存储管理中,页表的起始地址存放在(寄存器)中。
  8. 位示图可用于 磁盘空间管理
  9. 一般来说,文件名及属性可以收纳在( 目录)中以便查找。
  10. 设基址寄存器的内容为 1000 ,当执行指令 “ LOAD A , 2000 ”时,操作数的地址是 3000
  11. 页式存储管理 每访问一次数据 ,要访问(2) 次内存

short question

  1. 生产者消费者问题中为什么用三个信号量,作用是什么?

设置互斥信号量 mutex,表示缓冲池是否可用,初值为1。;
设置生产者的同步信号量buffer(empty),表示缓冲区个数(空单元数),初值为n。;
设置消费者的同步信号量product(full),表示产品个数(满单元个数),初值为0。

  1. 在一个请求分页存储管理系统中,内存块大小1K,已知作业A为3K,把它分为3页,作业分批装入内存后,其页表及存储块表如图所示:当作业中指令访问相对地址 2500 时。
    在这里插入图片描述
    1) 系统得到2500后,发现不在内存中,检测发现内存块5有空,将第三页放到内存中,根据地址2500的相对地址和内存块5的起始地址确定实际物理地址。
    2500的相对地址(页内偏移量): 2500-1024*2 = 452
    物理地址:1024 * 5+452 = 5572
  2. 桌上有一个空盘子,可放一个水果,爸爸只可放苹果,妈妈只放橘子,儿子只可取苹果,女儿只可取橘子,使用PV操作实现四个人的互斥

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
[外链图片转存中…(img-9iw4edgb-1715634496364)]
[外链图片转存中…(img-1n2tZyZR-1715634496365)]

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 30
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值