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

企业网站制作模板免费下载从哪里找网络推广公司

企业网站制作模板免费下载,从哪里找网络推广公司,小程序赚钱的几种方法,东营住房和城乡建设局官网前言 本文将会向您进程的概念,程序与进程的区别,如何获取进程的标识符-pid 文章重点 1.描述进程——PCB 进程与程序的区别 CPU对进程列表的处理 2.获取进程PID 描述进程-PCB 进程概念 课本概念:程序的一个执行实例或正在执行的程序 内核…

前言

本文将会向您进程的概念,程序与进程的区别,如何获取进程的标识符-pid

文章重点

1.描述进程——PCB
进程与程序的区别
CPU对进程列表的处理
2.获取进程PID

描述进程-PCB

进程概念

课本概念:程序的一个执行实例或正在执行的程序
内核概念:担当分配系统资源(CPU,内存)的实体

区分程序和进程

1.程序:程序本质上就是一个文件,是静态的,存储在磁盘中
2.进程:程序运行起来之后,就叫做进程,进程是动态的,由操作系统进行管理

1 . 进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。
2. 课本上称之为PCB(process control block), Linux操作系统下的PCB是: task_struct。

struct data
{
//id 标识符 
//代码/函数地址 
//状态(是否被CPU处理)
//优先级
struct data* next 
}

这个进程属性的结构体被称为PCB,也叫做进程控制块
进程具体的属性如下:

标示符: 描述本进程的唯一标示符,用来区别其他进程。 状态: 任务状态,退出代码,退出信号等。 优先级: 相对于其他进程的优先级。
程序计数器: 程序中即将被执行的下一条指令的地址。 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。 I/O状态信息:
包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。 记账信息:
可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。 其他信息

CPU对于进程列表的处理

进程被链接到链表中会等待CPU去PCB找数据做处理,那么CPU怎么知道要处理哪些数据呢?

进程排队:把对应的PCB从链表中提取到队列中排队,PCB中的数据不会一次性被CPU处理完,它有时被处理,有时在等待被处理

在这里插入图片描述
结论

进程 = 可执行程序+内核数据结构(PCB)

进程标识符

每一个进程都有自己对应的pid,查看当前进程的信息:
什么是进程的pid呢?

进程的pid是指进程的唯一标识符,即进程ID(ProcessID)。每个正在运行的进程都有一个唯一的pid,用于操作系统在管理和跟踪进程时进行标识和区分。

ps ajx

在这里插入图片描述
这种方式将全部的进程信息打印了出来,不太好观察学习
可以利用死循环来观察

 #include<stdio.h>  #include<unistd.h>  int main()  {while(1) //死循环{printf("我已经是一个进程了\n");sleep(1); //休眠一秒                                                                                                                                         }                                       return 0;                           }

在这里插入图片描述
我们可以使用以下命令来获取进程的标识符pid

在所有进程中搜索刚写的可执行程序并将进程的第一行打印:
ps ajx | head -1 && ps ajx | grep target | ps ajx | head -1

在这里插入图片描述

getpid、getppid

PPID:父进程的标识符
观察到图中两个红色的target行处,第一行是我们启动的进程,第二行是grep这个命令的进程
我们也可以选择另外一种方式来获取进程的pid
man手册中记录了getpid,getppid的使用
在这里插入图片描述
我们使用的getpid和getppid是系统调用函数
而在冯诺依曼体系中讲到,如何用户想要访问
底层的数据必须经过系统调用
在这里插入图片描述

 #include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>int main(){pid_t id = getpid();while(1){printf("我已经是一个进程了,我的pid是:%d\n",id);sleep(1);}return 0;}

在这里插入图片描述
获取父进程pid

 #include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>int main(){pid_t id = getpid();pid_t parid = getppid();while(1){printf("我已经是一个进程了,我的pid是:%d...我的ppid是:%d\n",id,parid);sleep(1);}return 0;}

然后我们再运行程序
观察到每一次的运行子进程的pid都会发生改变,而父进程的pid却不会变化
在这里插入图片描述

原因是每次运行时,操作系统会为每个新的子进程分配一个唯一的进程标识符(PID)。这是因为PID是一个用于标识进程的数字,它是在操作系统内部维护的一个计数器。当一个进程终止后,其PID就会被释放,并可以被其他新的进程重新使用。
在命令行中,父进程一般是命令行解释器:bash

小结

今日的分享就到这里啦,本文仅仅是对进程的概念进行了描述,后续将会持续更新fork、进程状态等相关知识点,如果本文存在疏漏或错误的地方还请您能够指出!

http://www.yidumall.com/news/11712.html

相关文章:

  • 网站信息维护校园推广
  • 佛山网站seo优化排名公司北京推广服务
  • 舟山网站建设制作公众号seo排名优化
  • 档案局网站的建设平台推广营销
  • 网站建设宣传党建怎样注册自己的网站
  • 哪家网站建设好seo 的作用和意义
  • 营销策划是什么意思seo规则
  • 怎么通过淘宝优惠券做网站赚钱知名做网站的公司
  • 哪个网站卖自己做的手工艺品推广app拿返佣的平台
  • 暴力破解wordpress网站密码软件唐山百度seo公司
  • wordpress栏目模板seo网站培训班
  • 网站代码图片怎么拿到百度推广的代理
  • 用vs2010做免费网站模板下载地址中国优化网
  • 昆明做网站ynlongtou网站空间费用一年多少
  • 有哪些网站是可以做免费推广的品牌推广平台
  • 深圳做网站设计今日头条荆州新闻
  • 用fw做明星的网站网站百度不收录
  • 建筑施工单位网站搜索引擎google
  • wordpress管理插件windows系统优化软件排行榜
  • 武汉企业网站推广报价seo推广怎么收费
  • 网站网页设计基本理论百度网址大全 简单版
  • 英文购物网站模板谷歌推广效果好吗
  • 网站建设任务seo推广薪资
  • 珠海购物网站制作百度竞价客服
  • 网站做信用认证有必要吗广告软文是什么意思
  • 怎样做网站首页图片变换seo引擎优化
  • 网站开发系统百度产品推广
  • 工商局网站如何做网登网络推广文案有哪些
  • 北京免费网站建站模板做一个推广网站大概多少钱
  • 东莞做营销型网站的深圳做推广哪家比较好