一:linux进程概念
一个程序的执行:一个program需要执行时会将program的一个副本装载进内存;此时会生成一个process,process工作时会发起system call,内核通过优先级队列来挑选一个最优先的进程分配时间片去CPU上执行。
内核负责:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等
program:程序,在磁盘上的一段代码
process:进程,运行中的程序的一个副本
system call:系统调用
模式切换:用户模式(CPU执行用户进程代码) <---> 内核模式(CPU执行内核代码)
时间片:一个CPU同一时间只可以做一件事,但是我们需要计算机可以为我们处理多种事情,所有就把CPU的计算力按时间来切片;比如给每个进程5ms的执行时间,由于中间切换时间太短,我们感觉不到中间的切换,让我们感觉是同时来处理多个任务。
保存现场:进程在CPU上运行在时间片用完时或被中断时但是它的任务还没有完成,这时就需要把自己的任务进度保存下来。
恢复现场:没有执行完的进程又一次轮到它执行时,它需要恢复到上次没有处理完的地方继续进行。
生命周期:进程由它的父进程创建生成,完成它的使命后由它的父进程销毁,此为生命周期。
task struct:linux内核存储进程信息的数据结构格式。
任务链表:task list,多个任务的task struct组成的链表。
软中断:软中断是由进程产生的。
硬中断:硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。
进程创建:每一个进程都是由夫进程创建,fork(),clone()
CoW:写时复制,子进程在没有发生数据改变时是和它的父进程共用一个内存空间,在需要改变数据时才会复制一份数据到另一段内存空间。
init(systemd):初始化进程,是所有进程的父进程。在内核启动后生成
进程优先级:在计算机的世界中是绝对的不公平的,进程有优先级之分;linux中将优先级分为0-139等级
1-99:实时优先级,数字越大优先级越高
100-139:静态优先级,数子越大,优先级越高
Nice值:-20 -- 19,对应于100-139,对于普通用户只可以调低自己的优先级
过期队列:除了139个优先级队列外还有与之相对应的139个过期队列
内核挑选进程执行的方式:从0-139个队列中挑一个优先级高的执行,如果时间片走完还进程还没有执行完就把该进程放到相应的优先级的过期队列中;该优先级队列中的进程全部执行一次之后再把该优先级过期队列中的进程放回优先级队列,再从次优先级队列中挑选进程执行,直到该队列中的进程全部执行完成后再执行下一级优先级队列中的进程,依次类推。
Big(O):衡量算法的复杂度;随着任务复杂度的上升,所消耗时间的走向
LRU算法:
每一个数据在放入内存中的时候都在在第一个,旧的数据往下排,如果旧数据被调用后重新放到第一个,如果没有被用到的数据将被淘汰。
Page Frame:页框,把物理内存分成N个页框,用于存储页面数据
线性地址空间:进程启动时内核会分配一个虚拟内存空间,但实际上没有那么大的内存,进程用的时候内核实时将页框分配给进程使用。
物理地址空间:真正的内存空间
MMU:内存管理单元,管理线性地址空间和物理地址空间的转换映射的分配关系
常驻内存集:不可被交换到swap
虚拟内存集:可以被交换到swap
IPC:Inter Process Communication 进程间通信
同一主机:
signal:信号
shm:shared memory共享内存
semerphor:旗语
跨主机
rpc:remote procecure call 远程过程调用