本文简单阐述了进程与线程的关系,为了便于理解,本文也将简述CPU的工作原理。
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。或者说进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程则是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
进程和线程的关系:
(1)进程是 系统 进行 资源 分配和调度的基本单位,(而线程是进程的一个实体)线程是 CPU 调度和分派的基本单位;//系统与cpu???
(2)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
(3)进程中各个线程可以共享进程的资源,线程之间可以相互的控制(并发编程),而进程之间不能共享资源
(特殊情况除外,操作系统中有两个方法就就可以让一个进程直接去读取另外一个进程的内存,但是是高度保密的);
进程之间共享资源有相互的通信模式。
3:进程只是一个概念,他真是存在的实体是进程控制块(PCB),他存储进程的相关信息,创建一个进程就是创建一个进程控制块,销毁一个进程就是销毁该进程的进程控制块;进程控制块包含的信息:如进程的程序和数据在内存中中的起始地址等,进程的名字,进程的父亲,进程的儿子,进程调度信息(就绪,阻塞,执行等信息);
4:线程中也有TCP,线程控制块,线程的实体,线程中的tcb所保存的线程的状态比pcb的状态要多,因为tcp设计到各个线程之间的相互协调等。
5:进程间通信的三种方式:共享存储系统,消息传送系统,和管道系统;
(6)处理机分给线程,即真正在处理机上运行的是线程。
(7)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
打开你的任务管理器就能看到进程一栏。如下图
程序、线程、进程的树形关系图如下
操作系统的设计,因此可以归结为三点:
(1)以多进程形式,允许多个任务同时运行;
(2)以多线程形式,允许单个任务分成不同的部分运行;
(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。
例如我们在玩格斗游戏程序的时候,玩家1出拳时,玩家2格挡,这两个动作是同时发生的,所以此时涉及到了多线程,所以游戏进程要至少有两个线程,分别为出招和格挡。比如我们用QQ聊天,同时开着QQ音乐,此时大家感觉QQ聊天和QQ音乐是同时进行的,但是CPU在同一时间只能处理一件事情。
我想大家小的时候都应该看过或者很喜欢看一种漫画书,当你快速的翻阅那本书的时候,书上的人物好像动起来了一样,就是所谓的逐帧动画,CPU的处理事件的原理与其类似。
当你运行QQ聊天和QQ音乐的时候,CPU的工作就是不断的切换进程,如果每秒切换6次,你一定会觉得卡,如果切换的足够快,你将会感觉是同时在运行QQ音乐和QQ聊天。
结论:
(1)线程是进程的一部分
(2)CPU调度的是线程
(3)系统为进程分配资源,不对线程分配资源