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

用nas建设服务器网站网络广告营销方案策划

用nas建设服务器网站,网络广告营销方案策划,第二季企业网站开发,为什么登录不上wordpress环境:centos7.6,腾讯云服务器Linux文章都放在了专栏:【Linux】欢迎支持订阅🌹相关文章推荐:【Linux】冯.诺依曼体系结构与操作系统【Linux】进程理解与学习(Ⅰ)浅谈Linux下的shell--BASH前言章节…
环境:centos7.6,腾讯云服务器
Linux文章都放在了专栏:【Linux】欢迎支持订阅🌹
相关文章推荐:
【Linux】冯.诺依曼体系结构与操作系统
【Linux】进程理解与学习(Ⅰ)
浅谈Linux下的shell--BASH

前言

章节介绍

在前文中我们已经了解了进程的相关概念,明白了OS管理进程实际上就是对进程对应的task_struct/pcb做相关操作,但是实际上系统中存在的进程有很多,我们可以输入指令ps -lA 查看当前系统下的所有进程。而OS为了更高效的对进程进行管理,不会对每个进程都面面俱到,而是会将进程分为不同的状态这就好像OS为了更好的管理内存,会将内存划分为不同的分区,每个分区存放各自对应的数据类型,比如栈区存放一些局部变量、静态区存放全局变量等)从而来进行更好的管理

本次章节目标就是对进程的不同状态做相关介绍与深入了解

ps -lA查看系统下的所有进程(部分)

阻塞与挂起

阻塞

在了解进程状态之前,我们先来谈一谈阻塞与挂起的两个概念。所谓阻塞,就是指进程因为等待某种资源就绪,而导致的一种不推进状态。也就是我们常说的卡住了。

🔺这里简单举个例子

  • 就好比我们在下载一些东西时假如突然断网,那我们的下载是不是就停住了,然后等网络资源恢复后才可以继续进行下载。而这个停住的过程,就是阻塞。实际上本质来说就是pcb此时本应被cpu调度,执行下载,但是因为网络资源突然断开,此时pcb就会到网络资源对应的pcb队列中排队等待,等到网络资源就绪,并且排到它时,它才会继续回到运行队列排队,然后等待被cpu调度,继续下载。

分析图

当然,为了更直观的看到这种现象,我们可以看下面这张图

分析图2

挂起

  • 挂起本质也是一种特殊的阻塞,挂起是一种什么情况呢?我们前文已经了解了,进程=内核数据结构(pcb)+进程的代码与数据。而挂起实际上是指:该进程的pcb没有被cpu调度,然后占用了内存空间,此时OS会将该进程的数据与代码放到磁盘中暂存,等pcb被调度时,再将代码和数据预加载到内存。

★简单总结

  • 进程的pcb可以被维护在不同的队列

  • 阻塞:进程因为等待某种资源,而导致的不推进状态(pcb会到某种资源的等待队列下排队,等资源就绪时再被维护到运行队列,等待调度)

  • cpu的调度一般是一种线性调度(当然也存在因为进程优先级而导致的插队情况,后面会讲)

  • 挂起是一种特殊的阻塞,pcb不被cpu调度,os会将数据与代码暂存在磁盘,等pcb进入运行队列等待调度时,再将数据与代码预加载到内存。

进程状态

我们可以查看内核中的源码,来看看进程的各种状态

