《计算机操作系统(西电版)》读后感和一点思考

Posted 沉迷单车的追风少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《计算机操作系统(西电版)》读后感和一点思考相关的知识,希望对你有一定的参考价值。

前言:本科生涯即将进入尾声,还是给自己留下了不少遗憾,其中一个就是没有机会学习计算机三大专业课,反而是在很多永远都不会用到的专业课上(比如空气动力学、量子物理等),花费了太多的时间和精力。现在终于没了GPA和rank的压力,可以静静地在自己的世界里遨游。一提到OS,大部分人想到的可能都是《深入理解操作系统》、《现代操作系统》等机械工业出版社的大块头经典巨著;一直以来,我都非常喜欢西电自己写的书,特别是自己读过的樊昌信老师的《通信原理》、吴大正老师的《信号与系统》等,当年学的时候爱不释手啊,浓浓工程派的书籍很合胃口,这次有机会拜读方敏老师的《计算机操作系统》,收获还是非常多的,读后体验非常棒!

目录

作业及其相关概念

作业的分类:

作业控制方式分类:

作业的组成:

作业的处理过程

作业输出方式

作业控制块(Job Control Block, JCB):

JCB组成:

作业调度分类:

作业调度算法的评价因素:

作业控制方式:

进程

进程的定义:

程序与进程:

进程的组成:

创建进程的步骤:

进程间五种状态转换:

引起进程状态转换的具体原因:

原语:

三大IPC经典问题

1、读者写者问题

2、理发问题

3、哲学家就餐问题

进程和线程四个主要区别

死锁deadlock

死锁产生的环境

死锁的危害

死锁产生的四个必要条件

死锁产生的典例

三种死锁解决方案

死锁的预防方法

避免死锁的方法

死锁的检测和死锁定理

六种存储管理方案

1、分区存储管理方案

2、段式存储管理方案

3、页式存储管理方案

4、段页式存储管理方案

5、交换技术和覆盖技术

6、虚拟存储管理方案

参考


作业及其相关概念

作业:指用户在一次算题过程中或一个事务处理过程中要求计算机系统所做工作的综合,是用户向计算机系统提交一项工作的基本单位

作业的分类:

  • 脱机作业:用户不能直接与计算机系统交互,中间需要通过操作员进行控制和干预的作业。在早期批处理系统中使用,因此被称为批量型作业、后台作业。
  • 联机作业:用户能够与计算机系统交互作用,因为被称为交互性作业、前台作业。

作业控制方式分类:

  • 脱机作业控制方式:用户把作业执行的目的连同程序和数据及故障处理措施一起输入系统中,由系统根据该目的来控制作业执行的全过程。
  • 联机作业控制方式:采用人机对话的方式来控制作业的运行。

作业的组成:

  • 程序
  • 数据
  • 作业控制信息:体现用户对作业控制的意图。
    • 作业基本情况:包括用户名、作业名等。
    • 作业控制描述:包括作业控制方式、作业步的操作顺序等。
    • 作业资源要求描述:包括处理时间、优先级、内存空间等。

作业的处理过程

  1. 输入状态:用户将自己的程序和数据提交给系统的后院缓存器。
  2. 后备状态:在作业的输入阶段,操作员将用户提交的作业通过脱机输入或调用SPOOLing系统输入过程,将作业输入到直接存取的后援存储器,然后由“作业注册”程序负责为进入系统输入过程,将作业输入到直接存取的后援存储器,然后由“作业注册”程序负责为进入系统的作业建立作业控制块,并把他们加入到后备作业队列中,等待作业调度程序调度。
  3. 执行状态:作业调度进程将当前调度到的一批作业变成运行状态后,自己便进入休眠状态,等待调度下一批作业。处于执行状态的作业获取了在处理机上运行的资格。
  4. 完成状态:正常结束或意外终止,就会进入完成状态,退出系统。
作业处理及状态转移

作业输出方式

  1. 联机输入/输出:直接由主机控制输入输出,由于主机和外围设备的速度相差甚远,因此这种方式降低了CPU利用率。
  2. 机输入/输出:专门设置一台卫星机(外围处理机)负责输入输出,利用外围处理机把作业先输入到辅助存储器上,然后通过辅助存储器与主机相连,一定程度上缓解了输入输出与CPU速度之间的矛盾。
  3. SPOOLing批处理系统:在多道程序系统中,用程序模拟脱机输入输出时外围处理机的功能,在主机的控制下实现脱机输入输出功能。核心思想是:利用一台可共享的、高速大容量的块设备来模拟独占设备的操作,使一台独占设备变成可并行使用的虚拟设备。SPOOLing系统由专门负责I/O的常驻内存的进行以及输入井、输出井组成。
    SPOOLing工作流程

