操作系统
文章
0 概述
计算机操作系统 概述 计算机操作系统的组成 1 操作系统引论 操作系统的目标和作用 操作系统的发展过程 操作系统的基本特性 操作系统的主要功能 OS结构设计 2 进程管理 进程的基本概念 进程控制 进程同步 进程通信 线程 管程 3 处理机管理(处理机的调度与死锁) 处理机调度的层次 调度队列模型和调度准则 调度算法 实时调度 产生死锁 预防死锁 死锁的检测与解除 4 存储器管理 存储器的层次结构 程序的装载和链接 连续分配方式 分页存储管理方式 分段存储管理方式 虚拟存储器的基本概念 请求分页存储管理的方式 页面置换算法 请求分段存储管理的方式 5 设备管理 IO系统 IO控制方式 缓冲管理 IO软件 设备分配 磁盘存储器管理 6 文件管理 文件和文件系统 文件的逻辑结构 外存分配方式 目录管理 文件存储空间管理 文件共享与文件保护 数据一致性控制 7 操作系统接口 联机用户接口 shell命令语言 系统调用 图形用户界面
1 操作系统引论
计算机组成 目录 操作系统的目标和作用 操作系统的发展过程 操作系统的基本特性 操作系统的主要功能 OS结构设计 1 操作系统的目标和作用 定义 操作系统(Operating System,OS)是计算机系统最基础的系统软件,管理软硬件资源、控制程序执行,改善人机界面,合理组织计算机工作流程,为用户使用计算机提供良好运行环境。 目标 有效性。提高系统资源利用率,提高系统吞吐量。 方便性 可扩充性 开放性 作用 OS 作为用户与计算机硬件系统之间的接口。有三种接口方式:命令方式、系统调用方式、图形窗口方式。 OS 作为计算机系统资源的管理者。资源主要包括:处理器、存储器、设备以及信息(数据和程序)等资源。 OS 实现了对计算机资源的抽象。 2 操作系统的发展过程OS发展 单道批处理系统。自动性、顺序性、单道性。 多道批处理操作系统,脱机控制方式。资源利用率高,系统吞吐量大,平均运转周期长,无交互能力。 分时操作系统,交互式控制方式。人机交互,共享主机。 实时操作系统 OS分类 根据应用领域可以分为 服务器操作系统、并行操作系统 网络操作系统、分布式操作系统 个人机操作...
2 进程管理
进程管理 目录 进程的基本概念 进程控制 进程同步 进程通信 线程
2.1 进程的基本概念
2.1 进程的基本概念 关系概述 程序不能独立运行。只能作为进程执行。程序是静态的,进程是动态的。 程序有两种执行方式:程序的顺序执行和程序的并发执行。并发执行通过多进程实现。 1 程序的顺序执行程序顺序执行时的特征 顺序性。严格按照程序规定的特征执行 封闭性。程序运行时独占全机资源。程序一旦开始,其结果不受外界影响。 可再现性。只要程序运行的环境和初始条件相同,结果相同 2 前驱图定义 前趋图(Precedence Graph)是一个有向无环图,记为 DAG(Directed Acyclic Graph),用于描述进程之间执行的前后关系。图中的每个结点可用于描述一个程序段或进程,乃至一条语句;结点间的有向边则用于表示两个结点之间存在的偏序(Partial Order,亦称偏序关系)或前趋关系(Precedence Relation)“→”。 3 程序的并发执行定义 程序并发执行的前驱图表示 程序并发执行时的特征 间断性。执行-暂停-执行,间断性活动。 失去封闭性。多个程序共享系统中的各个资源。 不可再现性。其计算结果与并发执行的进程有关。相互影响。 4 进程的定义...
2.2 进程控制
2.2 进程控制 上一节主要从状态的角度介绍了静态的状态有哪些。这一节介绍状态之间如何切换,引起切换的原因,和切换的步骤。7中状态主要包括创建、终止、就绪、阻塞、执行、静态阻塞、静态就绪。状态转换主要包括:创建、终止(释放)、阻塞、唤醒、调度、挂起、激活。 1 进程的创建进程创建示意图 进程图是用于描述一个进程的家族关系的有向树。为了标识进程之间的家族关系,在 PCB 中都设置了家族关系表项,以标明自己的父进程及所有的子进程。 引起进程创建的事件 用户登录 作业调度 提供服务 应用请求 进程创建过程 申请空白的PCB。获得操作系统唯一的表示信息。 为进程分配资源。程序和数据以及用户栈分配必要的内存空间。 初始化进程控制块。包括标识信息、处理机状态信息、处理机控制信息。 将新进程插入就绪队列。 2 进程的终止引起进程终止的事件 正常结束。一个用于表示进程已经运行完成的指示,产生一个中断,去通知 OS 进程已运行完毕。 异常结束。在进程运行期间,由于出现某些错误和故障而迫使进程终止:越界、非法访问。 外界干预。指进程应外界的请求而终止运行。 进程终止过程 根据被终止进程的...
2.3 进程同步
2.3 进程同步1 进程同步的基本概念 进程同步指的是同步和互斥两种行为。 两种制约关系 针对两种制约关系,合作制约关系和互斥制约关系,需要通过同步机制实现。 直接制约关系(合作)。由于多个进程相互合作产生,使得进程有一定的先后执行关系。 间接制约关系(互斥)。由于多个进程资源共享产生,多个进程在同一时刻只有一个进程能进入临界区。 显然,同步是一种更为复杂的互斥,而互斥是一种特殊的同步。也就是说互斥是两个任务之间不可以同时运行,他们会相互排斥,必须等待一个线程运行完毕,另一个才能运行,而同步也是不能同时运行,但他是必须要安照某种次序来运行相应的线程(也是一种互斥)!因此互斥具有唯一性和排它性,但互斥并不限制任务的运行顺序,即任务是无序的,而同步的任务之间则有顺序关系。 临界资源和临界区 共享的互斥资源称为临界资源。 对临界资源进行访问的那段代码称为临界区。 为了互斥访问临界资源,每个进程在进入临界区之前,需要先进行检查。 12345repeat entry section critical section;//临界区 exit sectio...
2.4 进程通信
2.4 进程通信 参考文献 https://blog.csdn.net/qq_40989769/article/details/110481553 linux实现多线程多进程的方法有很多。可以在linux系统编程部分好好了解。在这里只引入Linux实现几种进程通信的方式。 0 进程通信的定义进程通信和进程同步的区别 主要的区别在于:进程同步控制多个进程按一定顺序执行;进程通信,实现进程间信息交换。目标是不一样的。 进程通信是一种手段,而进程同步是一种目的。也可以说,为了能够达到进程同步的目的,需要让进程进行通信,传输一些进程同步所需要的信息。 信号量机制既能作为一种同步工具,也能做为一种通信工具。信号量机制作为同步工具是卓有成效的,但作为通信工具,则不够理想,主要表现在下述两方面: 效率低,生产者每次只能向缓冲池投放一个产品(消息),消费者每次只能从缓冲区中取得一个消息; 通信对用户不透明。 进程通信的实现划分 基础进程通信机制。只能传递状态和整数值(控制信息)。特点:传送信息量小,效率低,每次通信传递的信息量固定,若传递较多信...
2.5 进程与线程
1 进程与线程进程 进程是资源分配的基本单位。进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。 下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。 线程 线程是独立调度的基本单位。一个进程中可以有多个线程,它们共享进程资源。 线程栈是在进程的堆中分配栈空间,每个线程拥有独立的栈空间,为了避免线程之间的栈空间踩踏,线程栈之间还会有以小块guardsize用来隔离保护各自的栈空间,一旦另一个线程踏入到这个隔离区,就会引发段错误。 QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。 区别 调度。线程是独立调度的基本单位,进程是资源分配的基本单位。在同一进程中,线程的切换不会引起进程切换,从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换。 并发性。线程使得操作系统具有更好的并发性,从...
2.6 协程
协程 最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。 第二大优势就是不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。 因为协程是一个线程执行,那怎么利用多核CPU呢?最简单的方法是多进程+协程,既充分利用多核,又充分发挥协程的高效率,可获得极高的性能。
3 处理机管理
处理器 目录 处理机调度的层次 调度队列模型和调度准则 调度算法 实时调度 产生死锁 预防死锁 死锁的检测与解除 1 处理器调度的层次高级调度(长程调度,作业调度) 主要功能。是根据某种算法,把外存上处于后备队列中的那些作业调入内存,也就是说,它的调度对象是作业。 作业(Job) 。作业是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且还应配有一份作业说明书,系统根据该说明书来对程序的运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存的。 作业步(Job Step) 。作业部类似于操作系统命令脚本。在作业运行期间,每个作业都必须经过若干个相对独立,又相互关联的顺序加工步骤才能得到结果,我们把其中的每一个加工步骤称为一个作业步。例如编译执行过程: “编译”作业步,通过执行编译程序对源程序进行编译,产生若干个目标程序段;② “连结装配”作业步,将“编译”作业步所产生的若干个目标程序段装配成可执行的目标程序; “运行”作业步,将可执行的目标程序读入内存并控制其运行。 作业控制块 JCB(Job Control Block) 。为了管理和调度作业,在多道批...














