进程
来源:互联网 发布:服务器centos和ubuntu 编辑:程序博客网 时间:2024/06/06 14:27
并发环境:
一段时间间隔内,单处理器上有两个或两个以上的程序同时处于开始运行但尚未结束的状态并且次序不是事先确定的
定义:process:---对CPU的抽象
进程时具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位
程序是一次执行过程
是正在运行的程序的抽象
将一个cpu变换成多个虚拟的cpu
系统资源以进程为单位分配,如内存,内存.....
每个具有独立的地址空间
操作系统将cpu调度给需要的进程
进程控制块PCB:
process control block
又称:进程描述符,进程属性
操作系统用于管理控制进程的一个专门数据结构
记录进程的各种属性,描述进程的动态变化过程
进程包括什么:
进程描述信息,进程控制信息,CPU现场信息,所拥有的资源和使用情况
进程三种状态
运行态,就绪态,等待态
进程的其他状态
创建new----已完成创建一进程所必要的工作--PCB,PID
---但尚未同意执行该进程---因为资源有限
终止terminated---终止执行后,进程进入该状态,可完成一些数据统计工作,资源回收
挂起suspend---用于调度负载,进程不占用内存空间,其进程映像交换到磁盘上
进程队列:
操作系统为每一类进程建立一个或多个队列
队列元素PCB
伴随进程状态的改变,其PCB从一个队列进入另一个队列
进程控制:
进程控制操作完成进程各状态之间的转换,由具有特定功能的原语完成---原语:原子操作
进程的创建:
1,给新进程分配一个唯一的标识和进程控制块
2,为进程分配地址空间
3,初始化进程控制块
---设置默认值
4,设置相应的队列指针
unix:fork/exec
window:createprocess
进程的撤销:
1,收回进程所占有的资源
2,撤销该进程的PCB
UNIX:exit
windows:terminateprocess
进程的阻塞:
处于运行状态的进程,在其运行过程中等待某一事件发生,当被等待的事件未发生时,由进程自己执行阻塞原语,使自己由运行态变为阻塞态
unix:wait
windows:waitforsingleobject
进程的分类:
用户进程,系统进程
前台进程,后台进程
CPU密集型进程,I/O密集型进程
进程层次结构:
unix进程家族树:init为根
Windows:地位相同
进程和程序区别:
进程更能准确刻画并发,程序不行
程序:静态,进程:动态
进程:有生命周期,程序:相对长久
一个程序可对应多个进程
进程具有创建其他进程的功能
进程的地址空间:
进程映像(IMAGE)
对进程执行活动全过程的静态描述
由进程地址空间内容,硬件寄存器内容及与该进程相关的内核数据结构,内核栈组成
上下文切换(CONTEXT)
将CPU硬件状态从一个进程换到另一个进程的过程
构造服务器三种方法:
进程的两个基本属性:
1,资源的拥有者----进程还是拥有者
2,CPU调度单元-----线程继承了这一属性
线程的属性:
1,有标识符ID
2,有状态及状态转换-->需要提供一些操作
3,不运行时需要保存上下文
有上下文环境:程序计数器等寄存器
4,有自己的栈和栈指针
5,共享所有进程的地址空间和其他资源
6,可以创建,撤销另一个线程
程序开始是以一个单线程进程方式运行
线程的实现:
用户级线程
核心级线程
混合-两者结合方法
1,用户级线程:unix
在用户空间建立线程库:提供一组管理线程的过程
运行时系统:完成线程的管理工作
内核管理的还是进程,不知道线程的存在
线程切换不需要内核态特权
用户级线程小结:
优点:
线程切换块
调度算法是应用程序特定的
用户及线程可运行在任何操作系统上
缺点:
内核只将处理器分配给进程,同一进程中的两个线程不能同时运行与连个处理器上
大多数系统调用时阻塞的,因此,由于内核阻塞进程,故进程中所有线程也被阻塞
核心级线程:windows
内核管理所有县城管理,并向应用程序提供api接口
内核维护进程和线程的上下文
线程 切换需要内核支持
以线程为继承进行调度
混合模型:solaris---多个用户级线程多路复用多个内核级线程
线程创建在用户空间完成
线程调度等在核心态完成
- 进程
- 进程
- 进程
- 进程
- 进程
- 进程
- 进程
- 进程
- 进程
- 进程
- 进程
- 进程
- 进程
- 进程
- 进程
- 进程
- 进程
- 进程
- Java设计模式透析之 —— 模板方法(Template Method)
- layout_below与layout_alignBottom的区别
- poi工具类
- RigidBody的基础知识
- 去除读文件的换行
- 进程
- Hello, TensorFlow!--转自O'Reilly网站
- Python 百度爬虫图片
- pdm
- Actran15.0免费版下载附安装教程
- Ubuntu16.04 为vim安装YouCompleteMe插件
- 搭建ceph架构图
- 通过传参自定义打印星星的行数
- Oracle scott用户表分析