操作系统
通过操作系统可实现与计算机硬件来交互;
操作系统是人机交互的接口;
语言处理程序:如Java虚拟机,编译程序,数据库系统等
应用程序。
操作系统的功能:
- 管理系统的硬件、软件、数据资源;
- 控制程序运行
- 人机交互的接口
- 应用软件与硬件之间的接口
操作系统的任务:
- 进程管理
- 存储管理
- 文件管理
- 作业管理
- 设备管理
特殊的操作系统
- 实时操作系统:交互能力要求不高,可靠性要求高(规定时间内响应并处理)
- 嵌入式操作系统:运行在智能芯片环境中;微型化,可定制(针对硬件变化配置),实时性,可靠性,易移植性(HAL和BSP支持)。
嵌入式操作系统的易移植性体现在 增加了板级支持软件/包,由板级支撑包(BSP)来支持。
需要区分嵌入式操作系统的可定制性和易移植性,一个是硬件层面,一个是软件层面。
进程
进程是资源调度和分配的基本单位。一个进程中可包含多个线程。
进程是程序在数据集上运行的过程,它是系统进行资源分配和调度的独立单位,它由程序块、进程控制块(PCB)、数据块三部分组成。
- 线程的概念:一个进程中可拥有多个线程,其中各线程可共享的资源有内存地址空间,代码,数据和文件等; 但每个线程拥有独立的程序计数器,寄存器和栈。
- 进程的状态:运行,就绪,阻塞。
临界资源或临界区: 进程与进程之间一些以互斥方式来访问共享的资源叫临界资源,临界区指的是进程中访问临界资源的那段代码。(常见的有磁盘磁带,缓冲区)
进程由先后关系产生的制约关系叫直接制约关系。
信号量与PV操作
PV操作: 进程与进程之间存在并发,那对于资源有限的情况下,如何管理多进程对资源的访问,如何限制各进程之间形成协调的同步模型,这个时候就用到了PV操作。
这里有两个信号量S1 S2,S1代表缓冲区空位资源,S2表缓冲区可用产品资源。
因为两个信号量的初始值S1 S2分别为1和0.
在每次使用资源前进行加锁,即P操作,使用资源后立即释放资源,即进行V操作。
P操作检查资源是否足够,V操作释放资源,并通知其他进程。
PV操作一定是成对出现的,但无固定的先后顺序。
这里涉及到两个进程来访问缓冲区,缓冲区是典型的临界资源,即一个时间只允许一个进程访问,为此要给缓冲区的访问来加锁。
这里的信号量S,认为是对缓冲区的访问权。而只允许一个进程使用,则信号量S的初值为1.
前趋图
箭头流出为前趋活动,箭头流入为后继活动。
有箭头指向自己为流入,需要进行检查前趋,即P操作,加锁操作。
有箭头从自己流出,操作完成,则需要进行后继通知操作,即V操作。
信号量与箭线相关,与进程无关。
死锁:指两个以上的进程互相都要求获取对方已经占有的资源,而导致无法继续运行下去的现象;
四大条件:
互斥,进程对于资源的访问是互斥的,一个时间段内只允许一个进程访问资源;
保持和等待:对于进程而言,对于已分配已获取的资源,不会放弃,会继续等待;
不剥夺:进程不剥夺已被加锁的资源;
环路等待:A等B释放,B等A释放;
死锁的预防:打破四大条件,如有序分配资源等;
死锁的避免:银行家算法;
鸵鸟策略:不予理睬;
若多个进程产生死锁,就会造成系统死锁;
系统不可能发生死锁的最小资源数:(w-1)*m + 1 <= n;
w:每个进程需要的系统资源数;
m:进程个数;
n:最小的系统不发生死锁的资源数;
进程资源图
页式存储结构
操作系统负责将硬盘/外存中的程序调入主存/内存中(PS 硬件电路负责将内存中内容复制到Cache中,有直接/全/组相联映像3种做法),调入的方式是页式存储结构。
页式存储结构:将程序与内存均划分为同样大小的块,以页为单位,将程序调入内存。
物理块号,又称页帧号。
外存中为逻辑地址,内存中为物理地址。
逻辑地址 = 页号 + 页内地址;
物理地址 = 页帧号/物理块号 + 页内地址;
缺页中断
如一个程序被划分为10页,但内存中为此程序安排的空间只有5块,则当CPU要访问第6页时,这时内存中没有,需要重新从外存中调入。这种情况就叫做缺页中断。
那调入的第6页应该放到5个块中的哪一个呢?这就涉及到了页面置换算法。
淘汰原则:
1、访问位为0(即最近没有被访问过);
2、多个块访问位为0时,则淘汰修改位为0的(淘汰访问位为1的,即淘汰被修改了的程序的代价较大)。
段式存储
为防止FOR循环被划分到不同的页中,导致程序逻辑的完整性和调用的频繁性问题。
按照程序的逻辑完整性来划分和调用。
段式存储:按照用户作业的自然段来划分逻辑空间,然后调入内存,段的长度可以不一样。
逻辑地址 = 段号 + 段内偏移量。
考点:合法段地址的判断过程。
磁盘管理
磁盘有很多个盘面,取其中之一的盘面来看,许多同心圆就是许多个磁道,从外到内,磁道编号递增。磁盘的每个盘面的0号磁道共同组成了一个柱面,柱面的编号与磁道编号相同。
存取数据过程:磁头垂直于磁道寻道,然后等待磁盘旋转到对应的扇区。
每个磁头都在同一个主轴上面,即对于每个盘面,一次只能读取相同的磁道上的数据(各磁头在同一柱面上)。
当有多个在磁盘上读取内存的任务时,如何根据磁盘的工作原理,来合理安排各任务的执行顺序。
单缓冲区和双缓冲区
缓冲区,在同一时刻只能允许一个进程在里面进行操作。如进程1在将数据写入缓冲区,那么就不能有进程2对缓冲区进行读写操作。
但对于双缓冲区,依然不允许两个进程来同时进行读操作或同时进行写操作,但是允许当进程1进行读操作时,进程2进行写操作。
对于这个题目,要用流水线的计算时间的方法来计算,对于单缓冲区,因为只允许一个进程在缓冲区进行操作,且不能同时进行读写操作,所以将涉及到缓冲区操作的读写过程视为一个步骤,只有当涉及到缓冲区的读写(15+5)操作完成后,才可以进行在工作区对数据的处理工作。而对于双缓冲区,依然不允许同时对两个缓冲区进行读操作,但是当对缓冲区1进行写操作的时候,已经可以对缓冲区2进行读操作了。所以双缓冲区,可以认为数据的读写操作是可以同时进行的。所以用流水线的方法来计算时间,这里耗时最长的步骤为15,而非20。
IO管理软件
文件管理
文件管理-树形目录结构
绝对路径:从盘符出发,开始的路径。盘符为/
相对路径:从当前目录开始的路径。从某个文件名开始。
全文件名:绝对路径 + 文件名;
通过绝对路径和相对路径,磁盘访问次数都是一次。
文件管理-位示图
这里的位指的是比特位。
指在文件的存储过程中,区分磁盘状态是否可用。
使用一个比特位0/1来标识磁盘区域状态是否可用,空闲/占用。位示图会将比特位分组,再来查找。比特位太小难以查找,位示图按字来分组,一个字能存8个位,一个位的0/1来代表所指定的磁盘的状态是否可用。默认字从1就开始,位从0开始数。
文件管理-索引文件
索引文件就是将文件切割成小块后,放到相应的磁盘中。记录文件对应的磁盘块号,就可以找到对应的数据内容了。
一般来说,文件的存储都不会是在磁盘中单独开辟一整块区域来存放,基本上都是分开存放的。
链式存放:0号逻辑页存放1号逻辑页的地址,1号逻辑页存放2号逻辑页的地址,依次链式查看。
将0号页、1号页、2号页、…N号页的物理地址记录下来,按顺序记录从0号页到N号页的物理地址,这样就不需要记录第几号页了。
索引-> 物理地址-> 物理块号 ,这个块应当和切割的文件大小一致,才好去存放。而物理块号的存放也需要占内存空间,则文件大小会增加。
在索引表中,分为直接索引,一级索引,二级索引,三级索引。
文件在逻辑上是连续的,但是索引文件的存储可以是分散的。
直接索引只要访问1次磁盘就可以直接查到数据,一级索引第一次需要先访问磁盘查询到索引,然后再查询才能查询到数据,需要访问两次磁盘。二级索引需要访问3次磁盘才能查到数据,三级索引需要访问4次才能查到数据。
作业管理
作业的状态和管理和进程基本一样,存在执行、就绪、挂起、阻塞 、挂起就绪等状态。
操作系统章节概述