测试需要了解的进程与线程
2020-06-05 07:38
99 查看
# 进程与线程
基本概念
进程
- 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础
线程
- 线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
状态
进程
-
就绪状态
进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。
运行状态
-
进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。
阻塞状态
-
由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理器资源分配给该进程,也无法运行。
线程
-
新线程态
产生一个Thread对象就生成一个新线程。当线程处于"新线程"状态时,仅仅是一个空线程对象,它还没有分配到系统资源。因此只能启动或终止它。任何其他操作都会引发异常。例如,一个线程调用了new方法之后,并在调用start方法之前的处于新线程状态,可以调用start和stop方法。
可运行态
-
start()方法产生运行线程所必须的资源,调度线程执行,并且调用线程的run()方法。在这时线程处于可运行态。该状态不称为运行态是因为这时的线程并不总是一直占用处理机。特别是对于只有一个处理机的PC而言,任何时刻只能有一个处于可运行态的线程占用处理 机。Java通过调度来实现多线程对处理机的共享。注意,如果线程处于Runnable状态,它也有可能不在运行,这是因为还有优先级和调度问题
阻塞与非运行态
-
当以下事件发生时,线程进入非运行态。
①suspend()方法被调用;
②sleep()方法被调用;
③线程使用wait()来等待条件变量;
④线程处于I/O请求的等待。
死亡态
-
当run()方法返回,或别的线程调用stop()方法,线程进入死亡态。
进程与线程的区别
地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性
调度和切换:线程上下文切换比进程上下文切换要快得多
在多线程OS中,进程不是一个可执行的实体
同步与异步
同步
- 同步:可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。同步,就是实时处理(如打电话)
- 同步在一定程度上可以看做是单线程,这个线程请求一个方法后就待这个方法给他回复,否则他不往下执行
异步
- 异步:执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。异步,就是分时处理(如收发短信)
- 异步在一定程度上可以看做是多线程的(废话,一个线程怎么叫异步),请求一个方法后,就不管了,继续执行其他的方法
相关文章推荐
- 常见的进程和线程知识了解
- 你真的了解:IIS连接数、IIS并发连接数、IIS最大并发工作线程数、应用程序池的队列长度、应用程序池的最大工作进程数 吗?
- asp 性能测试报告 学习asp朋友需要了解的东西
- 你需要了解的前端测试“金字塔”
- 你需要了解的前端测试“金字塔”
- (二)了解CPU、GPU、进程、线程、CUDA
- python爬虫番外篇(一)进程,线程的初步了解
- 编写线程需要了解的知识
- 了解线程和进程
- 从自动化测试到持续部署,你需要了解这些
- 做自动化测试之前需要了解的
- 线程,进程知识点回顾,总有你需要的(面试必备!)
- 用Python搭建自动化测试框架,我们需要组织用例以及测试执行,这里博主推荐Python的标准库——unittest。 unittest是xUnit系列框架中的一员,如果你了解xUnit的其他成员,那
- 了解Linux的进程与线程_转载
- [转载]了解Linux的进程与线程
- python 测试 进程与线程 执行效率对比(io与计算程序)
- 帮助了解当前线程/进程/系统效能的API
- 化繁为简了解进程与线程
- asp 性能测试报告 学习asp朋友需要了解的东西
- 做好性能测试需要了解的知识汇总