并发和并行
高并发: 提高了系统的利用率
并行: 多核计算机同时运行多个进程或线程, 提高了性能
进程和线程
进程是资源分配单位, 线程是CPU分配单位
进程调度开销大, 线程调度开销小
进程拥有独自的数据区,程序区, PCB, 线程只拥有独自的寄存器
线程从属于进程, 线程会影响进程
线程通讯简单(锁, 公共内存空间), 进程通讯socket, PIPE等
server使用线程提高效率: 组件线程池, sleep之. 当有链接时唤醒一个线程
vfork() 数据段写时复制, 只运行子进程
孤儿进程: 没有父进程
僵尸进程: 自己死掉之后仍然有部分PCB等待父进程接收, 但是没接受
锁
互斥锁: 同一时间只有一个线程在访问临界资源
读写锁: 写优先, 独占. 读共享
自旋锁: 获取失败的时候持续等待
Read-Copy-Update: 对于写者, 先读出来, 然后复制到其他地方, 修改后再写回. 对于读者没有负担
死锁条件: 临界资源, 请求保持, 不剥夺, 循环等待
程序的内存结构
环境变量
栈(函数局部变量)
堆(malloc变量)
静态数据
指令区
用户态 系统态
用户态权限低. 系统态(中断, 系统调用, 异常)权限高
虚存
解决了物理空间不足的问题
多个程序共用物理内存
公平性
虚存缓解物理碎片的问题
段页式管理
页是一样的大小, 可能尾部有碎片,每次分配一页
段是按照程序设计者设计的大小, 可以实现共享, 但是不同段之间会有碎片, 利用的话需要移动内存操作
根据虚拟地址的高位得到页数, 得到页内基地址和低位结合成为物理地址
缺页时引发中断: 保护现场- 检查中断类型-使用中断函数-恢复现场-继续执行当前指令
页替换: FIFO,LRU(栈实现)










网友评论