多任务:
单核Vs多核
并发:
并行:
进程:运行中的程序
特点:
优缺:
进程状态:
进程的控制结构
pcb
包含了进程什么信息:
如何组织信息:
进程的控制
创建进程:
终止进程:
阻塞进程:
唤醒进程:
回收进程资源
为什么要回收资源:
僵尸与孤儿:
进程的上下文切换
切换内容:
切换的场景:
进程的调度
调度程序:
阻塞运行态进程后,选择一个进程运行,称为调度程序
调度时机:
调度原则:
原则一:不然cpu空闲
原则二:提高吞吐率
原则三:避免周转时间长
原则四:进程等待时间
原则五:响应时间
调度算法
先来先服务:
短时间优先:
高响应比优先:
时间片轮转:
高优先级优先:
多级反馈:
进程的通信
管道,消息队列,共享内存,信号量,信号,socket。
进程的通信
管道
如何创建,原理:
缺点:
消息队列
原理:
缺点:
存在用户态到内核态的数据拷贝
共享内存
原理:
解决了:
缺点:
信号量
原理:
解决什么
解决过程
信号
作用:
用法:
socket
函数原型
TCP与UDP在socket的过程:(引出网络编程)
线程:是进程中执行的一条流程
特点:
优缺:
有了进程为什么用线程:
线程的共享资源问题
线程的同步
线程的创建
函数原型:
线程的状态
进程与线程的比较
单位,资源,状态,时间
为什么线程开销小
时间:
空间:
cpu的上下文切换
作用:
进程的上下文切换
切换内容:
切换的场景:
线程的上下文切换
同一进程?
线程的三种实现方式
用户线程
是什么:
优缺点:
内核线程
是什么:
优缺点:
轻量级线程是什么。
线程同步的具体实现
为什么会发生竞争?
例如:
互斥的概念
为什么有互斥,原因?
同步概念
在关键点相互等待,互通消息,称线程同步:临界区的入口与结尾
同步与互斥都通过锁来实现
锁
忙等待锁:自旋锁
死循环实现
无等待锁
通过创建线程锁等待队列,先进先出
信号量
线程的同步互斥访问如何实现?
生成者消费者问题:
哲学家就餐问题:
读者与写者问题:
锁:不可避免的死锁问题
概念:
同时满足四个条件:
互斥条件
持有并等待条件
不可剥夺条件
环路等待条件
简单模拟死锁问题
工具定位死锁
linux:pstack<pid>:显示跟踪栈(函数的调用)
gdb
避免死锁:破坏其中一个条件。