-
区别:
- 进程是资源分配单位,线程是CPU调度单位
- 进程拥有一个完整的资源平台,而线程只独享指令流执行的必要资源,如寄存器和栈
- 进程,线程具有就绪,等待,运行三种基本状态和状态间的转换关系
- 线程能减少并发执行的时间和空间开销:线程的创建,终止时间比进程短,同一进程内的线程切换比进程短,由于同一进程中的各线程共享内存和文件资源,可不通过内核进行直接通信
- 进程能并发执行,提高资源利用率和系统吞吐量;线程提高并发执行的程度,减小开销,进一步提高资源的利用率和系统吞吐量。
线程同步机制:
- 互斥量, 采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。
- 信号量,允许同一时刻多个线程来访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量。
- 事件,通过通知操作的方式来保持多线程同步,还可以方便实现多线程优先级的比较作。事件为内核对象
- 临界区,任意时刻只运行一个线程,其余线程阻塞,属于进程维护
进程同步机制:
- 信号量PV操作
- 管程
- 硬件同步
线程通信:
- 锁,互斥锁,读写锁,条件变量
- 信号量
- 信号
线程间的通信主要用于线程同步,故无用于数据交换的通信机制。
进程通信:
- 管道,半双工,数据单向流动,且只能在父子进程间使用
- 有名管道,打破只能父子进程的限制
- 信号量,锁,主要用于同步与互斥
- 消息队列,由消息组成的链表,消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。
- 信号,用于通知接收进程某一事件发生
- 共享内存,由一个进程创建,多个进程都可以访问
- 套接字
-
主要采用B+Tree实现。MyISAM的数据文件与索引文件分离,InnoDB数据文件本身就是索引文件。
应在这些情况下加索引更优:
- 主键上
- 经常搜索的列上,经常需要排序的列上
- 外键上,加快连接速度
- 经常需要条件判断(where)的列上,加快条件判断的速度
-
强引用,软引用,弱引用,虚引用
-
OSI
- 物理层:以二进制数据形式在物理媒体上传输数据。
- 数据链路层:传输有地址的帧以及有错误检测功能。
- 网络层:为数据包选择路由。
- 传输层:提供端对端的接口。
- 会话层:解除或建立与别的接点的联系。
- 表示层:数据的表示、压缩和加密
- 应用层:文件传输,电子邮件,文件服务,虚拟终端。
TCP/IP
- 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。
- 网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收)。
- 传输层:提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。
- 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
交换机位于数据链路层,路由器位于网络层