/*
* 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)

R表示该进程处于一种运行状态,不过这里需要注意的是,R状态表示的运行是指只要进程的pcb在运行队列下,都是R,并不是说一定是指在cpu上运行。

我们看一下以下代码:

 #include<stdio.h>int main(){while(1){printf("hello world,pid:%d\n",getpid());                                                                                                                    }                                                                           return 0;                                                                   } 

运行结果与疑惑

S表示的是可中断休眠状态,为什么不是R状态呢?实际上确实如我们所说,我们的程序一直在运行,但是,cpu调度的速度实在是太快了,我们很难捕捉到,并且pcb相对于被cpu的调度时间,其余99%的时间都用在了在外设(显示器)的等待队列中排队了。所以,我们可以看到程序在不断打印数据在显示器,但是却捕捉不到cpu调度pcb并执行的那一刻。

不过我们假如将外设这个干扰给屏蔽了,如下:

#include<stdio.h>int main(){while(1){}return 0;} 

小总结一下

  • 只要处在运行队列下,就是R状态(所以我们有时可能会发现多个进程处于R状态,也不足为奇,这不是指它们同时被调度,而是指它们都处在运行队列,等待被cpu调度)

可中断休眠状态(S)

正如上面的图片所示,我们看到S状态是因为程序的pcb99%的时间都在外设的等待队列下排队而被cpu调度的那一刻我们捕捉不到。这里大家有没有发现,休眠状态与我们的上面讲的阻塞状态一致,阻塞就是指pcb不被cpu调度,去某个资源的队列下等待资源就绪。

事实上确实如此,S状态的本质就是阻塞。(pcb去某种资源的等待队列下排队,等待资源就绪)。至于说它是可中断休眠,是因为我们可以通过ctrl c或者kill命令来结束该进程。

  • (可以这么来说: S状态就意味着进程在等待事件完成(等待资源就绪),并且这种状态是可以被我们使用指令来中断。

可中断休眠

不可中断休眠状态(D)

所谓不可中断休眠状态,说白了就是我们不可以使用kill、ctrl c等命令将进程中断,我们只可以将电源关闭,以此来结束进程,但是这样做可能会造成数据的丢失等问题。(这种状态一般很难看到)

暂停状态(T)

暂停状态顾名思义就是让该进程暂停,我们可以通过指令kill -19 pid的指令来暂停该进程。输入指令kill -18 pid可以使该进程继续运行。

(不过需要注意的是,当恢复运行时,此时的进程就处于后台进程,我们用ctrl c结束不了,用kill指令才可以中止进程,关于前后台进程我会在后面的章节讲解。)

如下:

死亡状态(X)

  • 这个状态只是一个返回状态,表示该进程已经彻底结束。我们不会在任务列表里看到这个状态。

僵尸状态(Z)

返回代码

我们每一个进程结束时都会有一个退出码,就好像我们写一个main函数时,最后都会加上return 0,return 0就表示该进程正常返回(事实上就算我们不写return 0,系统也会默认return 0),这里的0就是该进程的返回代码

(Linux下可以通过echo $?指令来查看该进程的返回代码)

vs下编译后的返回代码

僵尸状态(Z)

僵尸状态是指一个进程结束时,它的返回代码没有被父进程读取,那么该进程会一直处于一种僵尸状态,等待父进程读取,直到父进程读取返回结果后,才彻底结束子进程。

保持僵尸状态是为了让父进程读取该进程的返回代码,而我们平常写的程序为什么结束后没有变成僵尸呢?

  • 这是因为他们的父进程是bash(不理解的可以看前面的章节,有讲到bash下运行的程序的父进程都是bash),而bash有回收机制,所以我们写的程序运行结束后会被bash的回收机制回收。我们也就观察不到僵尸进程。

不过我们可以写以下代码,用fork创建子进程,来观察僵尸状态:

 #include<stdio.h>#include<unistd.h>int main(){//fork创建子进程pid_t id=fork();if(id == 0){//childwhile(1){printf("子进程:pid:%d,ppid:%d\n",getpid(),getppid());sleep(1);}}else{//fatherwhile(1){printf("父进程,pid:%d,ppid:%d\n",getpid(),getppid());sleep(1);}}return 0;                                                                                                                }  

此时我们kill -9 进程pid结束子进程,观察子进程是否立马结束,还是如我们所说维持僵尸状态,等待父进程读取推出结果。通过以下运行结果可以发现,子进程并不是直接退出

运行结果

僵尸状态的危害
如果一个进程处于Z状态,假如它的父进程一直不读取该进程的退出码,那么该进程会一直维持僵尸状态。而维护这个状态,实际上就是维护这个数据,该数据也属于进程基本信息,保存在task_struct(PCB)中,不仅占用了内存空间(因为task_struct本身是一个结构体,结构体都会有自己的大小),并且维护pcb也是有一定的代价的。

★简单总结一下

  • R状态是指该进程的pcb处在运行队列,而不是一定要在cpu上运行

  • pcb被cpu调度运行的时间,远远远远快于pcb在资源的等待队列下等待资源就绪的时间

  • S与D的区别在于是否可以通过kill或者ctrl c来人为中止进程,但两者本质都是阻塞

  • kill -19 PID 暂停进程,kill -18 PID恢复进程(恢复后的进程属于后台进程,不可ctrl c中止,可以kill -9 PID中止)

  • 暂停状态实际上也是阻塞(要等待你发出指令继续运行)

  • 僵尸状态是指子进程退出时,退出结果没有被父进程读取,子进程就会保持僵尸状态,直到父进程读取返回结果,才彻底结束

  • bash有回收机制,所以我们写的程序运行结束后,不会变成僵尸,会被bash的回收机制回收

  • 僵尸进程会占用空间资源,造成资源泄露,具有一定的危害性,具体避免方式以后再细谈

孤儿进程

我们上面讲了子进程退出时不会立马退出,而是维持僵尸状态等待父进程读取退出结果。(如果父进程是bash,则会被bash的回收机制回收,不会出现僵尸)

那么假如子进程正常运行,父进程结束呢?如下:

杀掉父进程,发现子进程的父进程变成了1号

这里我们来分析一下,为什么父进程结束后不会出现僵尸呢?

  • 答:因为该父进程的父进程为bash,退出结果被bash的回收机制回收了,所以父进程没出现僵尸。

为什么该父进程的子进程被1号进程领养了呢?1号进程是什么?

1号进程实际上就是操作系统

  • 答:父进程退出,子进程被操作系统领养(通过让子进程的父进程变成1号进程),此时的子进程就是孤儿进程。被领养是为了读取子进程的退出结果。(假如没有被领养的话,子进程的退出结果就不会有人能拿到,那么子进程就成了僵尸,会一直存在,造成内存泄漏。这是OS不允许的,所以会让1号进程成为子进程的父进程,从而拿到子进程的退出结果)。


end.

生活原本沉闷,但跑起来就会有风!🌹


文章转载自:
http://passimeter.fznj.cn
http://antiworld.fznj.cn
http://pilary.fznj.cn
http://anturane.fznj.cn
http://upwarp.fznj.cn
http://cornflower.fznj.cn
http://absentee.fznj.cn
http://gravitation.fznj.cn
http://outmarch.fznj.cn
http://hanap.fznj.cn
http://inexistence.fznj.cn
http://eczema.fznj.cn
http://catalo.fznj.cn
http://grassfinch.fznj.cn
http://unauthenticated.fznj.cn
http://interosseous.fznj.cn
http://commutativity.fznj.cn
http://delightedly.fznj.cn
http://osmolarity.fznj.cn
http://melodise.fznj.cn
http://pdt.fznj.cn
http://rudderstock.fznj.cn
http://yacket.fznj.cn
http://erethism.fznj.cn
http://epirote.fznj.cn
http://botswana.fznj.cn
http://fiddlefucking.fznj.cn
http://shylock.fznj.cn
http://radiopacity.fznj.cn
http://nabber.fznj.cn
http://philosophise.fznj.cn
http://substructure.fznj.cn
http://automorphic.fznj.cn
http://exothermic.fznj.cn
http://sudetenland.fznj.cn
http://consecutively.fznj.cn
http://stepsister.fznj.cn
http://obbligato.fznj.cn
http://proslavery.fznj.cn
http://faultful.fznj.cn
http://loot.fznj.cn
http://forepart.fznj.cn
http://multidentate.fznj.cn
http://enflame.fznj.cn
http://stallage.fznj.cn
http://eucharist.fznj.cn
http://unseasoned.fznj.cn
http://mawlamyine.fznj.cn
http://porter.fznj.cn
http://gunbattle.fznj.cn
http://barbe.fznj.cn
http://underclothes.fznj.cn
http://paperbark.fznj.cn
http://authoress.fznj.cn
http://anam.fznj.cn
http://jillion.fznj.cn
http://horatian.fznj.cn
http://firebrand.fznj.cn
http://avouch.fznj.cn
http://portacabin.fznj.cn
http://epic.fznj.cn
http://lithotomy.fznj.cn
http://areometer.fznj.cn
http://chloralism.fznj.cn
http://parti.fznj.cn
http://debacle.fznj.cn
http://imputative.fznj.cn
http://placoderm.fznj.cn
http://phenylene.fznj.cn
http://inveracious.fznj.cn
http://keeler.fznj.cn
http://landship.fznj.cn
http://mukden.fznj.cn
http://jingo.fznj.cn
http://glabellum.fznj.cn
http://clop.fznj.cn
http://sledgemeter.fznj.cn
http://bun.fznj.cn
http://hydrographic.fznj.cn
http://texas.fznj.cn
http://subteenager.fznj.cn
http://lairdship.fznj.cn
http://plunderbund.fznj.cn
http://intravehicular.fznj.cn
http://cineangiocardiography.fznj.cn
http://hither.fznj.cn
http://enthronement.fznj.cn
http://anglaise.fznj.cn
http://electrodialytic.fznj.cn
http://dehorter.fznj.cn
http://socle.fznj.cn
http://scalloping.fznj.cn
http://crosshatch.fznj.cn
http://haematite.fznj.cn
http://selsyn.fznj.cn
http://cinchonism.fznj.cn
http://lionmask.fznj.cn
http://quadrifid.fznj.cn
http://penthouse.fznj.cn
http://dreadfully.fznj.cn
http://www.dt0577.cn/news/112665.html

相关文章:

  • 网站建设都有什么技术支持黑帽seo365t技术
  • php做购物网站详情页的代码旺道优化软件
  • 我想注册网站我怎么做上海关键词排名优化价格
  • 用meteor框架做的微博网站友链目录网
  • wordpress 数据库修改密码seo优化啥意思
  • 安徽城乡与建设部网站站长之家ip查询
  • 网站动态页面打不开新媒体运营培训学校
  • 网站开发和企业级开发有什么区别产品网络推广方案
  • 上海市建设厅网站查询引流推广是什么意思
  • 泉州彩票网站建设临汾网络推广
  • 网站怎么做弹窗成功的软文营销案例
  • 徐州自助建站模板cps广告联盟平台
  • 保定门户网站百度信息流开户多少钱
  • chatgpt 网址宁波seo推广推荐
  • 常州做网站推广steam交易链接在哪看
  • 做3d动画的斑马网站如何制作公司网页
  • 创业怎么做网站宁波靠谱营销型网站建设
  • 网站建设公司 - 百度外贸网站平台哪个好
  • 文山党风廉政建设网站网络推广营销方案免费
  • 遵义微商城网站建设平台比优化更好的词是
  • wordpress菜单顺序利于seo的建站系统有哪些
  • 做网站网页广告推广免费发布
  • 高权重网站怎么做百度推广关键词和创意
  • 建立网页的几个步骤广州seo招聘
  • 聚诚网站建设方象科技的企业愿景
  • 淮安做网站杨凯百度推广助手手机版
  • 网站建设小故事南宁seo结算
  • 餐饮如何做网络营销seo是啥
  • 设计个人网站2024免费网站推广大全
  • 做土特产网站什么名字最好天津优化公司