
内存管理
OOM会根据算法选择一个占用物理内存较高的进程然后杀掉,然后如果还不行会再杀,直到释放足够的内存位置。OOM会根据进程得分去选择,进程得分与进程已经使用的物理内存页面数和校准值oom_score_adj决定,值越大越容易被kill掉。
NUMA架构是非一致性存储访问结构,将CPU进行分组为一个Node,访问远端的CPU比访问同组的CPU慢的多。如果内存不够,可以去回收内存。
Linux和MySQL对预读失效和缓存污染问题的处理方法类似,Linux创建2个链表active和inactive链表,而Mysql
则是划分young区域和old区域。
进程管理
进程就是一个运行中的程序,执行在内核态,是操作系统中资源分配和调度的基本单位。每个进程都有独立的内存空间和堆栈寄存器,不与其他进程共享。进程不等同于程序,程序是由多个进程组成,分别负责不同的事。
线程是进程中的一个执行单元,是CPU调度和分派的基本单位,共享进程的内存空间,有独立的堆栈寄存器,存在数据竞争和互斥的关系,需要有同步和互斥机制。
协程是作用在用户态的轻量级线程,完全由用户程序控制,不需要内核参与,与其他协程共享堆内存,无需进行上下文切换,开销很小。但是需要显式调度与处理比较复杂。
并发指的是在一段时间内,各个进程时分复用了资源,而并行则是每个进程同时处理资源。
进程基本的三态(就绪,运行,阻塞),还有创建和结束态。挂起状态指的是进程没有使用物理内存,在阻塞时和就绪时都会挂起程序。除此之外还有主动挂起,如sleep和ctrl+z。运行态在时间片执行完毕会转入就绪态,而需要等待某个事件时则会进入阻塞态,阻塞态需要经过就绪态才能进入运行态。
进程通过进程控制块PCB来描述进程,是标识进程存在的唯一标识。包括进程描述信息(进程标识符,用户标识符),进程控制和管理信息(进程当前状态,进程优先级),资源分配清单和CPU相关信息。PCB是通过链表组织在一块,组成各种队列的。
终止进程中,如果子进程终止时,从父进程继承的资源要交还给父进程,而如果父进程终止了之后,子进程会变成孤儿进程,被1号进程收养。
CPU的上下文指的是CPU寄存器和程序计数器(存放到下一个任务的地址)。进程的上下文指的是虚拟内存,栈,全局变量等用户空间资源和内存堆栈,寄存器等内核空间资源。会把交换的信息放到PCB中,再从PCB拿出来归还给CPU执行。
OOM会根据算法选择一个占用物理内存较高的进程然后杀掉,然后如果还不行会再杀,直到释放足够的内存位置。OOM会根据进程得分去选择,进程得分与进程已经使用的物理内存页面数和校准值oom_score_adj决定,值越大越容易被kill掉。
NUMA架构是非一致性存储访问结构,将CPU进行分组为一个Node,访问远端的CPU比访问同组的CPU慢的多。如果内存不够,可以去回收内存。
Linux和MySQL对预读失效和缓存污染问题的处理方法类似,Linux创建2个链表active和inactive链表,而Mysql
则是划分young区域和old区域。
进程管理
进程就是一个运行中的程序,执行在内核态,是操作系统中资源分配和调度的基本单位。每个进程都有独立的内存空间和堆栈寄存器,不与其他进程共享。进程不等同于程序,程序是由多个进程组成,分别负责不同的事。
线程是进程中的一个执行单元,是CPU调度和分派的基本单位,共享进程的内存空间,有独立的堆栈寄存器,存在数据竞争和互斥的关系,需要有同步和互斥机制。
协程是作用在用户态的轻量级线程,完全由用户程序控制,不需要内核参与,与其他协程共享堆内存,无需进行上下文切换,开销很小。但是需要显式调度与处理比较复杂。
并发指的是在一段时间内,各个进程时分复用了资源,而并行则是每个进程同时处理资源。
进程基本的三态(就绪,运行,阻塞),还有创建和结束态。挂起状态指的是进程没有使用物理内存,在阻塞时和就绪时都会挂起程序。除此之外还有主动挂起,如sleep和ctrl+z。运行态在时间片执行完毕会转入就绪态,而需要等待某个事件时则会进入阻塞态,阻塞态需要经过就绪态才能进入运行态。
进程通过进程控制块PCB来描述进程,是标识进程存在的唯一标识。包括进程描述信息(进程标识符,用户标识符),进程控制和管理信息(进程当前状态,进程优先级),资源分配清单和CPU相关信息。PCB是通过链表组织在一块,组成各种队列的。
终止进程中,如果子进程终止时,从父进程继承的资源要交还给父进程,而如果父进程终止了之后,子进程会变成孤儿进程,被1号进程收养。
CPU的上下文指的是CPU寄存器和程序计数器(存放到下一个任务的地址)。进程的上下文指的是虚拟内存,栈,全局变量等用户空间资源和内存堆栈,寄存器等内核空间资源。会把交换的信息放到PCB中,再从PCB拿出来归还给CPU执行。


