当前位置: 首页 > news >正文

网站建设投资资金唐山市城乡建设局网站

网站建设投资资金,唐山市城乡建设局网站,网络营销推广方法是什么和什么的合理利用,wordpress 目录排序文章目录 进程的状态并行和并发物理和逻辑 时间片进程具有独立性等待的本质运行阻塞标记挂起等待 Linux下的进程状态#xff08;一#xff09;运行状态#xff08;R - running#xff09;#xff08;二#xff09;睡眠状态#xff08;S - sleeping#xff09;#xff… 文章目录 进程的状态并行和并发物理和逻辑 时间片进程具有独立性等待的本质运行阻塞标记挂起等待 Linux下的进程状态一运行状态R - running二睡眠状态S - sleeping三磁盘休眠状态D - disk sleep四停止状态T - stopped五僵死状态Z - zombie六孤儿进程 进程的状态 为了弄清楚正在运行的进程是什么意思我们需要先来了解进程的不同的状态代表着什么。在一个系统中进程可以有几个状态。但是在这之前我们要明确几个知识点来辅助我们进行理解。 并行和并发 并行Parallelism 定义多个进程在多个CPU下分别、同时进行运行。 需要有多个CPU核心或者多个处理器来支持。例如在一个具有四核CPU的计算机上可以同时运行四个进程每个进程在一个独立的CPU核心上运行它们之间互不干扰可以同时进行各自的任务处理。 并发Concurrency 定义指多个进程在一个 CPU 下采用进程切换的方式在一段时间之内让多个进程都得以推进。 操作系统通过快速地在多个进程之间切换CPU的执行权来实现并发。例如在一个单核CPU的计算机上同时运行着多个程序如浏览器、音乐播放器和文本编辑器等。操作系统会给每个进程分配一小段时间片在这个时间片内进程可以执行一些指令当时间片用完后操作系统会暂停该进程保存其当前的运行状态上下文然后切换到另一个进程执行如此循环往复给用户一种多个程序同时运行的感觉。因为CPU切换和运行的速度非常快且时间片足够小用户体会不到就会给用户一种多个程序同时运行的感觉 简单来说就是 CPU执行进程代码不是将一个代码执行完毕之后再开始执行下一个代码而是给每一个进程预分配出一个时间片基于时间片进行调度轮转单个CPU下 物理和逻辑 在这里想说一个小点物理层面上是一个CPU调度轮转多个进程。而在逻辑上我们可以将并发理解成假设4个进程并发在一个CPU上那么我们就可以理解成一个CPU被分成4份来使用就好比一个100分的CPU被分成4个25分的CPU。这种物理与逻辑上面的的不同是为了更方便来让我们理解计算机中抽象的概念像是堆的物理上数组来存储而逻辑结构是二叉树的特殊规则等。 时间片 在这里我们明确两种操作系统就可以 分时操作系统Linux/Windows民用级别的操作系统用的都是分时操作系统。 实时操作系统汽车的系统等。 至于原因在我们日常生活中所用的操作系统我们会同时进行很多任务而这些任务有没有明确的优先级所以为了调度任务的公平让所有任务都流畅的推进就采用分时操作系统。在汽车系统中安全相关的功能如刹车辅助系统、防抱死系统等需要实时操作系统的支持。这些系统必须能够在极短的时间内对传感器检测到的危险信号做出反应例如当车辆的传感器检测到前方有障碍物需要紧急刹车时刹车系统相关的进程必须立即获得 CPU 资源进行制动操作而不能等待其他非关键任务如音乐播放、导航等的时间片结束总不能CPU说等会等音乐的时间片过去的我再进行刹车系统(▽)。同时在汽车系统中一些非安全关键的功能如多媒体播放、导航等可以采用分时操作系统来运行以充分利用系统资源提高用户体验。 简单就是让大家更好的体会时间片这个概念。 进程具有独立性 进程的独立性是指在多进程运行环境下每个进程都具有以下特点 1. 资源独享 内存空间独立 每个进程都有自己独立的地址空间这意味着一个进程无法直接访问另一个进程的内存区域。例如进程 A 中的变量存储在其自身的虚拟地址空间内进程 B 无法直接读取或修改这些变量的值。这种内存空间的独立性是通过操作系统的内存管理机制来实现的操作系统会为每个进程分配一段独立的内存区域并通过地址映射等技术将虚拟地址转换为物理地址确保进程之间不会相互干扰。 其他资源独立 除了内存空间进程在使用其他系统资源时也具有一定的独立性。例如进程在使用文件资源时每个进程都有自己的文件描述符表用于记录该进程打开的文件信息。即使多个进程打开了同一个文件它们对文件的操作也是相互独立的各自维护自己的文件读写位置等信息。 2. 执行互不干扰 指令执行顺序独立 每个进程都按照自己的指令流顺序执行不受其他进程的影响。例如进程 A 可能正在执行一段循环代码而进程 B 可能在执行一个文件读取操作它们各自按照自己的程序逻辑推进不会因为另一个进程的存在而改变自己的执行顺序。 时间片分配独立 在操作系统采用时间片轮转调度算法的情况下每个进程获得的时间片是独立分配的。也就是说进程 A 的执行时间片用完后它会被暂停等待下一次时间片分配而这个过程与其他进程的时间片分配情况无关。 等待的本质 在操作系统中每一个CPU都有一个执行队列struct runqueue而struct runqueue里面包含队列属性其中有task struct *head在进程的算法中当我们启动一个进程我们就把新创建的进程tack_struct链入到task struct *head中当我们进程变多时会链接的越来越多而CPU在运行的时候会直接找到struct runqueue根据FIFO的调度算法会选择进程的代码地址放到CPU的寄存器中进行执行而执行完之后会将刚才执行的tack_struct链接到整个链表的尾部这样循环往复就形成基于时间片进行轮转的FIFO的调度算法如下图 运行 那么什么是一个进程处于运行状态呢 在之前我以为的是只有在CPU上运行的才是处于运行状态 通过上面的铺垫我们可以引出只要是在运行队列中的这个进程就是处于运行状态因为它已经是准备好的可以随时被CPU进行调度 阻塞 我们一般进程中我们的代码中大多数都会包含IO操作eg等待键盘数据读文件等等。以scanf为例在我们执行程序的时候到scanf时候但是我们并没有在键盘上输入任何数据的时候这个时候我们叫键盘数据没有准备好即用户没有按键盘那么此时CPU就不能一直执行这个程序所以这个程序就会进入阻塞状态中。 操作系统管理硬件和上面进程类似都是先描述在组织设计一个链表进行连接每个硬件如图 那么我的代码只有scanf当我们调用的时候他的内部一定是会封装调用的因为scanf的本质是访问键盘而管理硬件的是操作系统在整个的系统中只有操作系统最清楚硬件的状态那么说白了scanf的封装就是让操作系统查键盘的状态那么当键盘没有数据的时候我们的进程的状态就是阻塞。在类里面有一个等待队列task_struct *wait_queue就是说在查询硬件的状态的时候发现是没有数据的CPU就会将这个进程扔进等待队列简单理解就是CPU将这个进程从运行队列扔到我们的设备struct device中等待 所以我们把在设备上的等待状态叫做阻塞状态 而在之后用户想通了终于输入了操作系统就知道了就会把这个进程键盘中第一个等待进程从等待队列中取出再放到CPU上运行 标记 所以总结 综上所述运行和阻塞的本质就是将不同的进程处于不同的队列中 那么回到标题阻塞最直观的表现就是等待等待的本质就是连入目标设备CPU的不调度 挂起等待 前提当内存资源严重不足时 在操作系统读取运行队列的task_struck的时候进入阻塞状态那么这个进程被扔进struck device的等待队列中但是在等待的期间你的这个进程根本不会被调度但是你这个进程的PCB占用一点内存和你的代码和数据相比较更加占用内存而在这个期间当内存资源严重不足时 所以操作系统为了保证自己的正常运行操作系统也是一个大的软件想到的一个解决方案那么在阻塞的进程即占用内存又不执行所以操作系统会选择这些 进程的代码和数据换出到磁盘当中 而当被换出的这个进程准备好之后操作系统不仅会把这个进程的PCB放到运行队列中改变状态还要把刚才换出的程序和数据换回来换入。而在磁盘中有一个区域是swap分区用来存放换出的所有数据。 所以一个进程一旦进入阻塞状态并且还被换出到磁盘中那么此时的状态就是挂起严格来说应该是阻塞挂起状态 1.所以阻塞挂起的目的就是内存严重不足时在阻塞这个状态的背景下通过将内存挂起到外设上面从而节省内存 2.更严重的时候还会有运行挂起就是把运行队列挂起到外设来缓解内存不足 3.我们从冯诺依曼体系可以知道内存的作用就是提升整机的速度这样挂起磁盘和内存交换数据必然会影响整体运行速度所以这是在用时间来换空间没有办法的办法 一般在正常的生产环境下swap的功能都会被禁掉因为空间不够生产环境可以加优化软件或者加服务器但是时间不行。一般机器在内存不足时候或者连挂起都解决不了的话为了保证操作系统正常运行会直接杀掉其他进程软件战术性闪退 Linux下的进程状态 上面我们学习的都是概念那么真正进入操作系统之后的状态不同的操作系统也不同 /* * The task state array is a strange bitmap of * reasons to sleep. Thus running is zero, and * you can test for combinations of others with * simple bit tests. */ static const char * const task_state_array[] { R (running), /* 0 */ S (sleeping), /* 1 */ D (disk sleep), /* 2 */ T (stopped), /* 4 */ t (tracing stop), /* 8 */ X (dead), /* 16 */ Z (zombie), /* 32 */ };一运行状态R - running 运行状态并不意味着进程一定在实际运行中。它表明进程要么正在CPU上执行指令要么在运行队列里等待被调度到CPU上执行。在Linux内核中这是一个动态的状态多个进程可能处于这个状态但只有一个进程能在某个时刻真正占用CPU资源。 二睡眠状态S - sleeping 睡眠状态意味着进程在等待某个事件完成。这种睡眠有时候也叫做可中断睡眠interruptible sleep。例如进程可能在等待用户输入、某个文件的读取完成或者网络数据的接收。当等待的事件发生时进程会被唤醒重新进入运行队列或者直接开始执行。 三磁盘休眠状态D - disk sleep 磁盘休眠状态有时候也叫不可中断睡眠状态uninterruptible sleep。处于这个状态的进程通常在等待I/O操作的结束比如磁盘写入或读取操作。在此期间进程不会被信号中断直到I/O操作完成。这是为了确保磁盘操作的完整性和数据一致性。 四停止状态T - stopped 进程可以通过发送SIGSTOP信号进入停止状态。这个被暂停的进程可以通过发送SIGCONT信号让其继续运行。这种状态常用于调试目的或者当系统需要暂时停止某个进程的执行但又不想终止它时。 五僵死状态Z - zombie 僵死状态是一个比较特殊的情况。当进程退出并且父进程没有读取到子进程退出的返回代码时就会产生僵死尸进程。僵死进程会以终止状态保持在进程表中并且会一直在等待父进程读取退出状态代码。僵死进程会占用系统资源因为相关的数据结构仍然需要维护在内存中如果大量产生僵死进程可能会导致内存泄漏等问题。 六孤儿进程 与僵死进程相关的一个概念是孤儿进程。当父进程提前退出而子进程后退出时子进程就会成为孤儿进程。孤儿进程会被1号init进程领养由init进程负责回收相关资源。
http://www.w-s-a.com/news/67316/

