进程和线程
来源:互联网 发布:热血无赖mac存档位置 编辑:程序博客网 时间:2024/06/02 00:00
进程
进程状态
- 就绪状态,进程已分配到除CPU以外的所有资源,通常有多个,成为就绪队列;
- 执行状态,分配到CPU,正在执行,在单处理机上只有一个进程处于执行状态,多处理机上,有多个进程处于执行状态;
- 阻塞状态,正在执行的进程因某事件而暂时无法继续执行,便放弃处理机而处于暂停状态,例如IO请求,申请缓冲空间。,根据阻塞原因将其分为不同队列
进程生命周期切换
- 创建 到 就绪
- 就绪 到 执行
- 执行 到 阻塞
- 执行 到 就绪
进程同步方式
信号量机制
进程通信
通信类型
1.共享存储器系统
临界缓冲区
共享存储器
2.消息传递系统
最为广泛,进程间的数据交互是以格式化的消息为单位的。
3.管道通信系统
- 互斥:只能有一个进程对pipe进行读写操作
- 同步:当写进程写完后便去睡眠等待,直到读进程读完后将其唤醒
- 只有确定对方存在后才能进行通信
消息传递的通信方式
1.直接通信
发送方直接发送消息,接收方直接接收消息
2.间接通信方式
需要通过共享的数据结构暂存消息
线程
1个进程至少有1个线程,线程相当于进程的不同执行分支,所以1个进程中的所有线程共享这个进程的代码段,数据,内存等所有系统资源,线程基本不拥有系统资源,除了一些比不可少的寄存器和堆栈数据等,所有切换线程的开销较小。
线程的创建
当应用程序启动时通常有一个线程在执行,即初始化线程,它可根据需要去创建若干个线程,创建线程时需要利用一个线程的创建函数并提供相应的参数:
- 指向线程主程序的入口指针
- 堆栈大小
调用优先级
创建函数执行完后返回一个线程标识符
线程通信机制
- 互斥锁
- 条件变量
由于互斥锁会造成资源的循环等待而发生死锁:假设线程对mutex1执行关锁操作后进入临界区C,此时又需临界资源R,则为R设置一个互斥锁mutex2,若此时R正忙碌,则线程对mutex2执行关锁操作后必将阻塞,这样mutex1则一直无法释放,如果保持了R的线程要求进入临界区C,但由于mutex1一直关锁,所以两个资源互相等待形成死锁。
条件变量就是字需要R时R忙碌,则将R的互斥锁mutex2执行开锁,直到该资源被释放。
- 信号量机制
调度
进程是资源分配的基本单位,线程是调度的基本单位
并发性
同一个进程中的线程可并发执行共享进程的资源
系统开销
创建或撤销进程时系统都要为之创建和回收内存空间或者IO设备等,但是线程的切换仅需设置少量的寄存器内容,不涉及内存管理,所以,线程的切换代价远小于进程。
阅读全文
0 0
- 进程和线程
- 关于进程和线程
- 进程和线程
- 进程和线程
- 小解进程和线程
- 进程和线程
- 理解进程和线程
- 进程和线程
- 进程和线程
- 进程和线程 编程
- 进程和线程
- 进程和线程
- 线程和进程
- 进程和线程编程
- 程序、进程和线程
- 进程和线程 区别
- 进程和线程编程
- 什么是线程和进程
- JAVA程序加载C++库
- postgreSQL在linux下的使用
- nodejs--各种for
- 两个节点添加osd
- 训练指南计数问题
- 进程和线程
- linux 下 c 编程2
- Common Subsequence HDU
- 序列型动态规划--猜谜(三校联考试题)
- navicat for mysql 创建存储过程时报错1064
- ListView嵌套GrideView item无法点击问题
- 用户权限
- mac进入某个目录快捷键
- redisTimple 对redis进行增加、删除、查找