作业控制块(Job Control Block, JCB):

在多道批处理系统中通常会有上百个作业被收容在输入井(磁盘)中,为了管理和调度作业,每个作业进入系统时,系统会自动为其建立作业控制块(JOB),用来存放管理和控制作业所必须的信息。

作业控制块是一个作业存在的唯一标志。

JCB组成:

  1. 作业名。
  2. 用户名及用户账号。
  3. 内存需求量。
  4. 估计执行时间。
  5. 优先数。
  6. 作业类型。
  7. 作业说明书文件名。
  8. 资源要求量。
  9. 作业状态(提交、后备、执行、就绪、等待、完成)。
  10. 作业的存储信息:包括输入井地址和输出井地址。

作业调度分类:

  1. 高级调度(作业调度)。将已经进入系统并处于后备状态的作业按照某种算法选择一个或一批,为其建立进程,并进入主机。
  2. 中级调度(对换调度)。负责决定进程在内存和辅存磁盘交换区间的兑换。在内存紧张时,将内存中的一些进程切换至盘交换区,以便调入进程腾出空间。因此,中级调度是为了缓解内存资源紧张状态,在多道程序范畴内实现进程动态覆盖的虚拟技术。
  3. 低级调度(进程级调度)。主要决定内存中哪个进程可以占据CPU,使其处于运行状态。

作业调度算法的评价因素:

  • CPU利用率。
  • 吞吐量:单时间内CPU完成作业的数量。
  • 周转时间:主要性能指标。

一般用平均周转时间和平均周转系数来衡量调度性能比较合理。

常见作业调度算法:

  • 先来先服务调度算法(FCFS)。
    根据作业进入系统(即到达输入井)的先后次序来选择作业。算法简单,容易实现,但效率较低。
  • 短作业优先调度算法(SJF)。
    以作业进入系统时所提出的“运行时间”为依据,总是优先选取要求运行时间最短的作业投入运行。
  • 高响应比优先调度算法(HRRN)。
    响应比是指作业响应时间与作业运行时间之比 。在每次作业调度时计算所有后备作业的响应比,然后选择响应比最高的作业投入运行。采用这种算法,短作业等待较短的时间就可获得较高的响应比,所以得到优待;而长作业只要等待足够长的时间也能得到较高的响应比,所以不会被无限制地推迟。
  • 优先级调度算法(PSA)。
    在每次作业调度时计算和检查所有后备作业的优先级(一般以优先数形式表示),然后选择优先级最高的作业投入运行。

作业控制方式:

  • 脱机作业控制:用户输入作业说明书,整个作业的运行有系统控制。
  • 联机作业控制:通过联机命令语言和会话式程序设计语言控制作业运行。

进程

进程的定义:

很多计算机科学家都给了进程不同的定义,大体有以下几种:

  1. 进程是程序的一次执行。
  2. 进程是可以和别的计算机并发执行的计算。
  3. 进程是定义在一个数据结构上并能在其上进行操作的一个程序。
  4. 进程是程序的一个数据集合上运行的过程,是操作系统资源分配和调度的一个独立单位。

程序与进程:

  • 程序是用来完成特定指令的一组指令集合,属于静态的文本文件,可以永久保存。
  • 进程是操作系统进行资源分配和保护的基本单位,属于动态范畴,是暂时的、有生命周期的,不能永久保存。

进程的组成:

  • Process Control Block进程控制块PCB:包括进程的描述信息和控制信息。
  • 程序
  • 数据区
  • 工作区:参数传递和系统调用时的执行环境。

其中,PCB是进程存在的标志,是进程的灵魂;程序和数据是进程存在的物质基础,是进程的实体。

创建进程的步骤:

  1. 创建进程标识。在主进程表中为新进程添加一个表项,进程得到了唯一的标识符,并被分配进程控制块空间。
  2. 分配内存和其他资源。
  3. 初始化进程控制块。初始化进程控制信息、调度相关信息、进程间通信信息、进程的优先级信息等。
  4. 将创建的进程置于就绪队列,等待系统根据一定算法调度执行。

