这是一个大二学生初学操作系统的学习笔记。如有错误,感谢指出,一定立即改正。
操作系统为用户提供了某些功能,使得用户无需了解计算机硬件的细节也可以使用应用程序。
操作系统一部分位于内存中,一部分位于外存中。
内存中的操作系统包括内核程序和当前正在使用的其他操作系统程序。
外存中的操作系统包括当前未被使用的其他操作系统程序。
内核程序:操作系统最常用的功能
PS:处理器也是一种资源,操作系统也控制处理器(体现在:操作系统必须决定再执行一个特定的用户程序时,可以分配给处理器多长时间)
见后
监控程序从批中读取一个作业,并将控制权交给这个作业;这个作业完成之后,将控制权返还给监控程序;监控程序读取下一个作业。
下面从两个角度解释这一流程:
①监控程序角度:
监控程序控制事件的顺序。
为了达到这个目的,大部分监控程序必须总是处于内存中并且可以执行,这部分成为常驻监控程序。其他监控程序包括一些实用程序和公用函数,在用户程序需要的时候,做为用户程序的子程序加载到内存中。
监控程序从输入设备读取作业,将其放置在用户程序区域,并将控制权交给这个作业;作业完成后,这个作业将控制权返还给监控程序;监控程序读取下一个作业并把刚完成的作用的结果发送到输出设备。
注意:监控程序分为常驻监控程序和其他监控程序;这也是现代操作系统分为内核程序和其他操作系统程序的历史。
②处理器角度:
处理器执行监控程序和用户程序的指令。
那么按照顺序,这些指令都是什么呢?
首先,处理器执行监控程序中“将下一个作业读入内存”的指令;然后,处理器遇到监控程序的分支指令,这个指令指导处理器从用户程序的开始处执行;再之后,处理器执行用户程序,直到用户程序的结束指令或者出现一个错误;最后,处理器执行监控程序中的指令。
所以,所谓的“某某获取控制权”,本质上是指处理器读取并执行的是某某的指令。
作业控制语言是一种特殊的程序设计语言,用于为监控程序提供指令,以“$”符号开头。
①内存保护:不允许用户程序修改监控程序所在的内存区域。
②特权指令:某些机器指令被设计为特权指令,只允许监控程序执行。
③定时器:防止一个作业独占计算机。
④中断:控制权从监控程序和用户程序之间切换的机制,为之后的中断机制的诞生起到了重要作用。
(注意:简单批处理系统并没有中断机制)
如果有作业修改监控程序所在内存、执行特权指令、达到定时器规定时间,处理器将发现错误,将控制权返还监控程序,监控程序取消该作业,输出错误信息,并加载下一个作业。
①和②引出了之后运行模式的概念:用户程序以用户模式执行,此时某些内存区域受保护,不允许执行特权指令;监控程序以系统态或内核模式执行,可以访问受保护的内存,也可以执行特权指令。
④引出了之后的中断机制。
tips:I/O指令属于特权指令,所以用户程序想要执行I/O操作时必须向监控程序发送请求并由监控程序进行I/O操作。
批处理系统解决了串行处理中资源调度和准备时间的问题。
资源调度:作业以批的形式进入计算机,计算机按顺序执行批中的作用,减少了资源浪费。
准备时间:无需花费大量时间拆装磁带,减少了准备时间。
①常驻监控程序一直在内存中占据空间
②监控程序的执行消耗了时间
③处理器利用率仍然很低。虽然以批的形式执行作业,但是内存中只能有一个用户处理程序,并且处理器仍然经常处于空闲状态。
原因:I/O设备相对于处理器速度太慢。
TIPS:
①、②问题在现在仍未解决;③之后会解决。
在内存中保存多个用户程序,在用户程序之间不断切换。
当多个用户程序没有资源竞争时,处理器资源在切换用户程序之间可以得到充分利用。
一段时间内的资源利用率是其各段时间内的资源利用率的加权平均数,权重及该段时间占总时间的比例。
①支持中断的硬件
②支持直接存储器访问的硬件(DMA)
相比于批处理系统,多道批处理系统提高了资源利用率
没有提供用户与计算机进行交互的模式,即多道批处理系统中,不允许人机交互。
用户具有和计算机进行交互的需求。当时基本没有个人使用的计算机,大多是多个人共用一台计算机。
如果允许用户与计算机进行交互,因为多个人使用一台计算机,计算机响应时间可能很长。
实现用户与计算机的交互;多个用户可以"同时"分享处理器时间,以减少用户响应时间。
多个用户可以通过终端同时访问系统,由操作系统控制每个用户程序在很短的时间内交替进行。
时间片技术(time slicing):
系统以较短的固定的时间产生一个中断,再中断时,操作系统回复控制权,并将控制权交给下一个用户。原用户的状态(程序和数据)可能被写入磁盘,在下一次获得机会后,状态被重新写入内存。(这类似于电路交换中的时分复用,n个用户在一段时间中各使用1/n长的时间)
对上面“可能”的解释:
为了减小磁盘开销,提高利用率,只有当新来的程序需要重写内存空间时,才将内存中旧程序的状态写入磁盘(并写入新的程序);否则旧的程序仍然保留。
TIPS:书中并没有提及如何实现的人机交互。
注意:
多道批处理系统和分时系统都属于“多道程序设计”的范畴。
多道批处理系统解决的是处理器利用率低问题,并且它增大了作业的吞吐量,其面对的是作业程序和作业控制语言命令;
分时解决的是多用户交互的响应时间长的问题,其面对的是多个用户在终端输入的指令。
①内存管理:对准备运行的多个作业,他们必须都保留在内存中,这时候就要合理的安排内存空间的使用。
②调度问题:计算机的各种资源如何被使用,多个作业如何被执行。
③权限问题:多个用户对计算机文件的访问应该有不同的权限控制。
等等等等
操作系统的发展主要依赖于5各方面的进展(进展就是成就)
①进程
②内存管理
③信息保护和安全
④调度和资源管理
⑤系统结构
①一个正在执行的程序
②有一个单一顺序线程、一个当前状态和一组相关的系统资源所表征的活动单元
这是等价的表述,其中①用于答题,②用于理解本质。
在不同程序的执行过程中,可能会由于以下4个原因出现在当时的操作系统下难以检测和避免的错误。
①不正确的同步(工作)
例如程序A和程序B同步工作,经常出现程序A挂起等待B发送的信号的情况,而这个信号很可能丢失或者多次发送,导致A和B的同步(工作)失败。
②失败的互斥
同一时间,同一文件只能由一个用户访问修改。
③不确定的程序操作
当程序共享内存时,可能因为重写相同的内存区域造成干扰
④死锁
可能有两个或者多个程序互相挂起等待。
①一段可执行的程序
②程序所需要的数据(变量、工作空间、缓冲区等)
③执行上下文
公式:process = program + data + context
执行上下文,又称为进程状态,是进程的根本。执行上下文包含操作系统管理和控制进行所需要的所有信息,如寄存器内容、进程优先级、进程使用使用I/O设备等等。
执行上下文大部分或者全部在进程表中(没有和进程在一起),可能小部分与进程保存在一起或者在其他的独立区域。
内存中存在两块区域,一部分存放进程,一部分存放进程表。
存放进程的内存中存放:进程的可执行程序、数据、可能还有一部分进程上下文。
存放进程表的内存中存放:进程表。
进程表的内容:指向每个进程的指针和每个进程的部分或全部执行上下文。
进程索引:包含当前正在执行的进程在进程表中的索引
程序计数器:当前正在执行的进程中的下一条待执行指令
基址寄存器:进程的开始地址
界限寄存器:进程所占内存的大小(以字或者字节为单位)
(程序计数器和其它的数据引用以基址寄存器为基准,且不超过界限寄存器的值,这使得进程间不会相互干涉)
以下面两个进程A和B为例,当前B正在执行(根据上述寄存器的值可以看出)。
如果此时发生中断,开始执行A进程,那么B的所有状态将会被保存在其执行上下文中,并且将恢复A的执行上下文,修改程序计数器等寄存器的值即可令A执行。
进程可以被当作一个数据结构。一个进程可以正在执行,也可以等待执行;任何时候,进程的状态(操作系统管理和控制进行所需要的所有信息)都保存在其进程上下文中。
人们可以开发强大的技术,以确保在进程中协调和合作,从而解决2中的问题。
与线程对比:
线程:一个分配了资源的进程可以分为多个并发的线程,线程之间相互协作执行,完成进程的任务。
①进程隔离
必须保护独立的进程,防止进程之间数据、指令的干扰。
②自动分配和管理
程序员无需关注内存的分配管理问题,由操作系统分配内存。
③支持模块化程序设计
程序员能够动态地创建和销毁模块
④保护和访问控制
就是访问控制的权限问题
⑤长期存储
应用程序应在关机之后长期存储。
(之后的章节会展开)
①虚拟内存
以小内存执行大程序
②文件系统机制
①可用性
②保密性
③数据完整性
④认证
操作系统要管理各种可用资源,如内存空间、I/O设备、处理器。
①公平性
给竞争同一资源的所有进程提供几乎平等和公平的机会
②有差别的响应
对于不同的进程需求,有差别的进行满足,例如考虑优先级等等。
希望操作系统做出满足所有需求的分配和调度决策。
③高效性
希望操作系统获得最大的吞吐量和最小的响应时间。
强调:不同的操作系统的实现细节和模块化细节可能不同,下面只是功能性的说明。
操作系统维护了多个队列,队列中是等待某些资源的进程列表。
队列包含短程队列、长程队列和I/O队列。
短程队列中的进程:
①位于内存中(至少最基本的部分位于内存中)
②随时准备运行
③具体是哪个进程被执行取决于短期调度器或分配器
长程队列中的进程:
①位于外存中
②需要被移动到短程队列中才能被执行
③避免太多长城队列中的进程进入短程队列,从而节省内存、减少处理时间
I/O队列:
①每一个I/O设备都有其对应的I/O队列
②操作系统决定每个I/O队列中哪个进程被执行。
短程队列的调度方式:
①时间片轮转:以环形队列的方式,依次为每个进程分配一定的时间。
②优先级:为不同的进程分配不同的优先级,根据优先级进行调度。
操作系统在什么情况下获得处理器控制权?
①处理中断:出现中断后,操作系统从中断处理程序入口得到处理器控制权
②服务调用(进程通过服务调用请求操作系统的服务,如I/O设备处理任务):出现服务调用后,操作系统从服务调用程序入口得到处理器控制权。
只要操作系统得到了控制权,短期调度器就会从短程队列中选择一个进程执行。
①新的硬件出现
②新的软件出现
③新的安全威胁
单体内核:操作系统的大多数功能通过(一个)大内核提供;大内核是作为一个进程实现的;所有元素共享功能的地址空间。
微内核体系:只为内核分配最基本的功能;其他功能由运行在用户模式的类似于其他应用程序的进程提供。
微内核体系中内核提供的功能:
①地址空间
②进程痛惜
③基本的调度
把一个应用程序的进程分为可以同时运行的多个线程
无具体描述
拥有多个处理器;操作系统将可调度进程或线程到所有处理器上运行。
优点:
①性能更佳:多个处理器可以同时处理多个进程
②可用性更强:单个处理器失效不会导致机器停止,只是性能下降
③增量增长:可以通过增加处理器个数增强系统功能
④可扩展性:生产商可以根据处理器数目提供不同性能和价格的产品
为一群计算机处理单系统外部特征
对称多处理技术与分布式操作系统的对比:
对称多处理技术有多个处理器,但是只有一套硬件(内存、外存、I/O设备等);而分布式操作系统有多套硬件,只是这些硬件被单个操作系统统一调度。
这是一个大二学生初学操作系统的学习笔记。如有错误,感谢指出。