[TOC]
## 进程
* 计算机的程序关于某数据集合上的一次运行活动
* 系统进行资源分配和调度的基本单位
* 三态模型:
* * 运行:当进程在处理机上运行时,此状态的进程数目小于等于处理器的数目
* * 就绪:当进程获得除处理机以外的一切资源时,由时间片用完进入该状态排入低优先级队列;由`I/O`操作完成是进入该状态排入高优先级队列;
* * 阻塞:等待或睡眠,进程暂停运行
* 五态模型:
* * 新建态:进程刚刚创建未被提交,等待系统创建进程的所有必要信息
* * 活跃就绪/静止就绪:
* * * 活跃就绪:指进程在主存里面并且可以调度的状态
* * * 静止就绪(挂起就绪):进程被对换到辅存时的就绪状态,是不能直接被调度的状态
* * 运行
* * 活跃阻塞/静止阻塞:
* * * 活跃阻塞:进程已在主存,一旦等待的事件产生便进入活跃就绪状态
* * * 静止阻塞:进程切换到辅存时的阻塞状态,等待的事件产生进入静止就绪状态
* * 终止态:进程已结束运行,回收除进程控制块之外的其他资源
## 线程
* 轻量级进程,是程序执行流的最小单元
* 是进程中的一个实体,被系统调度和分派的最小单位
* 与同进程中的其它线程共享进程所拥有的全部资源
* 一个线程可以创建和撤销另一个线程,同一个进程中的多个线程可以并发执行
* 每个程序至少有1个线程
* 状态
* * 就绪:线程具备运行的所有条件,逻辑上可以运行,等待处理机
* * 阻塞:线程等待一个事件,逻辑上不可执行
* * 运行:线程占用处理机正在运行
## 协程
* 用户态的轻量级线程,协程的调度完全有用户控制
* 协程拥有自己的寄存器上下文和栈。
* 协程调度切换时,将寄存器上下文和栈保存到其他地方,切回来,在恢复。
* 直接操作栈基本没有内核开销
* 可以不加锁访问全局变量
## 进程和线程的区别
1. 线程是进程内的一个执行单元,进程至少有一个线程,它们共享进程的地址空间,而进程有自己的独立地址空间
2. 进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
3. 线程是处理器调度的基本单位,但进程不是
4. 进程和线程均可并发执行
## 线程和协程的区别
1. 一个线程可以多个协程,一个进程也可以单独拥有多个协程
2. 线程进程都是同步机制,而协程是异步
3. 协程能保留上一次调用时的状态,每次过程重入时,就相当于进入上一次调用的状态
>* 多进程
>* * 系统允许两个或以上的进程处于运行状态,就是多进程
>* * 多开一个进程,多分配一份资源,进程间通讯不方便
>* 多线程
>* * 线程就是把一个进程分为很多片,每一片都可以是独立的流程
>* * 与多进程的区别是只会使用一个进程的资源,线程间可以直接通信
## 同步阻塞
* 最早通过多进程、多线程来解决并发IO问题
* 一个请求创建一个进程,然后子进程进入循环同步阻塞与客户端连接,收发处理数据
- 简介
- PHP
- 字符串函数
- 数组函数
- 正则
- 加密函数
- 面向对象
- 关键字
- 设计模式
- 魔术方法
- 机制扩展
- 会话机制
- PHP框架
- laravel
- 问题
- swoole
- easyswoole
- workerman
- 数据库
- Sphinx
- MongoDB
- MemCache
- Redis
- 基础操作
- 数据类型
- 持久化
- 分布式锁
- 内存模型
- redis高级特性
- MySql
- 基础操作
- 数据类型
- 数据表引擎
- 锁机制
- 事务处理
- 存储过程
- 触发器
- 索引
- 关联查询
- 分析SQL语句-优化查询
- 分区分表
- 主从复制
- MySql安全性
- 网络协议
- HTTP
- header详解
- 状态码
- nginx-配置
- 逻辑算法
- 时间和空间复杂度
- 常见算法
- 数据结构
- 核心
- 进程、线程、协程
- 存储容量-计量单位
- 开发软件及配置
- 版本控制器
- Git
- Fidder
- Fidder-Android7
- 自动化部署
- Jenkins
- supervisor
- Elasticsearch
- LogStash
- RabbitMQ
- AB测试
- JAVA-JDK
- FileBeat
- PhpStorm
- Composer
- Linux
- API安全
- 高并发及大流量相关概念
- 网站优化
- WEB
- Electron