进程间五种状态转换

  • 运行(running)态:进程占有处理器正在运行的状态。

    进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态; 在多处理机系统中,则有多个进程处于执行状态。

  • 就绪(ready)态:进程具备运行条件,等待系统分配处理器以便运行的状态。

    当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行,进程这时的状态称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列。

  • 等待(wait)态:又称阻塞态或睡眠态,指进程不具备运行条件,正在等待某个时间完成的状态。

    也称为等待或睡眠状态,一个进程正在等待某一事件发生(例如请求I/O而等待I/O完成等)而暂时停止运行,这时即使把处理机分配给进程也无法运行,故称该进程处于阻塞状态

  • 新建态:对应于进程被创建时的状态,尚未进入就绪队列。

    创建一个进程需要通过两个步骤:

    1.为新进程分配所需要资源和建立必要的管理信息。

    2.设置该进程为就绪态,并等待被调度执行。

  • 终止态:指进程完成任务到达正常结束点,或出现无法克服的错误而异常终止,或被操作系统及有终止权的进程所终止时所处的状态。

    处于终止态的进程不再被调度执行,下一步将被系统撤销,最终从系统中消失。

    终止一个进程需要两个步骤:

    1.先等待操作系统或相关的进程进行善后处理(如抽取信息)。

    2.然后回收占用的资源并被系统删除。

引起进程状态转换的具体原因

  • NULL→新建态:执行一个程序,创建一个子进程。
  • 新建态→就绪态:当操作系统完成了进程创建的必要操作,并且当前系统的性能和虚拟内存的容量均允许。
  • 运行态→终止态:当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结。
  • 运行态→就绪态:运行时间片到;出现有更高优先权进程。
  • 运行态→等待态:等待使用资源;如等待外设传输;等待人工干预。
  • 就绪态→终止态:未在状态转换图中显示,但某些操作系统允许父进程终结子进程。
  • 等待态→终止态:未在状态转换图中显示,但某些操作系统允许父进程终结子进程。
  • 终止态→NULL:完成善后操作。

进程控制:系统对进程的控制和管理是通过操作系统内核中的原语实现的。

原语

  • 由若干条机器指令构成的可完成特定功能的程序段,它是一个“原子操作(atomic operation)”过程,执行过程不能被中断——要么全都完成,要么全都不做。
  • 原语的原子性主要是通过屏蔽中断保证的。

三大IPC经典问题

1、读者写者问题

多个读进程之间共享资源,但不能和写进程共享;写进程之间互斥,访问时必须独占资源。

这就需要一个全局变量对读进程进行计数,当第一个读进程开始进行访问执行P操作,当最后一个读进程结束访问时执行V操作。

饥饿现象出现:当读者进程在读而一个请求写进程被阻塞的时候,仍有进程不断请求读,而写者会因为读者请求过多无线等待下去,写进程一直得不到响应,出现饥饿现象。

2、理发问题

问题描述:假设有一个理发店只有一个理发师,一张理发时坐的椅子,若干张普通椅子顾客供等候时坐。没有顾客时,理发师就坐在理发的椅子上睡觉。顾客一到,他不是叫醒理发师,就是离开。如果理发师没有睡觉,而在为别人理发,他就会坐下来等候。如果所有的椅子都坐满了人,最后来的顾客就会离开。
在出现竞争的情况下问题就来了,这和其它的排队问题是一样的。实际上,与哲学家就餐问题是一样的。如果没有适当的解决方案,就会导致进程之间的“饿肚子”和“死锁”。
如理发师在等一位顾客,顾客在等理发师,进而造成死锁。另外,有的顾客可能也不愿按顺序等候,会让一些在等待的顾客永远都不能理发。
解决方案:最常见的解决方案就是使用三个信号量(Semaphore):一个给顾客信号量,一个理发师信号量(看他自己是不是闲着),第三个是互斥信号量(Mutual exclusion,缩写成mutex)。一位顾客来了,他想拿到互斥信号量,他就等着直到拿到为止。顾客拿到互斥信号量后,会去查看是否有空着的椅子(可能是等候的椅子,也可能是理发时坐的那张椅子)。
如果没有一张是空着的,他就走了。如果他找到了一张椅子,就会让空椅子的数量减少一张,这位顾客接下来就使用自己的信号量叫醒理发师。这样,互斥信号标就释放出来供其他顾客或理发师使用。如果理发师在忙,这位顾客就会等。理发师就会进入了一个永久的等候循环,等着被在等候的顾客唤醒。一旦他醒过来,他会给所有在等候的顾客发信号,让他们依次理发。

3、哲学家就餐问题

