参考资源
你当初是如何学会操作系统这门课程的? - happywei的回答 - 知乎
如何学好操作系统原理这门课? - 程序员cxuan的回答 - 知乎
哈尔滨工业大学 - 操作系统-MOOC
应试技巧 * * 简答题 综合题 进程调度送分题。
关键:弄懂进程调度算法的规则、周转时间的计算方法(结束时间-达到时间)
PV操作 磁盘优化 移臂调度 页面调度 PV操作 概论/运行环境 * OS基本概念从定义、特征、功能、体系结构(*)、分类、设计(*)6个方面阐述:
OS是管理软硬件资源、组织程序运行、为用户提供服务。它本质上也是软件,同样需要定义数据表、数据结构。这样才能动态更新软硬件资源的数据,为资源的有效(效率、利用率)管理做支撑。他的三大特征是:并发;共享,互斥共享和同时共享随机,强调设计OS系统时,要充分考虑各种可能性、突发性。
并发与并行并发与并行的区别 是否具有同时处理多个任务的能力,有则行,行是并行的行。
CPU状态及转换**内核态:**可使用特权指令、非特权指令。
**用户态:**可使用非特权指令。
用户态→内核态。中断/异常/陷入机制
内核态→用户态 设置程序状态字(PWS)
中断/异常机制 *中断/异常机制是操作系统的驱动力。等同于汽车的发动机、飞机的引擎。
中断
中断就是处理器响应系统中或系统外的异步事件。
系统调用 * 体系结构 * 进程管理 100° * **必知必会必须专研到底!!!
进程与线程 进程关于进程: 描述和管理程序的“运行过程”。
定义:
程序在某个数据集合上的一次运行活动。数据集合:软/硬件环境,多个进程的共存/共享的环境。特征
动态性。进程是程序的一次执行过程,动态产生/消亡。并发性。进程同其他进程一起向前推进。异步性。进程按照各自的速度向前推进。独立性。分类
按使用资源的权限 (一般都以这种做分类) *
系统进程。用户进程。按对CPU的依赖性
CPU型进程:侧重于计算I/O型进程:侧重于I/O 程序多道程序设计
作用:充分发挥处理器与外围设备以及外围设备间的并行工作能力,以提高CPU利用率(↑)。
程序的顺序执行 *
顺序性。程序按序执行。封闭性。程序运行后,其算法只取决于程序本身,程序执行得到的最终结果由给定的初始条件决定,不受外界因素的影响。确定性。程序执行结果与时间无关,与速度无关。可再现性。最终得到的结果不变。程序与进程的区别与联系 *
区别:
动态与静态进程是动态的:是程序的一次执行过程程序是静态的:是一组指令的有序集合 暂存与长存进程是暂存的:在内存驻留程序是长存的:在介质中存储联系:
进程=程序+数据+PCB进程是程序的一个执行过程 线程概念
归纳为3点:
线程是可以由CPU直接运行的实体;一个进程可以创建多个线程;多个线程共享CPU可以实现并发运行;线程的实现机制
内核级线程:所有线程的创建、撤销、切换都由内核级线程实现。用户级线程:不依赖于内核级线程。属性
每个线程都有一个唯一的标识符和一张线程描述表。不同的线程可以执行相同的程序。同一进程中的各个线程共享该进程的内存地址空间。线程是处理器的独立调度单位一个线程在被创建后便开始了它的生命周期,线程在生命周期内会经历等待、就绪、运行等各种状态的变化。线程不拥有自己的系统资源。引入线程的好处 *
花费时间少,无需额外分配资源。线程之间切换快线程间的通信,更便捷,更快线程可独立运行,能够充分利用和发挥CPU与外部设备的并行工作能力。(完)
进程状态及转换 100° * 三状态模型包括了:就绪、等待、运行
就绪状态:具备运行条件但无CPU,暂时不能运行。
运行状态:进程占有了CPU,在CPU上运行。
阻塞状态:进程因等待某事件发生而暂时不能运行。
五状态模型包括了:运行、就绪、阻塞、创建、退出
七状态模型七状态模型:可以节省内存储器的内存空间,将暂不运行的进程存储到外存储器中。包括了:运行、就绪(在内存)、就绪挂起(在外存)、阻塞(在内存)、阻塞挂起(在外存)、创建、退出。
就绪状态:进程在内存中,且可立即进入运行状态。
就绪挂起状态:进程在外存中,只要进入内存即可运行。
阻塞状态:进程在内存中,并等待某事件的发生。
阻塞挂起状态:进程在外存中,并等待某事件的发生。
挂起:把一个进程从内存转到外存,可能有以下几种情况(熟读理解):
阻塞→阻塞挂起。触发条件:就绪→就绪挂起运行→运行挂起激活:把一个进程从外存转到内存,可能有以下几种情况:
就绪挂起→就绪阻塞挂起→阻塞 PCB:进程控制块对于PCB需要知道记住下3点:
PCB是进程的唯一标识。PCB是描述进程状态、资源、和相关进程关系的数据结构。PCB同进程共存亡,创建进程时创建PCB,撤销进程时撤销PCB。PCB里有什么?调度信息、现场信息。
name // ---------- 进程名称(标识符)status // ---------- 状态next // ---------- 执行下一个PCB的指针start_addr // ---------- 程序地址priority // ---------- 优先级cpu_status // ---------- 现场保留区(堆栈)comm_info // ---------- 进程通信process_family // ---------- 家族own_resource // ---------- 资源如何组织PCB?组织PCB有三种方式:线性、索引、