并行: 借助多核 cpu 实现。 (真并行)
并发:
宏观:用户体验上,程序在并行执行。
微观:多个计划任务,顺序执行。在飞快的切换。轮换使用 cpu 时间轮片。 【假 并行】
进程并发:
程序:编译成功得到的二进制文件。 占用 磁盘空间。 死的 1 1
进程:运行起来程序。 占用系统资源。(内存) 活的 N 1
进程状态:
- 初始态:内存申请,变量声明等
- 就绪态:等待CPU分配时间片
- 运行态:占用CPU,执行运算等操作
- 挂起(阻塞)态:①当时钟滴答到来,被强制执行中断 ②等待除CPU之外其他资源(例如:IO)的时候,主动放弃CPU
-
终止(停止)态:进程终止
孤儿进程:
僵尸进程:
线程并发:
线程:在linux上面本质还是进程,LWP 轻量级的 进程。最小的执行单位。 —— cpu分配时间轮片的对象。所以开辟了线程,则CPU分配抢占会多一点,可以提高并发。
进程: 最小的系统资源分配单位。
32位和64位内存地址:
- 2^32=计算结果是4G左右的值,所以32位系统内存条一般都是4G以下
- 2^64=16777216TB
同步:
协同步调。规划先后顺序。
线程同步机制:
协程:
- 轻量级的线程
- 在线程挂起阻塞的时候,能做一些其他操作
对比线程协程:
- 线程是为了提高争夺CPU概率,提高执行速度
- 协程是为了提高执行效率
总结:
进程、线程、协程 都可以完成并发。
稳定性强、节省资源、效率高。
老板——手机:
生产线 —— 设备、材料、厂房 —— 进程。(资源分配单位)
工人 —— 线程。 —— 单进程、单线程的 程序。
50 工人 —— 50 线程。 ——单进程、多线程的 程序。
10 条生产线 —— 500 工人 —— 。多进程、多线程的 程序。
利用闲暇时间义务搬砖 —— 协程。—— 多进程、多线程、多协程 程序。