网站推广方式推荐,用php做网站需要什么,网站响应样式,机械厂做网站进程内部有那些数据 为什么创建进程的成本高 进程和线程
进程是资源分配的基本单位#xff0c;而线程是程序执行的基本单位#xff0c;一个是从资源分配的角度看#xff0c;另一个是执行角度。
那么进程和程序的区别是什么#xff1f; 程序#xff0c;一段代码#xff… 进程内部有那些数据 为什么创建进程的成本高 进程和线程
进程是资源分配的基本单位而线程是程序执行的基本单位一个是从资源分配的角度看另一个是执行角度。
那么进程和程序的区别是什么 程序一段代码一组指令的有序集合。 进程:程序的一次动态运行通过进程控制块唯一的标识这个进程。 进程:动态有资源有唯一标识有并发性; 程序:静 态无资源无唯一标识无并发性。 进程是操作系统从安全角度出发进行设计的隔离单位但是进程在使用的时候unix是通过fork先clone然后在使用这个设计其实不是很优雅。
线程的出现本质是为了解决同一个软件内会有多个任务的需求这些任务在相同的地址空间可以相关操作资源。
协程与goroutine
进程和线程其实对于大多数非高性能服务来说其实是没问题但是目前主流的互联网应用基本都是高性能网络服务。
正常情况下的线程模式 大多数的请求都是因为在存储这部分被阻塞其中包含如下
系统调用机制的开销数据多次拷贝 内核态到用户态线程的空间和时间成本。
而为了提升网络服务器的吞吐能力目前使用的是epoll基本就是通过IO多路复用机制实现少等待统一的一个线程查询谁处理完然后去通知处理。而本质是通过减少了线程。系统调用和内存拷贝并没有减少。
线程的成本 时间成本
切换本身的开销寄存器保存和恢复的成本调度开销同步与互斥成本
空间成本
执行体的执行状态TLS线程局部存储执行体的堆栈
所以综上所属协程解决的问题是
回归到同步IO的编程模式降低执行体的空间和时间成本
协程的本质就是用户态下的线程。 Go语言中goroutine。
堆栈自动增长没有线程局部存储同步、互斥和通信提供了重要的系统调用的包装
状态
进程状态
创建就绪运行阻塞
其实创建、就绪、运行比较好理解阻塞比较难理解 阻塞其实就是当进程需要等待网络IO或者本地IO的时候需要等待结果只能一直等待。
小结
本篇主要介绍了进程、线程、协程以及进程的状态其实和线程也是通用的。