2.1进程和线程的概念

1进程与线程

1.1.1进程的概念

为社么引入进程?

引入进程的概念,更好地描述和控制程序的并发执行,实现了操作系统的并发性共享性

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

进程实体(进程映像)程序段数据段PCB(进程控制块,Process Control Block)三部分组成;

进程的创建和撤销实质上是创建和撤销进程实体中的PCB;注:PCB是进程存在的唯一标志;

1.1.2进程的特征

进程是多程序并发执行引入的,它和程序是截然不同的概念,其中进程是动态的,程序则是静态的;

进行的特征:

1)动态性 2)并发性3)独立性4)异步性5)结构性。​

注:进程与程序的区别

程序指令集合,故程序是静态的;

进程程序一次执行的过程,故进程是动态的;

1.2进程的状态与转换

在这里插入图片描述

1.3进程的控制

1)创建

进程允许创建子进程,子进程继承父进程所拥有资源。父进程撤销所有其子进程册小。子进程撤销归还资源给父进程;

注:原句:用于进程控制的程序段,执行期间不允许中断,且不可分割;

创建过程(创建原句):

1.为新进程分配一个唯一的进程标识号(PID),并申请一个空白的PCB;

2.为进程分配资源,程序和数据和用户栈的内存空间;

3.初始化PCB,主要有标志信息,cpu状态和控制信息和进程的优先级;

4.插入进程就绪队列。

2)终止

正常结束(完成任务),异常结束(发生异常时间),外界干预(用户,或系统,或父进程请求结束)

终止过程(撤销原句):

1.更据终止进程的PID进程标识符,检索PCB,读其运行状态;

2.若处于执行状态,终止执行,将cpu资源分配给其他进程;

3.若存在子进程,终止所有子进程,并回收其拥有的系统资源;

4.将该PCB删除。

3)阻塞和唤醒

阻塞是进程的主动行为,由运行态转为阻塞态。

阻塞原句Block:

1.更具要阻塞的进程的PID得到对应的PCB;

2.若进程为运行态,保护现场,将状态转为阻塞态;

3.将PCB插入相应事件的等待队列。

唤醒是被动的,需其他进程合作并调用唤醒原句;

唤醒原句Wakeup:

1.在该事件的等待队列中找到相应进程的PCB;

2.从队列中指出,将状态改为,就绪态;

3.将PCB插入进程就绪队列;

注:阻塞原句和唤醒原句是一对相反的原句,需成对使用;

4)切换

进程的切换是指处理机从一个进程的运行转到另一个进程上运行;

进程切换过程:

1.保存处理机上下文(cpu现场信息),包括各种寄存器,状态寄存器,程序寄存器等;

2.更新PCB信息。并将进程的PCB移入相应状态的对立,就绪或某事件阻塞队列;

3.选择另一进程执行,并更新其进程PCB;

4.更新内存管理的数据结构

5.恢复处理机上下文;

注:进程的切换与处理机的调度

调度是指资源决定分配给哪个进程,是一种决策行为;

切换是指实际分配的行为,是执行行为;

故一般为先有处理机的调度再有进程的切换;

1.4进程的组织

进程由进行控制块程序段数据段三部分组成

1)进程控制块

PCB是进程实体的一部分,是进程存在的唯一标志;

主要包括:进程描述(进程标识符PID,用户标识符UID)、控制、管理(进程当前状态,优先级,信号量等)信息和资源分配清单(代码段、数据段、堆栈段指针、外部设备)和处理机相关信息(各寄存器数值)等;

为方便进程的调度和管理,需将各进程PCB组织器来。常用组织方式有链接索引两种方式;

不同进程状态对应一个队列或索引表;

2)程序段

程序段即CPU执行的程序代码段;注:程序可被多个进程共享,多个进程可以运行同一个程序;例:多开应用,n个qq

3)数据段

程序加工处理的初始数据或执行中的中间或结果数据;

1.5进程的通信

进程的通信即进程之间的信息交换;

低级通信方式:PV操作

高级通信方式:高效,大量、传输数据的通信方式,主要有共享存储消息传递管道通信

1.共享存储

在通信的进程中有一块可直接访问的共享空间,但在对共享空间读/写时需要同步互斥访问(PV操作);

共享存储分为:基于数据结构的低级的共享和基于存储区的高级共享;

操作系统只负责提供存储空间和同步互斥的工具,交换数据由用户读写指令;

注:用户进程空间一般独立;进程内的线程共享进程空间;

2.消息传递

进程间数据交换以消息(Message)为单位。

1)直接通信方式。进程与进程直接发送消息,且消息接收入消息缓冲队列上。

2)间接通信方式。又称信箱通信方式,通过中间信箱过渡消息;

3.管道通信

管道,指用于连接一个读进程和一个的一个共享文件,通过该文件实现两进程通信;

例:linux shell中 cat xxx.file | grep ‘xxxstr’

管道机制必须满足:同步、互斥、和确定对方存在;

linux中管道限制大小为4KB即共享缓冲区大小;写进程快于write满缓冲区,需等待读读进程read缓冲区后,缓冲区读read空时,需等待写进程write,缓冲区只允许一边写,一边读, 不需互斥;

管道为半双工通信,即某一时刻只能单向传输;进程互相通信需要两个管道;

1.6线程概念与多线程

为什么引入线程?

引入线程为的时减少程序并发执行时所付出的时空开销,提高操作系统的并发性能;同时线程的切换在同一进程下需要的时空开销小;

1.线程的概念

线程可以理解为进程下的概念,多线程,同一个进程中可以有多个线程并发执行;一个线程可创建和撤销另一线程;

线程可描述为“轻量级进程”,是系统独立调度和分配的基本单位,是一个基于cpu的执行单位,程序执行的最小单位;

线程的组成:线程ID、程序计数器、各寄存器和堆栈组成;

2.线程的属性和状态

线程的基本状态:就绪、阻塞、执行;

属性:

1)每个线程都有一个唯一的标识ThreadID和线程控制块,现场控制块记录线程的寄存器和栈的现场状态;

2)同一程序可由不同线程执行;

3)在同一进程下的各个线程共享该进程的资源;

4)多线程可并发执行;

5)线程创建后有其生命周期;

3.多线程模型:

1)多对一模型,多用户级线程映射为一个内核级线程;优:效率高,缺:并发性不好

2)一对一模型,一个用户级线程映射一个内核级线程;优:并发能力强,缺:开销大

3)多对多模型,吸取1)2)模型优点;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值