相关文章:

  • 360建筑网是什么pc优化工具
  • 越秀免费网站建设风景区网站建设项目建设可行性
  • 网站建站公司一站式服务学校网站开发招标
  • asp.net mvc 5 网站开发之美电商网站 流程图
  • 室内设计素材网站推荐郑州专业做淘宝网站建设
  • 新建的网站怎么做seo优化模板规格尺寸及价格
  • 平湖网站设计做电子元器件销售什么网站好
  • 可视化网站模板我想建个网站网站怎么建域名
  • 达州网站建设qinsanw南京市建设发展集团有限公司网站
  • django 网站开发实例公司排行榜
  • 韩国做美食网站阳江网站建设 公司价格
  • 网站开发哪里接业务长春高端模板建站
  • 深圳网站制作公司方案dw一个完整网页的代码
  • asp手机网站源码下载做seo推广网站
  • 网站优化建议怎么写网站维护主要有哪些内容和方法
  • 建设网站需要钱吗网络推广加盟
  • 高清素材图片的网站泰安网签备案查询
  • 自助网站建设怎么建设房地产的最新政策
  • 企业网站 生成html网站侵权怎么做公证或证据保存
  • php 手机网站cms系统购物网站制作流程
  • 网络公司网站开发河北省城乡住房和建设厅网站
  • 做网站配置wordpress 中文api
  • 怎样把网站做的好看县蒙文网站建设汇报
  • 网站的优化什么做广西桂林新闻最新消息
  • 做网站准备什么软件搜索引擎广告推广
  • 网站开发地图板块浮动网页设计与制作的模板
  • 中国建设招聘信息网站昆明做网站建设的公司排名
  • 那些网站可以做自媒体wordpress 分类seo
  • 淮安市盱眙县建设局网站北京西站到八达岭长城最快路线
  • 在线免费网站企业查查官网入口官网