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

常州网站建设多少钱企业网站推广的方法

常州网站建设多少钱,企业网站推广的方法,海南省住房公积金管理局咨询电话,贵州建站互联网科技有限公司1.什么是进程 要回答这个问题首先我们要解答什么是程序的问题。什么是程序呢?程序本质是就是存放在磁盘上的文件。我们要运行程序,首先必须要将其加载到内存中,这样才能与cpu交互,这是冯诺依曼体系架构所决定的。 程序运行起来后…

1.什么是进程

要回答这个问题首先我们要解答什么是程序的问题。什么是程序呢?程序本质是就是存放在磁盘上的文件。我们要运行程序,首先必须要将其加载到内存中,这样才能与cpu交互,这是冯诺依曼体系架构所决定的。

程序运行起来后,就需要操作系统进行管理。管理的方法是先描述,再组织。

如何描述呢?就需要PCB(process control block)进程控制块来进行描述。具体上讲就是定义一个struct task_struct结构体,该结构体中包含该进程的所有属性。

如何组织呢?就需要我们学习的数据结构进行组织,常见的就是利用链表的数据结构,将我们的描述进程的结构体串起来。

这样操作系统对进程的管理就变成了对数据结构的维护。

这时我们来回答什么是进程? 

进程就是加载到内存中的程序。但是我更喜欢的定义是:进程 = 内核数据机构(PCB)+ 加载到内存中的磁盘上的代码。

2.在linux下的进程

2.1与进程有关的系统调用

程序运行起来时就是一个进程,我们可以调用getpid获取其proces id,我们可以调用getppid获取其parent process id。

 1 #include<iostream>2 #include<unistd.h>                                                                                 3 using namespace std;4 5 int main(){6 7   cout<<"this process,s pid is "<<getpid()<<"this process,s ppid is "<<getppid()<<endl;8 9   return 0;10 }

this process,s pid is 8476 this process,s ppid is 772。这是我们得到的输出结果。当我们while(1)持续运行起来时,我们可以新建一个窗口。利用ps -ajx | head -1 && ps -ajx| grep 8476 来查看我们的进程。

我们也可以在子目录下的/proc目录下查找当前进程的目录以获得进程的属性

2.2fork函数

fork是一个创建子进程的函数。在执行完这条语句后,会创建一个子进程。父进程和子进程都会执行后续的代码,会被父子进程共享。

fork也会有一个pid_t类型的返回值,父进程会获得子进程的pid,子进程会获得0.这样我们就能够分流出父子进程。

                                             1 #include<iostream>2 #include<sys/types.h>3 #include<unistd.h>4 5 6 int main(){7   pid_t id = fork();8 9   if(id == 0){10     std::cout<<"this is a child process:"<<getpid()<<"its parent process:"<<getppid()<<"returnval:    "<<id<<std::endl;11   }else{12     std::cout<<"this is a parend process: "<<getpid()<<"its parent process:"<<getppid()<<"returnva    l:"<<id<<std::endl;                                                                                13   }14   return 0;                                        15 }       

this is a parend process: 8900its parent process:7721returnval:8901
this is a child process:8901its parent process:8900returnval:0
这是我们输出的结果

这张图就详细的介绍了我们的进程的关系。可以看见我们打开的shell之后就会在linux云服务器的主进程下创建一个子进程,这样就不会影响我们的主进程正常运行。

3.进程状态 

我们下面介绍三种运行状态:运行 阻塞 挂起

3.1运行状态R

当程序加载到内存过后,需要cpu参与某些计算。但是一个核心的cpu在一个瞬间只能处理一个进程,那么我们的进程肯定有很多,此时我们该怎么办呢?

引入运行队列的概念,一个单核CPU有一个运行队列,操作系统会将需要cpu处理的进程的PCB进程控制块放入运行队列中,操作系统就会根据运行队列依次分配CPU的资源。

我们将在运行队列中的进程的状态称为运行状态。

3.2阻塞状态

进程不仅仅需要cpu的资源,有时还需要访问外设。一个外设在某个时刻也只能被一个进程访问,这时进程就会进入一个等待的队列中。

 由于外设的速度是很慢的,因此在外设的等待队列中的进程的pcb就会被标识上阻塞的状态。

3.3挂起状态 

当进程处于阻塞状态或者其他状态时,并不会被系统立马调度,如果此时内存不足,就会将进程的代码和数据临时的保存在磁盘上,这样就腾出内存给别人使用,当内存足够时再从磁盘载入到内存中。

当进程被临时保存到磁盘中时,其pcb的状态就是挂起状态。

综上,进程的不同状态实际上就是其PCB在不同的队列中等待某种资源

4.Linux下的进程状态

static const char* const task_struct_array[]={"R(ruuning)""S(sleeping)""D(disk sleep)""T(stopped)""t(tracing stop)""X(dead)""Z(zombie)"
}

4.1R(running)状态

