进程与线程

一年前的学科笔记,直接转载本人印象笔记上的内容,如若侵权请联系我

进程和线程的概念

进程的定义:

  • 进程是程序的一次执行

  • 进程是一个程序及其数据在处理机上顺序执行时所发生的活动

  • 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位

线程的定义:

  • 线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位

  • 线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源

  • 一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行

线程与进程的比较

  • 调度的基本单位:进程:在传统的OS中 线程:在引入进程的操作系统中

  • 并发性:进程: 进程和进程可以实现并发 线程: 进程内的各线程也可以实现并发

  • 拥有资源:进程: 进程可以拥有资源,并作为系统中拥有资源的一个基本单位 线程: 线程只拥有少量的,能保证独立运行的资源,还允许多个线程共享资源

  • 独立性: 同一进程内的不同线程: 独立性低   不同进程内的不同线程: 独立性高

  • 系统开销:进程: 开销大 线程: 开销小

  • 支持多处理机系统: 单线程进程: 在多处理机系统中,进程只能运行在1个处理机上  多线程进程: 在多处理机系统中,进程可以在多个处理机上并发运行


进程的基本状态及状态转换的原因

  • 就绪状态(Ready):当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行。

  • 执行状态(Running):进程已获得CPU,其程序正在执行。

  • 阻塞状态(Blocked):正在执行的进程由于发生某事件而暂时无法继续执行时,便放弃处理机而处于暂停状态,把这种暂停状态称为阻塞状态,有时也称为等待状态。

  • 创建状态(New):进程已经创建,但未被OS接纳为可执行进程,并且进程资源尚未分配,程序还在辅存,PCB在内存。

  • 终止状态(Exit):因停止或取消,被OS从执行状态释放 ,将PCB清零并释放空间

  • 挂起状态(Suspend): 使执行的进程暂停执行、静止下来。我们把这种静止状态称为挂起状态。

引入挂起状态的原因

  • 端用户的请求。

  • 父进程请求。   

  • 负荷调节的需要。当实时系统中的工作负荷较重,把一些不重要的进程挂起,以保证系统能正常运行。

  • 操作系统的需要。操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。

挂起与阻塞

  • 就绪:进程在内存,准备执行

  • 阻塞:进程在内存,等待事件  

  • 就绪/挂起:进程在外存,只要调入内存即可执   

  • 阻塞/挂起:进程在外存,等待事件

状态转化

  • 空→新状态  新创建的进程首先处于新状态

  • 新状态 →就绪状态  当系统允许增加就绪进程时,操作系统接纳新建状态进程,将它变为就绪状态,插入就绪队列中。

  • 就绪状态 →执行状态  当处理机空闲时,将从就绪队列中选择一个进程执行,该选择过程称为进程调度,或将处理机分派给一个进程,该进程状态从就绪转变为执行。

  • 执行状态 → 终止状态  执行状态的进程执行完毕,或出现诸如访问地址越界、非法指令等错误,而被异常结束,则进程从执行状态转换为终止状态。

  • 执行状态 → 就绪状态  分时系统中,时间片用完,或优先级高的进程到来,将中断较低优先级进程的执行。进程从执行状态转变为就绪状态,等待下一次调度。

  • 执行状态 → 阻塞状态  执行进程需要等待某事件发生。通常,会因为进程需要的系统调用不能立即完成,如读文件、共享虚拟内存、等待I/O操作、等待另一进程与之通信等事件而阻塞。

  • 阻塞状态 → 就绪状态  当阻塞进程等待的事件发生,就转换为就绪状态。进入就绪队列排队,等待被调度执行。


PCB的作用

  • 是进程存在的唯一标志

  • PCB常驻内存


进程控制的原语操作

进程的创建

  • 申请空白PCB

  • 为新进程分配所需资源

  • 初始化PCB

  • 将PCB插入就绪队列

使用原语:Creat()创建进程,fork(),Clone(),Vfork()也是

