操作系统接口的主要功能:为应用程序或者用户提供访问操作系统内核的接口,使应用程序或者用户可以访问操作系统提供的各种服务和资源。比如进程管理、文件管理、进程通信等
系统调用的基本概念:计算机的各种硬件资源是有限的,为了更好的管理这些资源,用户进程是不允许直接操作的,所有对这些资源的访问都必须由操作系统控制。为此操作系统为用户态运行的进程与硬件设备之间进行交互提供了一组接口,这组接口就是所谓的系统调用。
系统调用实质上就是函数调用,只不过调用的是系统函数,处于内核态而已。 用户在调用系统调用时会向内核传递一个系统调用号,然后系统调用处理程序通过此号从系统调用表中找到相应的内核函数执行,最后返回。
系统调用的类型:
系统调用的实现:
操作系统接口:为应用程序或者用户提供了一组函数或者命令,用于访问操作系统提供的各种服务和资源
操作系统接口的实现:操作系统接口的实现是通过系统调用来实现的,操作系统提供了一系列系统调用,应用程序可以通过系统调用来访问操作系统提供的各种服务和资源,例如文件管理、进程管理等
储存体系结构是指计算机系统中用于存储数据的硬件和软件组成的系统。其主要功能是提供数据的长期存储和快速访问,以及保护数据的安全性和完整性。储存体系结构通常包括主存储器、辅助存储器、输入输出设备等组成部分。
主存储器的物理组织通常是由一组芯片组成的,每个芯片包含一定数量的存储单元,每个存储单元可以存储一个二进制数值。主存储器的管理功能包括内存分配、内存回收、内存保护等。分区管理是指将主存储器划分为若干个区域,每个区域可以独立地进行内存管理。
可变分区存储管理又叫做动态分区模式,按照作业的大小来划分分区,但是划分的时间、大小、位置都是动态的。系统把作业装入内存的时,根据其所需要的内存容量查看是否有足够的空间,若有,则按需分割一个分区分配给此作业;若没有则令此作业等待资源。由于分区大小是按照作业的实际要求进行划分的,且分区数目也是可变的,所以可变分区能够克服固定分区资源浪费的问题,有利于多道程序上设计,提高内存资源利用率
2.1页式管理
高级语言中使用逻辑地址,运行状态内存中使用物理地址
物理地址=块号+页内地址(内存中存放的是块号,所以可以通过内存的大小求块号的位数)
逻辑地址=页号+页内地址(由每页的大小,也即页面大小求页内地址的位数,由用户编程空间总共的页面数量可以求页号位数)
实际上是块号替换了页号,通过操作系统提供的页表将逻辑地址中的页号转换为块号,块号和页内地址相加就是物理地址
求解过程:先确定逻辑地址中的页内地址位数,然后逻辑地址位数的总长度减去页内地址位数即页号位数,将页号位数组成的二进制转换为十进制与页表进行对比,查找相应的块号,将十进制的块号,块号加页内地址即为物理地址
优点:利用率高,内部碎片小,分配及其简单
缺点:增加了系统开销,可能会发生抖动现象


段页式管理:


前面所介绍到的存储管理都是实存管理,必须为进程分配足够大的内存空间,装入其全部的信息,否则就无法运行一遍。但是把进程的全部信息装入到内存中实际上是并非同时使用,有些部分运行一遍,有些部分暂时不用或者某种条件下才会使用,让进程的全部信息放入到内存是对宝贵内存资源的极大浪费,会降低内存利用率。
所以可以把物理内存扩大到大容量的磁盘上,把磁盘空间当做内存的一部分,进程的程序和数据通常放在内存中,部分放在磁盘上。当程序在执行的时候,它执行的指令或者访问的数据再哪儿则存储管理器负责判断,并针对情况采取相应步骤
当程序执行的指令或者访问的数据再内存中可以访问的时候顺利执行;如果在磁盘上,为了继续执行,则由系统自动将这部分信息从磁盘装入——部分装入;如果没有足够多的空闲内存空间,便把内存中暂时不用的信息移动到磁盘——部分替换;当部分装入、部分替换能够实现时,那么当内存空间小于进程的需要量时,进程也能运行;更进一步,当多个进程的总长度超出内存容量的时候,也可以全部装入内存空间中,实现多道程序运行
虚拟存储器定义:在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理内存容量大很多、可寻址的“内存储器”
实际上虚存对于用户隐蔽可用物理内存和的容量和操作细节,虚存的容量与物理内存的大小没有关系,而是受限于计算机地址结构和磁盘容量
虚拟存储管理系统的三种实现方式:
· 请求分页虚拟存储管理。
· 请求分段虚拟存储管理。
· 请求段页式虚拟存储管理。
首先看一下什么是页面置换算法:地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。
设计的目标是 高效性和通用性
设备中断处理程序:设备驱动程序的组成部分之一,位于操作系统底层,是与硬件设备密切相关的软件。
设备驱动程序:设备驱动程序是从独立于设备的软件中接受并执行I/O请求
独立于设备的I/O软件:实现适用于所有设备的常用I/O操作并且向上层软件提供一致性接口
用户空间的I/O软件:在用户空间运行的I/O库函数和SPOOLing程序
驱动调度技术:
作为操作系统的外存,存放文件的磁盘是一类大容量高速旋转型存储设备。在繁重的I/O操作下,同时会有若干请求来到并等待处理,系统必须采取一种调度策略,能够按照最佳次序执行诸多请求,这叫做调度驱动。所使用的算法叫做调度驱动算法
驱动调度能够减少若干I/O请求服务所需消耗的总时间,从而提高系统效率。除了I/O请求的优化排序外,磁盘上信息的排列方式、存储空间的分配方法都能影响存取访问速度
把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合
为了实现对文件目录的管理,通常将文件目录以文件的形式保持在外存,这个文件就叫目录文件。
文件共享的多种方式:文件静态共享、文件动态共享、文件符号链接共享
答:当且仅当一个进程访问的资源叫做临界资源
每个进程中访问临界资源的那段代码叫做临界区
使用临界资源的三个原则:
3、进入临界区的进程要在有限时间内退出,以便让等待队列中的一个进程进入
PV操作是实现进程同步与互斥地常用方法。其中,P操作表示阻塞、等待、申请一个资源,V操作表示发出、释放一个资源。
信号量用符号S进行表示:S>=0表示某资源的可用数,若 S < 0,则其绝对值表示阻塞队列中等待该资源的进程数
具体定义如下:
P(S): //某一个进程需要使用资源的时候
①将信号量S的值减1,即S=S-1;//可以理解为p操作消耗了一个资源
②如果S>=0,则该进程继续执行; //若是资源大于0,则说明还有资源,p操作可以继续消耗资源
否则该进程置为等待状态,排入等待队列。//S<0表示已经没有可以使用的资源了,必须等待
V(S): //进程使用完资源之后
①将信号量S的值加1,即S=S+1; //可以理解为 v生产、释放了一个资源
②如果S>0,则该进程继续执行;
否则释放队列中第一个等待信号量的进程,使其转换为就绪态。自己则继续执行
答:一组进程因为争夺资源而陷入永远等待的状态,叫做死锁
死锁产生的必要条件:
死锁的恢复方法:
死锁防止:破坏死锁产生的四个必要条件中的一条即可防止死锁
死锁避免
死锁检测和恢复