操作系统笔记:进程管理

操作系统笔记

第二部分:进程管理

在这里插入图片描述
**

进程的概念

**:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度的一个独立单位。
对上述语句的理解:
1.进程是程序的一次执行活动,不是一个死程序
1.资源分配指的是内存,而调度指的是处理机,操作系统以进程的方式进行资源分配,以进程的方式进行调度
2.操作系统以进程为基本单位来分配资源
引入进程的目的:提高OS的并发性,提高资源利用率
进程的结构:控制块(PCB)、数据段、程序段
控制块:描述进程的基本情况和运行状态,是识别进程的唯一标志,计算机通过这部分来区分进程;
数据段:存放原始数据和中间数据(有可能是下一次的原始数据)
程序段:存放在文本区域,可被多个进程共享
三部分构成进程映像(进程实体),一个进程对应磁盘上的一个应用程序,所谓创建进程实质上是创建进程映像中的PCB,撤销进程是撤销进程的PCB,注意进程映像是静态的,进程是动态的。
进程的特征:动态性、并发性、独立性、异步性
动态性:动态产生的,运行中的应用程序才是进程,由撤销而消亡
并发性:多个进程同时运行,根据之前的内容可知
独立性:独立的资源分配,由进程控制块(PCB)进行识别进程,也由程序控制块控制
异步性:相互独立,互不干扰
结构性:每个进程都配置一个PCB对其描述。

进程的状态与转换

在这里插入图片描述
进程的创建:
1)为新进程分配一个唯一的进程标识号,并申请一个空白的PCB(PCB是有限的)。若PCB申请失败,则创建失败。
2)为进程分配资源,为新进程的程序和数据及用户栈分配必要的内存空间(在PCB中体现)。注意,若资源不足(如内存空间),则并不是创建失败,而是处于阻塞态,等待内存资源。
3)初始化PCB,主要包括初始化标志信息、初始化处理机状态信息和初始化处理机控制信息,以及设置进程的优先级等。
4)若进程就绪队列能够接纳新进程,则将新进程插入就绪队列,等待被调度运行。
进程的终止:
1)根据被终止进程的标识符,检索PCB,从中读出该进程的状态。
2)若被终止进程处于执行状态,立即终止该进程的执行,将处理机资源分配给其他进程。3)若该进程还有子孙进程,则应将其所有子孙进程终止。
4)将该讲程所拥右的全部咨源,或归还给其父讲程,或归还给操作系统。
5)将该PCB从所在队列(链表)中删除。
进程的堵塞:
1)找到将要被阻塞进程的标识号对应的PCB。
2)若该进程为运行态,则保护其现场,将其状态转为阻塞态,停止运行。
3)把该PCB插入相应事件的等待队列,将处理机资源调度给其他就绪进程。
进程的唤醒:
1)在该事件的等待队列中找到相应进程的PCB。
2)将其从等待队列中移出,并置其状态为就绪态。
3)把该PCB插入就绪队列,等待调度程序调度。
下面简述一下进程的状态切换
第一步是“新建”,用户登录、作业调度(高级调度)、提供服务和应用请求之类的就是进入“新建”状态,为新进程分配唯一进程标识号,并申请一个空白的PCB(PCB是有限的)。
第二步是“就绪”,分配到除CPU外的所有资源,为新进程的程序和数据及用户栈分配必要的内存空间(如果资源不足,就进入阻塞状态)
第三步是“运行”,当CPU空闲时,处于就绪状态的进程完成进程调度(低级调度),进入运行状态,完成进程后会进入两种情况:
第四步:情况1是进入“终止”,进程完成后正常结束、异常出错(存储空间超出该进程区域、访问不该访问的内存和执行不存在的指令)或者外界干预
情况2是回到“就绪”,就是CPU给的执行时间到了,就算没完成也要回到就绪状态,还有就是有一个更加紧急的进程需要处理,这些都不会进入阻塞状态,毕竟一开始就是在就绪态进来的
情况3是进入“阻塞”,就是除了CPU之外还缺少部分资源(例如请求摄像头,但是摄像头又被其他应用占用了,这时候只能进入阻塞状态等待摄像头空闲出来),总的来说就是两种情况:请求资源和等待事件(等待某些数据或者信号)
情况3之后是回到“就绪”,因为分到除CPU外的资源后还得等CPU分配

进程通信:进程间的信息交换

