关于进程和线程的一些总结

本文详细介绍了进程和线程的概念,包括它们的状态、资源分配、共享与通信。进程是操作系统资源分配的基本单位,拥有独立的地址空间;线程则是执行的基本单位,线程间共享进程资源。多线程可以提高CPU利用率,但存在线程切换开销和同步问题。浏览器中的Firefox是单进程,Chrome是多进程。线程池则用于管理和重用线程对象,通过互斥锁和信号量实现线程间的同步与通信。
摘要由CSDN通过智能技术生成

进程是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,至少有5种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。

进程负责为程序的运行提供必备的环境,是操作系统资源分配的基本单位。

线程是进程内的一个独立的执行单元,是程序执行的一个完整的流程,是任务(CPU)调度和执行的基本单位,线程负责执行进程中的程序。

应用程序必须运行在某个进程的某个线程上,一个进程中至少有一个运行的线程:主线程在进程启动后自动创建;一个进程中的数据可以供其中的多个线程直接共享,多个进程之间的数据是不能直接共享的。

线程可与同属一个进程的其他线程共享进程所拥有的全部资源,比如计算机里的中央处理器,内存,文件,网络等。

一个程序可能有一个进程也可能有多个进程,比如Chrome浏览器就可以有多个进程,这样的程序叫多进程程序。

线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

一个进程内可以有多个线程运行,则这个程序是多线程的,如果只能有一个线程运行就是单线程程序。

多进程:一个应用程序可以同时启动多个实例运行。

多线程:在一个进程内,同时有多个线程运行。

多线程的优点是能有效的提高CPU的利用率。

多线程的缺点是创建多线程需要开销,(单核创建两个线程在某个时刻只能执行其中的一个线程,只能在线程间跳转运行),线程间切换开销,死锁与状态同步问题。

单线程的优点: 顺序编程,简单易懂。

单线程的缺点: 效率低。

JS是单线程(但是H5中的Web Workers提供多线程运行服务),主流的程序如java是多线程。

浏览器是多线程运行的。

有的浏览器是单进程运行的,如:Firefox,老版IE;有的浏览器是多进程运行的,如:Chrome,新版IE。

在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换开销小。

内存分配方面: 系统在运行的时候会为每个进程分配不同的内存空间,而对线程而言,除了CPU之外,系统不会为线程分配内存,线程所使用的资源来自于其所属进程的资源。

进程之间共享信息可通过TCP/IP协议,线程间共享信息可通过共用内存。

线程没有自己独立的地址空间。一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都会死掉,多进程的程序比多线程的程序健壮。

线程池:保存多个线程对象的容器,实现线程对象的反复利用。

进程使用的内存地址可以上锁,即一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。-“互斥锁”(防止两个线程同时读写某一块内存区域)

进程使用的内存地址可以限定使用量。-“信号量”(保证多个线程不会互相冲突)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值