进程和线程的概念和区别
来源:互联网 发布:孰是孰非 那知那过 编辑:程序博客网 时间:2024/06/05 09:53
进程的生命周期
进 程和人一样是有生命的,从诞生到死亡要经历若干个阶段。一般说来进程有三种状态:就绪、执行、等待。由多种原因可以导致创建一个进程,例如一个程序从外存 调入内存开始执行,操作系统就要为其创建进程,当然还可以有其它原因,如一个应用进程为完成一个特殊的任务,可以自己创建一个子进程。进程被创建后就是在 内存中,处于就绪状态,所谓就绪状态就是具备除了CPU之外的所有资源,万事具备,只欠东风,一旦占有了CPU,就变成了执行状态,执行中如果需要等待外围设备输入数据,则进程就沦落为等待状态,操作系统又会从就绪状态队列中调度一个进程占有CPU。等到数据到来后,等待状态的进程又被唤醒成为就绪状态。这些状态的转换是通过进程控制原语实现的。程序的运行是通过进程体现的,操作系统对进程进行管理和控制,那么操作系统怎么了解到进程的状态呢,怎么把资源分配给进程呢,而且进程做状态转换时CPU现场保存在那呢?这要说到PCB(进程控制快)。PCB是进程的唯一标志,在其中记录了进程的全部信息,它是一种记录型的数据结构,相当于进程的档案。操作系统就通过PCB感知进程的存在,通过PCB了解进程和控制进程的运行。PCB也是放在内存中的,如果PCB太大,有些系统把PCB中一些不重要的信息放在外存中。
进程执行速度的制约
并 发进程由于共享系统内部资源,因此导致进程执行速度上的制约,这种制约分为:间接制约与直接制约。间接制约引起进程之间的互斥执行,直接制约引起进程间的 同步执行。例如一个家里如果只有一个卫生间,卫生间这个公有资源使得每个人只能互斥使用它,这就是间接制约。而直接制约是指并发进程各自执行的结果互为对 方的执行条件,例如司机与售票员的关系,当司机到站停车后,售票员才能开门,而只有售票员关门后,司机才能开车,他们之间是同步的。进程的互斥与同步可以 很好的通过信号量和PV原语来实现。
从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的程序员也只能通过驻留内存的方式实现所谓的"多任务",而如今的Win32操作系统却可以一边听音乐,一边编程,一边打印文档。
理解多线程及其同步、互斥等通信方式是理解现代操作系统的关键一环,当我们精通了Win32多线程程序设计后,理解和学习其它操作系统的多任务控制也非常容易。
因此,学习Win32多线程不仅对理解Win32本身有重要意义,而且对学习和领会其它操作系统也有触类旁通的作用。
进程与线程
进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。而进程则不同,它是程序在某个数据集上的执行,是一个动态实体。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消,反映了一个程序在一定的数据集上运行的全部动态过程。
线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位。线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退 出并清除。线程可与属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数 器、一组寄存器和栈)。
- 进程和线程的概念和区别
- 进程和线程的概念和区别
- 进程和线程的概念及区别
- 线程与进程的概念和区别
- 进程和线程的概念
- 进程和线程的概念
- 进程和线程的概念
- 进程和线程的区别,作业,程序,管程等概念
- 进程和线程的概念、区别与联系
- 进程和线程定义,概念,区别详解
- 进程和线程概念
- 进程和线程概念
- 进程和线程的区别
- 进程和线程的区别
- 进程和线程的区别
- 进程和线程的区别
- 进程和线程的区别
- 进程和线程的区别
- 前端构建工具gulp入门教程
- OV9650摄像头驱动略析
- iOS开发提高效率之:使用CocoaPods管理依赖库
- XCode中调整字体大小
- 淘宝奇门接口PHP例子
- 进程和线程的概念和区别
- mktime为什么这么慢
- SQLServer中统计所有表记录数
- linux 各种桌面环境图片一瞥
- AngularJS模块加载
- ReactiveCocoa & MVVM
- 使用ajaxfileupload插件笔记
- php页面防止刷新代码
- openwebrtc build framework (Building OpenWebRTC with Cerbero)