济南建设集团招聘信息网站,网页跟网站的区别,外贸网站建设哪家公司好,wordpress区块编辑器进程状态Linux进程状态Linux进程状态进程描述R运行状态S睡眠状态D磁盘休眠状态T停止状态t被追踪状态(调试状态)X死亡状态Z僵死状态其实大致也就可以分为三种运行#xff0c;阻塞#xff0c;挂起。运行状态每个cpu里都有一个运行队列#xff0c;进程在运行队列里#xff0c;…进程状态Linux进程状态Linux进程状态进程描述R运行状态S睡眠状态D磁盘休眠状态T停止状态t被追踪状态(调试状态)X死亡状态Z僵死状态其实大致也就可以分为三种运行阻塞挂起。运行状态每个cpu里都有一个运行队列进程在运行队列里不管他是否正在被运行。这种进程就属于运行状态也就是运行态在Linux系统中就是R状态。cpu里有一个函数叫调度器当一个进程要运行的时候有调度器上传cpu既可以运行该进程了。一个进程不是在cpu里一直运行直到该进程运行完毕。而是运行一段时间无论你是否运行完毕都要退出。这个时间叫时间片。假设时间片是10毫秒每个进程都只能运行10毫秒然后后下来排队其他进程运行。所以在一段时间内每个进程都可以运行。这种情况叫并发执行一个cpu一段时间内多个进程都运行了。大量把进程从cpu上拿下来放上去就叫进程切换阻塞状态当一个进程为了等待某种资源时而处于等待状态的进程就属于阻塞状态一般是放到等待队列里。比如一个进程需要等待键盘设备操作系统考虑到既然该进程需要依靠其他进程或者数据等才能运行就不会把它放到运行队列中。而是会把它放到等待队列中直到他需要的进程或者数据等准备好了才会把该进程放到运行队列。此时该进程的状态就是阻塞状态。挂起状态还是刚刚那个情景该进程需要等待键盘外设可是突然内存资源严重不足。操作系统就会把该进程的代码和数据放到磁盘上减轻内存压力只保留PCB。此时该进程的状态就是挂起状态更准确说是阻塞挂起状态因为PCB还是保留在等待队列中。有些地方会把挂起状态进行很多分类。其实都是挂起状态记一个就好。当一个进程的PCB保留在内存中代码和数据却在磁盘上此时该进程就是挂起状态。接下来我们看看Linux进程状态的分类R运行状态一般情况是查不到这个状态的。因为CPU的运行特别块你几乎察觉不到是瞬时的。S和D分别时浅度睡眠和深度睡眠两种状态浅度睡眠可以被唤醒深度睡眠除了断电没有办法阻止。咱们先不管他是什么深浅睡眠既然是睡眠状态那就表明该进程目前不运行当这个进程是为了等待某种资源而进入睡眠那他就是阻塞状态。但是如果他就是单纯的进入睡眠状态不是为了等待某种资源那他就是普通睡眠状态。
sleep(1)使用sleep函数可以使进程进入浅度睡眠那什么是深度睡眠呢深度睡眠是指当进程在执行某项重要任务时不可以突然的终止执行为了防止资源泄露等问题给该进程了一种权限谁也不可以终止该进程直到该进程运行完毕即使该进程为了等待硬件的资源而处于等待队列里也不可以终止该进程。比如io流输出的时候向磁盘写入的时候。注意操作系统也不可以终止该进程。T和t两种状态分别是停止状态和被追踪停止状态T状态可以通过SIGSTOP信号停止进程通过SIGCONT信号继续运行。t状态一般就是gdb调式的时候可以任意打断点停止进程。X是死亡状态就是进程被杀死时状态是瞬时的一般查不到。Z是僵尸状态当一个进程结束运行时会短暂处于这个状态等待父进程回收。如果该父进程一直不回收那子进程就一直处于Z状态该进程也叫僵尸进程操作系统会一直维护这个进程如果僵尸进程过多就会导致内存资源浪费内存泄漏等等孤儿进程当一个子进程的父进程提前退出而子进程却在运行的时候此时该进程就是孤儿进程。因为他没有父进程回收这会导致内存泄漏。操作系统为了处理这个麻烦就会让1号进程回收该进程比如bash命令行。进程的其他概念竞争性系统进程数目众多而CPU资源只有少量甚至1个所以进程之间是具有竞争属性的。为了高 效完成任务更合理竞争相关资源便具有了优先级独立性多进程运行需要独享各种资源多进程运行期间互不干扰并发多个进程在1个cpu采取进程切换在一段时间内让多个进程得以推进进程切换使用到两个队列当时间片完一个进程无论是否执行完都要切换另一个队列。并行多个进程在多个cpu同时进行cpu里的寄存器两个问题函数返回值如何获取通过寄存器存储获取。系统如何得知进程执行情况程序计数器pc,eip记录进程执行指令的下一行指令地址。本质是寄存器常见寄存器有eaxecxebxedx关于栈的寄存器有ebpesp指令寄存器eipcpu里的寄存器记录正在运行的进程数据。我们把这种数据叫做上下文。简单说就是上下文就是寄存器记录的进程相关数据。当进程退出的时候需要把他的上下文数据保存并带走。保存的目的是为了恢复因为进程再次运行的时候需要从上次运行的地方继续运行。