本文简单阐述了进程与线程的关系,为了便于理解,本文也将简述CPU的工作原理。
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。或者说进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程则是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
进程和线程的关系:
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
(3)处理机分给线程,即真正在处理机上运行的是线程。
(4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
打开你的任务管理器就能看到进程一栏。如下图
程序、线程、进程的树形关系图如下
操作系统的设计,因此可以归结为三点:
(1)以多进程形式,允许多个任务同时运行;
(2)以多线程形式,允许单个任务分成不同的部分运行;
(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。
例如我们在玩格斗游戏程序的时候,玩家1出拳时,玩家2格挡,这两个动作是同时发生的,所以此时涉及到了多线程,所以游戏进程要至少有两个线程,分别为出招和格挡。比如我们用QQ聊天,同时开着QQ音乐,此时大家感觉QQ聊天和QQ音乐是同时进行的,但是CPU在同一时间只能处理一件事情。
我想大家小的时候都应该看过或者很喜欢看一种漫画书,当你快速的翻阅那本书的时候,书上的人物好像动起来了一样,就是所谓的逐帧动画,CPU的处理事件的原理与其类似。
当你运行QQ聊天和QQ音乐的时候,CPU的工作就是不断的切换进程,如果每秒切换6次,你一定会觉得卡,如果切换的足够快,你将会感觉是同时在运行QQ音乐和QQ聊天。
结论:
(1)线程是进程的一部分
(2)CPU调度的是线程
(3)系统为进程分配资源,不对线程分配资源
相关推荐
详细讲解进程和线程之间的区别,方便初学者能更深透的理解
安卓开发时候,绑定线程/进程到指定cpu 上面.可以直接使用一个gradle项目 直接跑起来看效果 adb shell ps -t -p -c
根据进程ID获取进程的内存使用量,CPU使用率,线程个数据信息,GetSysInfo
该文档为进程与线程的生动详细地理解,个人认为讲的非常好。形象生动。
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的...
c语言多进程多线程编程
进程和线程详解,比较详细的介绍了进程和线程详解的相关知识,对初学者有很好的借鉴
监控系统所有进程的CPU使用情况 显示CPU占用大于0的进程,定时刷新 可以查看当前系统运行的各进程cpu占用率 在CSDN上找到两个都不太好用,自己写了一个VS2013环境下编译通过 也可以直接运行\bin\Debug目录下的...
进程、线程和优先级 工作线程和用户界面线程 线程同步 线程通讯
简单例子说明如何使用C++实现获取指定线程的CPU使用率
linux 进程和线程编程 pipe --原始管道 命名管道 消息队列 信号量 内存共享 线程编程
通过观察、分析实验现象,深入理解线程及线程在调度执行和内存空间等方面的特点,并掌握线程与进程的区别。
CPU进程与线程的关系和区别.docx
为了描述程序在并发执行时对系统资源的共享,我们需要一个描述程序执行时动态特征的概念,这就是进程。在本章中,我们将讨论进程概念、进程控制和进程间关糸.
看过的最清楚的进程线程,进程和线程对比 根本不用大头书就可以理解透彻。
堆在操作系统对进程初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄漏。 栈:是个线程独有的,保存其运行状态和局部自动变量的。栈在线程开始的时候初始化,...
进程与线程的一个简单解释,教你简单区分程序设计过程中的进程与线程问题,有助于你对多线程编程的理解
Visual C++源代码 81 如何获取系统指定进程线程信息Visual C++源代码 81 如何获取系统指定进程线程信息Visual C++源代码 81 如何获取系统指定进程线程信息Visual C++源代码 81 如何获取系统指定进程线程信息Visual ...
鉴于网上和一些教材上对进程和线程说明不是很全面,在对这方面知识学习之后,进行了总结,对操作系统中进程与线程的关系和一些应用进行了整理,希望对有这方面需要的同道中人有所帮助。
讲解windows下的进程与线程之间的关系和API函数的基本操作