进程线程模型

pthread_join 等待一个特定线程的退出

进程控制块分为调度信息和现场信息    进程标识符 进程当前状态 代码段指针

进程从运行——>就绪的原因可能是:1.被调度程序抢占处理机 2.进程完成创建 3.时间片用完

非抢占式能引起新的进程调度是:1.正在执行的进程运行完毕 正在执行的进程调用阻塞原语将自己阻塞进入等待状态3.正在执行的进程调用阻塞原语并因资源不足被阻塞 4.唤醒原语激活了资源进程 时间片用完

进程由:进程控制块 数据 指令代码组成

引入进程的原因:提高并发度  减少通信开销 线程之间的切换时间短  每个线程都有独有的栈

等待——>就绪 唤醒

当设备忙进程会进入等待状态 不会终止 

运行中的三种状态:就绪 等待 运行

运行——>就绪  现场的信息都会保存到进程控制块当中

不同的进程执行的代码段可能相同

 与本进程相关的内容只能由操作系统读取

当进程中请处理机得不到满足时 他将进入就绪态

管程只允许一个进程进入管理  从而实现进程的互斥 但无法保证其本身互斥

进程优先级:静态和动态  系统进程优先级高于用户进程优先级  静态优先级 进程创建时确定运行期间不会改变   动态优先级  创建时确定优先级 之后不断改变

所有进程必须调度才能在处理机上运行 没有被调度到的进程只能处于等待状态  操作系统可以根据不同情景分类应用多种进程调度算法

一个进程的状态变化不一定会引起令一个进程的状态变化  信号量初值一定大于0  进程是资源分配的基本单位 线程是处理机调度的基本单位 进程被挂起他可以是阻塞也可以是挂起 PV主要实现进程的互斥与同步

手动  阻塞——>挂起 suspend()

pthread_mutex_init() 创建一个互斥量

进程控制块PCB每个进程都有常驻内存  将CPU 分配给选中的进程  将CPU进程的现场信息保存到进程控制块当中 将选中的进程现场信息送到响应的寄存器中

单核处理机:处于运行状态的进程至多一个至少0个

调度时机 进程运行完毕 自我阻塞  时间片用完 资源没准备好  出现错误

可再入程序: 纯代码程度 运行中不需要修改

线程描述记录的信息有:线程ID 指令地址存储器  处理器寄存地址  硬件设备寄存的值  栈现场状态等少量私有线程

进程控制块的组织方式:线性方法 索引方法 链接方法

运行——>阻塞必然会引起一个状态到另一个状态的变化

三种线程实现机制:用户线程 内核线程 独立线程

实时系统算法设计的目标是:满足截至时间要求 满足可靠性要求

运行批处理作业大型计算中心算法设计目标:较高的CPU利用率 较短的周期时间 较大的吞吐量

现场信息:程序状态字 时钟 界地址寄存器

调度信息:进程名进程号存储信息 优先级当前状态资源清单 ”家族“关系

phread_create的四个参数(线程标识指针,用参数设置线程属性,入口函数的起始地址,入口函数的参数)

进程再花费计算和I/O时间不同分为两类:1。时间上花费多的是时间密集型 2.I/O上花费多的是I/O密集型

进程撤销原语撤销进程:找到对应进程的PCB 撤下其他的子孙进程 释放进程子u按 撤销该进程PCB

进程由:程序 数据 进程控制块组成  程序:指令 代码 数据

其中可能会出现的状态转换是:就绪态——>就绪挂起状态  运行态——>就绪挂起状态 阻塞态——>阻塞挂起状态 阻塞挂起状态——>就绪挂起状态

三种可能会出现的状态转换是:就绪态——>运行态  运行态——>阻塞态 运行态——>就绪态

进程具有并发性 动态性 独立性 交往性 异步性

异步性:每个进程都按照自己独立且不可预知的状态向前推进

进程控制原语有:创建进程 撤销进程 挂起进程 激活进程 唤醒进程 改变进程优先级 

采用多线程模型的操作系统中 进程是资源分配的基本单位 线程是处理调度的基本单位

多道中程序设计:允许多个程序同时进入内存中并行

就绪——>运行一定不会引起调度  运行——>阻塞需要的数据没准备好

进程的调度:任何进程调度厚才能运行 操作系统可以根据不同的情景分类应用多种进程调度算法  交互式系统一般采用时间片轮转调度算法

原文地址:https://www.cnblogs.com/liugangjiayou/p/11456741.html