R状态意味着进程控制块在cpu的运行队列中。并不意味着进程一定在运行。

4.2S(sleeping)状态

S状态意味着进程控制块在外设的等待队列中,等待访问外设资源。与我们将的阻塞状态相同。

4.3T(stopped)状态

T状态意味着进程被暂停执行,此时进程处于一种静止状态,不占用 CPU 资源,也不会继续向下执行代码。

当我们运行程序时,输入Ctrl+z就是触发程序暂停

4.4t(tracing stop)状态

t状态意味着程序正在被追踪暂停状态,常见我们调试的时候程序就会出现t状态

4.5D(disk sleep)状态

disk sleep 状态就是磁盘休眠状态,意味着程序不能被OS杀掉,只能通过断电或者程序自己醒来来解决。常见在高io的情况下,D状态是为了防止进程在等待外设资源时由于内存不足问题被OS杀掉。

4.6X(dead)状态

X状态意味着程序已经死亡,会被OS快速回收

4.7Z(zombie)状态

Z状态意味着程序进入僵尸(将死)状态,它的出现是为了让OS或者父进程知晓进程已经完成任务,让父进程或者OS来进行读取其状态。之后才会进入X状态等待OS或者父进程对其资源回收。

值得注意的是,z状态时进程已经死亡(exit),此时只剩下PCB进程控制块。如果z状态不能被读取,转换为x状态,进而被系统回收资源,就会导致资源泄漏。

5.孤儿进程

当我们使用fork创建子进程,但是父进程先比子进程退出,这个时候子进程就是孤儿进程。

此时的子进程会被一号进程即操作系统领养。如果不被领养,成为僵尸进程的时候就会没人读取,进而造成内存泄漏问题。

如果是前台进程创建的子进程,变为孤儿进程是就会成为后台进程,此时只能用kill -9 pid 杀死进程。

6.进程优先级

6.1优先级和权限的区别:

权限指的是能否获取某种资源,而优先级指的是获取某种资源的先后顺序。

6.2为什么存在优先级

原因是因为资源的有限性和任务的无限性之间的矛盾。这就意味着我们要用有限的资源办大事。

6.3Linux中的优先级

输入指令ps -l 

Linux中的优先级是依靠两个值priority值和nice值确定的。priority值大部分都是80,nice值位于-20到+19之间。计算得到的值越小则优先级越高。

我们可以使用sudo top指令,更改进程的nice值从而更改优先级。 

7.进程切换

一个单核cpu一个时刻只能运行一个进程,但是我们按照我们的常识我们能同时启动多人软件运行,这是为什么呢?这是因为进程切换。

CPU中存在着一套寄存器,用于存储进程的临时数据。进程在运行的时候并不是一直占有cpu,而是都有自己的时间片,在自己的时间片时,cpu会被自己占有资源。但当cpu切到下一个程序的时候就会对进程的上下文数据保护,当进程恢复运行的时候上下文数据又会恢复。这就叫做进程切换

在任何时刻,寄存器内的自己进程数据,只属于自己的进程。寄存器被共享,但是寄存器内的数据各自私有。

 

 

http://www.hkea.cn/news/83704/

相关文章:

  • 网站可以做赌博广告建站宝盒
  • 运城市做网站英文seo外链
  • 江宁网站建设如何建立网上销售平台
  • 淄博企业网站建设有限公司搜索引擎关键词竞价排名
  • 网站的优点企业专业搜索引擎优化
  • 哪里有软件开发培训机构无锡seo培训
  • 网站怎么做反链seo是什么品牌
  • 技术型网站做哪一种好软文范例大全100
  • 百度搜索什么关键词能搜到网站seo高效优化
  • 网站搭建分站需要多少钱互联网营销策划
  • 音乐网站的音乐怎么做seo先上排名后收费
  • 清河做网站报价seo实战培训王乃用
  • wordpress 回收站在哪个文件夹营销方式和手段
  • 垂直型电商网站如何做快速排名软件哪个好
  • 做产品推广有网站比较好的免费自助建站平台
  • 番禺网站建设公司排名百度推广页面投放
  • 沈阳做微网站百度收录刷排名
  • 网站建设与管理技术发展seo是什么意思如何实现
  • 手机游戏开发制作公司最新seo视频教程
  • 网站优化过度被k长春seo排名公司
  • wordpress移除谷歌字体seo网站推广与优化方案
  • 十大景观设计公司排名seo权重查询
  • 水友做的yyf网站十大免费引流平台
  • 东莞公司网站制作百度识图网页版 在线
  • 企业级网站内容管理解决方案网站关键词快速排名服务
  • 影视采集网站怎么做收录关键词是网站seo的核心工作
  • 开发一个网站需要多少时间百度账号免费注册
  • 化妆品网站主页设计长沙关键词优化方法
  • 南阳建网站企业百度推广优化工具
  • 怎样把自己做的网页放在网站里如何做宣传推广营销