问题描述:​ 有五个哲学家围在一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五个叉子。五个叉子间隔放置,只有当哲学家同时拿到左右两把叉子的时候,才会迟到通心粉,吃完后,叉子必须放回。

问题归化:五个哲学家相当于五个进程,五把叉子是五个资源。

死锁出现:五个哲学家同时感到饥饿,都动手拿起手边的叉子,五个人都那这一把叉子,都无法再取得一把叉子,所以五位哲学家永远吃不到通心粉。

饥饿出现:规定每个人拿起叉子的时候必须从左到右,当右边的叉子不可用的时候,先放下左边,进入思考,等待一段时间后再重新拿起叉子,但因为拿起、放下、等待的时间都是一样的,五个人还是吃不到通心粉。

进程和线程四个主要区别

1. 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;

2. 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线

3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其他进程不可见;

4. 调度和切换:线程上下文切换比进程上下文切换要快得多

死锁deadlock

计算机系统中必然出现独占式资源使用的情况,比如打印机、磁带驱动器等。多线程对独占式资源的使用必然会出现死锁问题,进程都被阻塞,相互等待对方释放资源,就会出现死锁。

死锁产生的环境

  • 多道程序设计技术
  • 多个并发程序
  • 资源共享和独占
  • 没有外力可以借助

死锁的危害

轻则系统资源利用率严重下降,重则系统崩溃。

死锁产生的四个必要条件

(1)互斥使用(资源独占)。进程对其申请的资源进行排他控制,其他申请资源的进程必须等待。

(2)非剥夺控制(不可强占)。占用资源的进程只能自己释放资源,不能被其他进程强制释放。

(3)零散请求。进程可以按需要逐次申请资源,而不是集中性一次请求所有资源。进程在已经占用资源的情况下,又申请其他资源而得不到满足时候,并不释放已经占用的资源。

(4)循环等待。等待资源的进程形成一个封闭的链,链上的进程都在等待下一个资源占有的资源,造成了无止境的等待状态。

死锁产生的典例

1、P、V操作不当引起死锁

2、进程申请顺序不当引起死锁

3、同类资源分配不当引起死锁

4、进程通信引起死锁

三种死锁解决方案

1、鸵鸟政策

2、事后处理法

3、积极防御法

死锁的预防方法

只要破坏死锁产生的四个必要条件任意之一即可。

1、破坏互斥条件

2、破坏不可剥夺条件

3、破坏零散请求条件

4、破坏循环等待条件

避免死锁的方法

思想:允许死锁产生条件存在,但通过动态、明智的的选择——在分配资源之前,系统判断假若满足进程的要求是否会发生死锁,如果会,资源就不予分配,从而确保永远不会到达死锁点,从而避免死锁的发生。

这种思想的优点:比起预防策略更为灵活使用,允许更多的并发,资源利用率和效率更高。

系统状态:不要进入不安全状态!

银行家算法:著名避免死锁的方法。

https://blog.csdn.net/qq_36260974/article/details/84404369

死锁的检测和死锁定理

六种存储管理方案

1、分区存储管理方案

一种连续存储管理方案,需要一次性全部装入内存。主要有固定分区方案、可变分区方案两种。

2、段式存储管理方案

一种不连续的存储管理方案,段和段之间可以不连续,但需要一次性全部装入内存中。在逻辑地址采用分段式的存储管理,在物理地址采用分页思想。缺点是最后一页有内存碎块。

3、页式存储管理方案

一种不连续的存储管理方案,也需要一次性装入内存。在逻辑地址空间和物理地址空间都采用分页思想。缺点是每一个作业的最后一页有内存碎块。

4、段页式存储管理方案

一种不连续的存储管理方案。如果采用纯分页和分段思想,需要一次性全部装入内存;如果采用虚拟化思想,则不需要一次性全部装入内存。在逻辑地址空间使用纯分段的管理存储思想,物理地址空间使用纯分页的存储管理思想,将页式存储管理思想和段式存储管思想的结合产物。

5、交换技术和覆盖技术

存储扩充的两种技术。

6、虚拟存储管理方案

参考

以上是关于《计算机操作系统(西电版)》读后感和一点思考的主要内容,如果未能解决你的问题,请参考以下文章

关于西电ACM校赛D题的思考分析

一个IT人的忧虑和一点思考

大学可以这样读——我的心路历程和一点思考

《机器学习系统:设计和实现》读后感和一些思考

大道至简第一章java伪代码读后感

梦断代码-读后感1