操作系统第二章笔记(上)

第二章--------进程管理

     前言

        本章是关于处理机管理的内容,本章的知识点很重要,同时重难点较多,所以小编决定本章笔记分三篇发布,一方面是本章知识点作一篇的话,篇幅过长,另一方面是小编目前要进行ssm的学习,关于操作系统学习的话可能会搁置一段时间,所以就把目前所完成的笔记作为上篇发布出来。同时小编在学习ssm的同时,也会发布笔记与总结,不仅供自己学习

,同时也希望能给到别人一些帮助,谢谢大家支持与鼓励。       

        钱塘江上潮信来,今日方知我是我。

目录

第二章进程管理

   前言

  进程的概念,组成,特征

        概念

        组成

        特征

       总结

   进程的状态与转换

        状态

        转换       

         总结

   进程的控制

          原语

          总结

   进程通信

         共享存储

          消息传递

          管道通信   

        总结

  线程的概念和属性

        概念

        属性

 线程的实现方式和多线程模型

         线程实现方式

        多线程模型

        总结

 线程的状态与转换

         状态与转换

         组织与控制

  调度的概念,层次 

          概念

          层次

           补充知识:进程的挂起态与七状态模型

           总结

    进程的概念,组成,特征

        概念

              程序:是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合。

              进程:是动态的,是程序的一次执行过程,进程实体(进程映像)是静态的  

        组成

           1.进程控制块(PCB)

              当进程被创建时,操作系统会为该进程分配一个唯一的,不重复的“身份证号”----PID

              操作系统要记录PID,进程所属用户ID(UID)(基本的进程描述信息,可以让操作系统区分各个进程)

              还要记录给进程分配了哪些资源(可用于实现操作系统对资源的管理)

              还要记录进程的运行情况(可用于实现操作系统对进程的控制,调度)

              这些信息都被保存在一个数据结构PCB中,即进程控制块

              操作系统需要对各个并发运行的进程进行管理,但凡管理时所需要的信息,都会被放在PCB中

               PCB是进程存在的唯一标志,PCB随着进程的创建而创建,随着进程的结束而回收。

         2.程序段

               指程序的代码

          3.数据段

               指运行过程中产生的各种数据(程序中定义的变量)

        总结

        重点:        

         PCB是给操作系统用

         程序段,数据段是给进程自己用的

         一个进程实体(进程映像)PCB,程序段,数据段组成

         进程是动态的,进程实体(进程映像)是静态

         进程是进程实体的运行过程,是系统进行资源分配调度的一个独立单位

        注意:

         PCB是进程存在的唯一标志

     特征

          进程有动态性,并发性,独立性,异步性,结构性的特征。其中动态性是进程最基本的特征,异步性会导致并发程序执行结果的不确定性。

       总结

        

        进程的状态与转换

                状态

                        创建态:进程正在被创建时,它的状态时创建态,在这个阶段操作系统会为进程分配资源,初始化PCB。

                        就绪态:当进程创建完成后,便进入就绪态,处于就绪态的进程已经具备运行条件,但由于没有空闲CPU,就暂时不能运行。

                        运行态:如果一个进程此时在CPU上运行,那么这个进程处于运行态。CPU会执行该进程对应的程序(执行指令序列)。

                        阻塞态:在进程运行的过程中,可能会请求等待某个事情的发生(如等待某种资源的分配,或者等待其他进程的响应),在这个事情发生之前,进程无法继续往下执行,此时操作系统会让这个进程下CPU,并让它进入阻塞态。此时CPU空闲又会选择另一个就绪态进程上CPU运行

                        终止态:一个进程可以执行exit系统调用,请求操作系统终止该进程。此时该进程会进入终止态,操作系统会让该进程下CPU,并回收内存空间等资源,最后还要回收该进程的PCB。

                       三种基本状态:运行态,就绪态,阻塞态

                进程的组织

                

                转换       

                        注意:不能由阻塞态直接转换为运行态,也不能由就绪态直接转换为阻塞态(因为进入阻塞态是进程主动请求的,必然需要进程在运行时才能发出这种请求)

          总结

                

      进程的控制

                 概念:进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程,撤销已有进程,实现进程状态转换等功能。

                进程的控制就是要实现进程状态的转换

                原语

                如何实现进程控制:用原语实现,原语是一种特殊的程序,它的执行具有原子性,也就是说,这段程序的运行必须一气呵成,不可中断

                可以用“关中断指令”“开中断指令”这两个特权指令实现原子性。

                因为:CPU执行了关中断指令之后,就不再例行检查中断信号,直到执行开中断指令之后才会恢复检查。

                进程创建时相关的原语:

                进程终止时相关的原语:

                进程的阻塞和唤醒相关的原语:

                进程的切换相关的原语:   

  

                总结

     进程通信

                概念:进程间(IPC)通信是指两个进程之间产生数据交互。

                 为什么进程通信需要操作系统支持?

                 进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立,为了保证安全,一个进程不能直接访问另一个进程的地址空间。

                 共享存储

                   概念:在内存当中会生成一片共享存储空间供进程之间进行通信,但是为避免出错,各个进程对共享空间的访问应该是互斥的。各个继承可使用操作系统内核提供的同步互斥工具(如P,V操作)。

                     分类:

                        基于存储区的共享:操作系统在内存中划出一块共享存储区,数据的形式,存放位置都由通信进程控制,而不是操作系统。这种共享方式速度很快,是一种高级通信方式。

                        基于数据结构的共享:比如共享空间里只能放一个长度为10的数组。这种共享方式速度慢,限制多,是一种低级通信方式。

                  消息传递

                         概念:进程间的数据交换以格式化的消息为单位。进程通过操作系统提供的“发送信息/接收信息”两个原语进行数据交换。

                        格式化的消息:由两个部分组成,消息头和消息体。

                        消息头包括:发送进程ID,接受进程ID,消息长度等格式化的信息。

                         消息体包括:具体要传送的数据。

                          分类:

                                直接通信方式:消息发送进程要指明接受进程的ID。               

                                间接通信方式:通过“信箱”间接地通信,因此又称信箱通信方式                       

                 管道通信   

                        概念:两个进程之间通过“管道”进行单向的写数据和读数据。

                        管道:是一个特殊的共享文件,又名pipe文件。其实就是在内存中开辟一个大小固定的内存缓冲区。这一片内存缓冲区可以理解为循环队列(进程读写数据遵循先进先出的原则,并且队列头和队列尾是相连的)。

                        注意:

                        1.管道只能采用半双工通信,某一时刻内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道(全双工通信)。

                        2.各进程要互斥地访问管道(由操作系统实现)。

                        3.当管道写满时,写进程将阻塞,直到读进程将管道中的数据取走,即可唤醒写进程。   

                        4.当管道读空时,读进程将阻塞,直到写进程往管道中写入数据,即可唤醒读进程。

                        5.管道中的数据一旦被读出,就彻底消失。因此,当多个读进程读同一个管道时,可能会错乱。对此,通常有两种解决方案:a.一个管道允许多个写进程,一个读进程;b.允许有多个写进程,多个读进程,但系统会让各个读进程轮流从管道中读数据(Linux的方案)。

                        重点:

                        写进程往管道写数据,即便管道没被写满,只要管道没空,读进程就可以从管道读数据。

                        读进程从管道读数据,即便管道没被读空,只要管道没满,写进程就可以往管道写数据。

        总结

  线程的概念和属性

        概念

        可以把线程理解为“轻量级进程”

         概念:线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频,文字聊天,传文件)

        引入线程后,进程只作为除CPU之外的系统资源的分配单元(如打印机,内存地址空间等都是分配给进程的)。

            属性

     线程的实现方式和多线程模型

            线程实现方式

                用户级线程

                      背景:早期操作系统只支持进程,不支持线程,当时的线程是由线程库实现的

                      1.用户级线程的管理工作是由应用程序通过线程库来完成

                      2.线程的切换仅由用户态应用程序就可以完成,不需要CPU状态的转换

                      3.操作系统不能意识到用户级线程的存在  

                内核级线程

                        由操作系统支持的线程

            多线程模型

                一对一模型

                       一个用户级线程映射到一个内核级线程。每个用户进程有与用户级线程同数量的内核级线程。

                多对一模型

                        多个用户级线程映射到一个内核级线程。且一个进程只被分配一个内核级线程。

                        重点重点重点:操作系统只“看得见”内核级线程,因此只有内核级线程才是处理机分配的单位。       

                多对多模型

                        n用户级线程映射到m个内核级线程(n>=m)。每个用户进程对应m个内核级线程。

        总结

      线程的状态与转换

                状态与转换

                        同进程的状态与转换

                        但线程我们仅关注就绪,运行阻塞这三个状态及其转换

                组织与控制

                        近似进程组织与控制

       调度的概念,层次 

                概念

                当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是调度研究的问题。

                 层次

                      一.  高级调度(作业调度)

                      作业:一个具体的任务。

                       高级调度(作业调度)。按一定的原则从外存的作业后备队列中挑选一个作业调入内存,并创建进程。每个作业只调入一次,调出一次。作业调入时会建立PCB,调出时才撤销PCB。

                        二. 低级调度(进程调度/处理机调度)

                        低级调度(进程调度/处理机调度)----按照某种策略从就绪队列中选取一个进程,将处理机分配给它。

                        进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次。

                        三.中级调度

                         内存不够时,可将某些进程的数据调出外存。等内存空闲或者进程需要运行时再重新调入内存。暂时调到外村等待的进程状态为挂起状态。被挂起状态的进程PCB会被组织成挂起队列

                       中级调度(内存调度)----按照某种策略决定哪个处于挂起状态的进程重新调入内存。一个进程可能会被多次调出,调入内存,因此中级调度发生的频率要比高级调度更高

                      补充知识:进程的挂起态与七状态模型

               暂时调到外存等待的进程状态为挂起状态(挂起态,suspend) 挂起态又可以进一步细分为就绪挂起,阻塞挂起两种状态 。

                五状态模型--->七状态模型

                        三层调度的联系,对比

                        总结

                                

                以上笔记都是通过观看b站视频《王道考研----操作系统》总结而来

【王道计算机考研 操作系统】https://www.bilibili.com/video/BV1YE411D7nH?p=20&vd_source=f9c02b14d6c8f102a730f58d382df8bc

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值