day1
计算机系统:
硬件:是软件建立与活动的基础(由运算器、控制器、存储器、I/O设备组成)
软件:对硬件进行管理和功能扩充(例:APP,操作系统)
最早的计算机:冯·诺依曼发明(存储程序原理)
CPU:处理器,工作周期:提取指令,译码分析,执行指令
操作系统:OS,指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;是计算机系统中最基本的系统软件。
交互式命令接口:用户说一句,系统跟着做一句。缺陷:不能够批量处理命令
批处理命令接口:用户说一堆,系统就跟着做一堆。
程序接口:可以在程序中进行系统调用来使用程序接口,用户不能直接使用,只能通过程序代码间接使用
GUI:图形化用户界面。用户想要执行操作时,可通过图形化界面操作。
操作系统的四个特征
并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。最基本特性
并行:指两个或多个事件在同一时刻同时发生。
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
互斥共享方式:虽然可以提供给多个进程使用,但是一个时间段内只允许一个进程进行访问。例:摄像头的使用
同时共享方式:系统中的某些资源,允许一个时间段内由多个进程同时对他们进行访问(并发式)
执行一个程序前需要将该程序放到内存中,才能被CPU处理。CPU不能直接处理硬盘的内容
并发性和共享性的关系:相辅相成,缺一不可
如果失去并发性,则系统中只能由一个程序运行,共享就无意义(无法多程序调用一个资源)
如果失去共享性,则多进程不能同时调用一个硬件资源,并发就失去意义。
day2
指令:处理器所能识别、执行的最基本的命令。
例:C语言编译一条加法程序,最终会被翻译成机器语言--指令
指令的分类:
1.特权指令:需要获取较高权限才能执行的命令,可以对底层硬件资源进行修改(普通用户不能直接使用)
2.非特权指令:不需要过高权限就能够执行的指令。只能简单处理一些问题,如加减乘除。(所有用户都能使用)
处理器两种状态:
1.用户态:目态,只能执行非特权指令
2.核心态:管态,既可以执行特权指令,也可以非特权指令。
通过PSW寄存器中的置位来判断,此时处理器的状态。
程序的种类:
1.内核程序:既可以执行特权指令,也可以执行非特权指令,运行在核心态。
2.应用程序:为了保证系统的安全性,普通的程序只能执行非特权指令,运行在用户态
原子性:一旦执行,就不可终端
内核又分为大内核和微内核。
时钟管理,中断处理,原语是靠近底层的程序
任务管理器属于靠近非内核的应用程序
大内核:将操作系统主要功能模块都作为系统内核,运行在核心态。优点:效率高缺点:开销大
微内核:只把最基本的功能保留在内核中。优点:开销小,接口清晰。缺点:效率低
内核态切换为用户态:执行一条特权指令,修改psw的标志位为用户态,操作系统主动让出CPU使用权。
用户态切换为内核态:只能通过中断引发,硬件自发完成变态过程,操作系统重新夺回使用权。
中断类型:
内中断:中断信号来源于CPU内部
外终端:中断信号来源于CPU外部
day3
手工操作阶段:
特点:输入+计算+输出=1周期,后续的用户必须等到前面用户周期结束才能继续使用计算机
缺点:用户独占全机,人机速度矛盾导致资源利用率低
周期时间:
10s+1s+10s
单道批处理系统:
特点:引入脱机输入输出的技术,运用监督程序负责控制作业的输入输出。
优点:解决了人机速度矛盾的问题
缺点:内存中一次只能运行一道程序,只有在一道程序运行完成后才能运行下一道程序(周期)造成CPU大量空闲时间在等待I/O设备完成。资源利用率较低。
周期时间:
10s+5s+10s(只限于同一个程序中的命令)
多道批处理系统:
特点:可以多道程序并发的执行(“同时”)操作系统形成的阶段
优点:多道程序并发执行,共享计算机资源,资源利用率提高,系统的吞吐量增加。
缺点:用户响应时间长,没有人机交互。例:无法调试程序,程序在运行的过程中无法输入参数
分时操作系统:
特点:计算机以时间片为单位轮流为各个用户/作业服务,各个用户通过中断与计算机进行交互。
优点:用户的请求可以被及时的响应,解决了人机交互的问题。
缺点:不能优先处理一些紧急任务。
实时操作系统:
优点:及时响应紧急任务,一些紧急任务不需要时间片排队。
硬实时系统:必须要在规定的时间点完成处理
软实时系统:可以偶尔违反时间规定
day4
系统调用:
操作系统提供给应用程序使用的接口,是一种特殊的函数。
普通应用程序:
可以直接进行系统调用,不需要使用库函数。也可以使用库函数进行系统调用。(不是所有的库函数都需要进行系统调用)
高级语言:向上提供库函数,将系统调用封装成库函数,并且隐藏系统调用的细节。
应用程序需要通过系统调用请求操作系统的服务。操作系统中所有的共享资源都是由操作系统进行同一管理。---为了防止用户非法操作
系统调用的过程:
传递系统调用参数-执行陷入指令(用户态)-执行相应的请求内核程序处理系统调用(核心态)-返回应用程序
注:陷入指令实在用户态执行的,陷入指令会引发内终端,使CPU进入核心态。系统调用请求也是在用户态发出的。对系统的调用时在核心态处理的。
day5
进程的三种基本状态:
1.运行态:占有CPU,并且在CPU上运行。(单核处理器在一个时间片中,最多只有一个程序处于运行态)
2.就绪态:已经具备运行条件,但是没有空闲CPU而暂时不能运行的状态。(一旦获得CPU,就可直接运行)
3.阻塞态:因等待某一时间而暂时不能运行的状态(CPU很宝贵,不能等待太长时间)
4.创建态:进程正在被创建,操作系统为进程分配资源,初始化PCB
5.终止态:进程正在从系统中撤销,操作系统会回收进程拥有的资源,撤销PCB。
进程状态的切换:
创建态-就绪态:在创建态中,系统完成创建进程的一系列工作,但是没有获取到CPU的使用权。
就绪态-运行态:只要获取到CPU的使用权(要么原先进程结束,要么有更多优先级的进程被调度)
运行态-就绪态:只要失去CPU的使用权(属于正在运行的进程的时间片结束或有更高优先级的进程进行抢占)
运行态-终止态:操作系统回收该进程所有有关的资源,并且回收CPU。(进程运行结束或运行中遇到不可修复的错误)
运行态-阻塞态:进程使用系统调用的方式申请某种系统资源,或者请求等待某个事件的发生(进程自身做出的主动行为)
阻塞态-就绪态:申请的资源被分配,或等待事件发生,不是进程自身能控制得,是一种被动行为。
进程控制:对系统中的所有进程实施有效的管理,存在的意义就是为了实现进程状态的切换。
原语:一般是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断。
如何实现原语的原子性:
通过关中断指令和开中断指令实现:一旦执行关中断指令则不再接收任何中断指令,直到开中断指令。
什么情况会引发创建原语:
1.用户登录
2.作业调度
3.提供服务
4.应用请求
什么情况会引发撤销原语:
1.正常结束
2.一场结束
3.外切干预
什么情况会引发阻塞原语:
1.需要等待系统分配某种资源
2.等待相互合作的其他进程完成工作
什么情况会引发唤醒原语:
1.等待时间的发生,因何事阻塞,就应由何事唤醒
什么情况会引发切换原语:
1.当前进程时间片到
2.由更高优先级的进程到达
3.当前进程主动阻塞
4.当前进程终止
day6
进程通信:指进程之间的信息交互
进程是分配系统资源的单位,各进程拥有的内存地址空间相互独立
为了保证安全,一个进程不能访问另一个进程。为了保证进程之间信息的有效交互,可以通过共享存储,消息传递,管道通信来实现。
共享存储:注:一种互斥共享,操作系统只负责提供共享空间和同步互斥工具
基于数据结构的共享:只能基于数据长度及替他结构共享。速度慢,限制多
基于存储区的共享:在内存中画出一块共享存储区,数据的形式、存放位置都由进程控制。速度快。
管道通信:用于连接读写进程的一个共享文件。
特点:
1.采用半双工,在某一时间段内,只能实现单向传输。若要实现双向传输则需要双管道。
2.各进程要互斥的访问管道。只能一个进程读,另一个进程等待。
3.数据以字符流的形式写入管道,当管道写满时,写进程会被阻塞。当都进程将数据全部取走后,管道变空。
4.如果没写满就不允许读,如果没读空就不允许写。
5.一旦数据被读出,就从管道中抛弃。只有一个可以进行都进程
消息传递:进程间的数据以格式化的消息为单位。进程通过操作系统的发送/接收消息两个原语进行数据交互。
直接通信方式:直接将消息放入到缓冲队列中
间接通信方式:经消息先发送到中间实体中。例如;电子邮箱系统
线程:是资源分配的基本单位,从属于同一进程的各个线程共享进程的资源
进程间并发,开销很大 线程间并发,开销更小
从属同一进程的各个线程共 享进程拥有的资源。
day7
处理机调度就是从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程的并发执行。
高级调度(作业调度)。按一定的原则从外存上处于后备队列的作业中挑选一个(或多个)作业,给他们分配内存等必要资源,并建立相应的进程(建立PCB),以使它们获得竞争处理机的权利。
高级调度是辅存〈外存)与内存之间的调度。每个作业只调入一次,调出一次。作业调入时会建立相应的PCB,作业调出时才撤销PCB。高级调度主要是指调入的问题,因为只有调入的时机需要操作系统来确定,但调出的时机必然是作业运行结束才调出。
引入了虚拟存储技术之后,可将暂时不能运行的进程调至外存等待。等它重新具备了运行条件且内存又稍有空闲时,再重新调入内存。这么做的目的是为了提高内存利用率和系统吞吐量。
暂时调到外存等待的进程状态为挂起状态。值得注意的是,PCB并不会一起调到外存,而是会常驻内存。PCB中会记录进程数据在外存中的存放位置,进程状态等信息,操作系统通过内存中的PCB来保持对各个进程的监控、管理。被挂起的进程PCB会被放到的挂起队列中。
中级调度(内存调度),就是要决定将哪个处于挂起状态的进程重新调入内存。
一个进程可能会被多次调出、调入内存,因此中级调度发生的频率要比高级调度更高。
低级调度(进程调度),其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。
进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次。
day8
进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机。
需要进行进程调度与切换的情况:
(1)当前运行的进程主动放弃处理机:进程正常终止;运行过程中发生异常而终止;进程主动请求阻塞(如等待/O)
(2)当前运行的进程被动放弃处理机:分给进程的时间片用完;有更紧急的事需要处理(如1/o中断);有更高优先级的进程进入就绪队列
不能进行进程调度与切换的情况:
(1)在处理中断的过程中。中断处理过程复杂,与硬件密切相关,很难做到在中断处理过程中进行进程切换。
(2)进程在操作系统内核程序临界区中。
(3)在原子操作过程中(原语)。原子操作不可中断,要一气呵成(如之前讲过的修改PCB中进程状态标志,并把PCB放到相应队列)
进程在操作系统内核程序临界区中不能进行调度与切换.
临界资源:一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源。临界区:访问临界资源的那段代码
内核程序临界区一般是用来访问某种内核数据结构的,比如进程的就绪队列(由各就绪进程的PCB组成)
非剥夺调度方式,又称非抢占方式。即,只允许进程主动放弃处理机。在运行过程中即便有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。(实现简单,系统开销小但是无法及时处理紧急任务,适合于早期的批处理系统)
剥夺调度方式,又称抢占方式。当一个进程正在处理机上执行时,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。(可以优先处理更紧急的进程,也可实现让各进程按时间片轮流执行的功能(通过时钟中断)。适合于分时操作系统、实时操作系统)
“狭义的进程调度”与“进程切换”的区别:
狭义的进程调度指的是从就绪队列中选中一个要运行的进程。(这个进程可以是刚刚被暂停执行的进程,也可能是另一个进程,后一种情况就需要进程切换)
进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程。
广义的进程调度包含了选择一个进程和进程切换两个步骤。
进程切换的过程主要完成了:
1.对原来运行进程各种数据的保存2.对新的进程各种数据的恢复
(如:程序计数器、程序状态字、各种数据寄存器等处理机现场信息,这些信息一般保存在进程控制块)
注意:进程切换是有代价的,因此如果过于频繁的进行进程调度、切换,必然会使整个系统的效率降低,使系统大部分时间都花在了进程切换上,而真正用于执行进程的时间减少。
调度算法的评价指标:CPU利用率;系统吞吐量;周转时间(周转时间、平均周转时间;带权周转时间、平均带权周转时间);等待时间;响应时间;
CPU利用率:忙碌的时间/总时间
系统吞吐量:单位时间内完成作业的数量=总共完成了多少道作业/总共花了多少时间
周转时间=作业完成时间-作业提交时间
平均周转时间=各作业周转时间之和/作业数
**带权周转时间=作业周转时间/作业实际运行的时间=作业完成时间-作业提交时间/作业实际运行的时间
平均带权周转时间=各作业带权周转时间之和/作业数
等待时间,指进程/作业处于等待处理机状态时间之和,等待时间越长,用户满意度越低。
响应时间,指从用户提交请求到首次产生响应所用的时间。