一、堆和栈
栈是一种先进后出的数据结构,是由操作系统分配的,是规整的,分配和释放都由操作系统完成,使用方便
堆的使用比较自由,由程序员自己分配,容易产生内存碎片,访问速度比较慢
栈在一级缓存中,堆在二级缓存中,所以一般栈访问更快
一级缓存主频和cpu相同,更高效,但是容量小,价格贵
二、进程和线程
进程就是一个运行的程序,是系统资源分配的基本单位
线程是cpu调度的基本单位
一个线程不拥有资源,他们拥有的资源都是属于进程的,但是不同的线程的运行栈和程序计数器是独立的
进程切换开销大于线程
三、进程间通信方式
1.管道
管道是半双工工作方式,数据只能单向流动,通常用于父子进程之间。
例如项目中的canal连接mysql到ElasticSearch
2.信号量
3.信号
4.消息队列
5.共享内存
是最直接最快的通信方式,例如Nginx中master进程和worker进程之间的访问
6.套接字
可以用于不同设备间的通信