1.共享存储(无论是数据结构还是存储区都是由操作系统分配管理的,不属于任何一个进程)
基于共享数据结构的通信方式,OS提供的数据结构,由用户负责同步处理,低级通信;
基于共享存储区的通信方式,OS给一块存储区域,由进程控制数据的形式和方式,高级通信
2.消息传递(没有共享的存储区和数据结构,安全性高)
直接通信:(点对点发送)发送和接收时指明双方进程ID,每个进程维护一个消息缓冲队列,用原语实现
间接通信:(广播信箱)以信箱为媒介,容易建立双向通信链
3.管道通信(管道可以理解为缓冲区或者文件)
半双工通信:从管道读数据是一次性操作,数据一旦被读取就会被管道抛弃,释放空间写更多的数据,同一时段单项通信,先进先出,以流的形式读写【未满不读,已满不写,未空不写,已空不读,读后删除】

线程

1.线程是轻量级进程,是一系列活动按事先设定好的顺序依次执行的过程,是一系列指令的集合。
2.线程是一条执行路径,不能单独存在,必须包含在进程中
3.线程是OS中运算调度的最小单位
4.线程是具体完成事情的,进程用来分配资源
区别注意:
1.进程是除CPU外的资源分配的基本单位,线程是独立调度的最小单位
2.进程才能拥有资源,线程是共享进程的资源
3.进程的并发性是有限制的,受限于空间和资源,线程的并发性理论上是无限的
4.创建一个进程的系统开销较大,线程的极小
5.进程间的地址空间是独立的,而同一个进程的线程间地址空间应该是一样的
6.进程的通信需要同步或者互斥手段,而线程间是共享的,这边的线程写那边的线程取,所以线程通信比较容易
引入线程的目的是进一步提高并发性
在这里插入图片描述

错题知识点

1.线程是处理机调度的基本单位,可以独立执行程序;线程之间通信通过它们共享的存储空间,也可以使用系统调度函数。
2.进程和程序的根本区别:静态和动态特点。
3.处于死锁状态时所有进程阻塞或者无进程任务都会出现CPU空闲。
4.I/O操作完成之前,进程在等待结果,状态为阻塞态;完成后进程等待事件就绪,变为就绪态。
5.并发进程失去封闭性,是指并发进程共享变量,其执行结果与速度有关。
6.C语言编写的程序在使用内存时一般分为三个段,它们一般是正文段(即代码和赋值数据段)、数据堆段和数据栈段。二进制代码和常量存放在正文段,动态分配的衣储区在数据堆段,临时使用的变量在数据栈段。由此,全局赋值变量在正文段赋值数据段,未赋值的局部变量和实参传递在栈段,动态内存分配在堆段,常量在正文段,进程的优先级只能在PCB内。
7.进程是暂时的,程序是永久的;进程是动态的,程序是静态的;程序代码经过多次创建可对应不同的进程,而同一个进程(或线程)可以由系统调用的方法被不同的进程(线程)多次使用。
8.进程创建需要占用系统内存来存放PCB的数据结构,所以系统能创建的进程总数是有限的,最大数目取决于内存大小。
9.进程切换是指CPU调度不同的进程执行,当一个进程从运行态变为就绪态,CPU调度另一个进程执行。
10.进程可以创建进程或线程,线程可以创建线程。
11.进程申请读磁盘操作时,因为要等待I/O操作完成,会把自身阻塞,此时进程变成阻塞态;操作完成后,进程得到资源,会从阻塞态转换成就绪态。
12.管道实际上是一种固定大小的缓冲区,管道对于管道两侧的进程而言就是一个文件,但是它不是普通的文件,而是自立门户的一种文件系统,并且只存在内存中。
13.用户级线程的切换可以在用户空间完成,内核级线程的切换需操作系统帮助进行调度,因此用户级线程的切换效率更高。
14.每个进程有自己独立的地址空间。在操作系统和硬件的地址保护机制下,进程无法访问其他进程的地址空间,所以必须借助操作系统的系统调用函数实现进程之间的通信。
15.多线程指一个程序可以定义多个线程并同时运行它们,每个线程可以执行不同的任务。多线程和多任务的区别:多任务是针对操作系统而言的,代表操作系统可以同时执行的程序个数;多线程是针对一个程序而言的,代表一个程序可以同时执行的线程个数,而每个线程可以完成不同的任务。
16.进程是如何解决问题的?进程把能够识别程序运行态的一些变量存放在PCB,通过这些变量系统能够更好地了解进程的状况,并在适当时进行进程切换以避免资源的浪费,甚至划分为更小的调度单位–线程来提高系统的并发度。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜以冀北

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值