进程的终止

  • 从PCB集合中找到终止进程的PCB

  • 若进程正在运行,立即剥夺CPU,将CPU分配给其他进程

  • 终止其所有子进程

  • 将该进程拥有的所有资源归还给父进程或操作系统

  • 删除PCB

使用原语:exit()、 _exit()、 return终结进程,其中return只能在main函数里使用

进程的阻塞

  • 在事件等待队列中找到PCB

  • 将PCB从等待队列移除,设置进程为就绪态

  • 将PCB插入就绪队列,等待被调度

使用原语:block来阻塞自己

进程的唤醒

  • 在事件等待队列中找到PCB

  • 将PCB从等待队列移除,设置进程为就绪态

  • 将PCB插入就绪队列,等待被调度

使用原语:wakeup()来唤醒自己

进程的切换

  • 将运行环境信息存入PCB

  • PCB移入相应队列

  • 选择另一个进程执行,并更新其PCB

  • 根据PCB恢复新进程所需的运行环境

使用原语:context_switch()来切换进程

进程的挂起与激活

使用原语:suspend( )来挂起,active(  )来激活

Linux中:int pause(void)使调用进程挂起直到捕捉到一个信号

               int sigsuspend(const sigset_t *sigmask) 函数接受一个信号集指针,将信号屏蔽字设置为信号集中的值,在进程接受到一个信号之前,进程会挂起


进程互斥、临界区、进程同步的基本概念、同步准则    

进程同步的基本概念

  • 两种形式的制约关系:1)间接相互制约关系。由于资源共享                                                                            2)直接相互制约关系。主要由于进程间的合作。

  • 临界资源:一次仅允许一个进程访问的资源

  • 临界区:在每个进程中访问临界资源的那段代码

  • 访问临界资源的描述:进入区:检查有无进程进入                                                                                            临界区:                                                                                                                      退出区:将访问标志复位

  • 同步机制应遵循的规则:空闲让进,忙则等待 ,有限等待 ,让权等待


记录型信号量

  • 记录型信号量机制,是一种不存在“忙等”现象的进程同步机制

  • 定义:记录型信号量,其中一个域为整型,另一个域为队列,其元素为等待该信号量的阻塞进程(FIFO)

  • wait(S),signal(S)


信号量的应用

  • 利用信号量实现进程互斥

  • 利用信号量实现前趋关系


经典进程同步问题;生产者与消费者问题

  • 单缓冲区的一个生产者一个消费者同步问题(生产消费)

  • 单缓冲区的一个生产者多个消费者同步问题(作者读者)

  • 多个生产者多个消费者多个缓冲区的同步问题(哲学家)


进程间通信的原理和实现方法

直接通信

  • 原理:指发送进程利用OS所提供的发送命令,直接把消息发送给目标进程

  • 方法:系统提供下述两条通信命令(原语): Send (Receiver, message);                                                                                 Receive(Sender, message)

间接通信

  • 发送进程发送给目标进程的消息存放信箱;接收进程则从该信箱中,取出对方发送给自己的消息;消息在信箱中可以安全地保存,只允许核准的目标用户随时读取。

  • 优点:在读/写时间上的随机性

  • 写进程 → 信箱(中间实体) → 读进程原语

  • 消息的发送和接收: Send (mailbox, message)                                                                                           Receive (mailbox, message)

信箱分类

  • 私用信箱

  • 公用信箱

  • 共享信箱


调度算法

共同目标:资源利用率 公平性 平衡性 策略强制执行

面向用户的准则

  • 周转时间短

  • 响应时间快

  • 截止时间的保证

  • 优先权准则

面向系统的准则

  • 系统吞吐量高

  • 处理机利用率好

  • 各类资源的平衡利用

几种常考的调度方法

  • 短作业优先调度算法

  • 先来先服务调度算法

  • 高响应比优先调度算法

  • 时间片轮转法


死锁

产生死锁的原因

  • 竞争资源引起进程死锁

  • 进程推进顺序不当引起死锁

死锁的必要条件

  • 互斥条件

  • 请求和保持条件

  • 不剥夺条件

  • 循环等待条件

处理方法为让234中任一不成立

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值