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

深圳网站建设 设计卓越模板下载网站

深圳网站建设 设计卓越,模板下载网站,中山市网站开发,如何建设淘客网站进程的概念PCB是什么task_struct的作用如何执行进程进程的探查什么是bashps命令的使用#xff08;查看进程#xff09;创建进程探究父子进程进程的概念 简而言之#xff0c;进程就是正在在执行的程序 之前说过#xff0c;程序执行的第一步Windows是双击程序Linux是 ./ 查看进程创建进程探究父子进程进程的概念 简而言之进程就是正在在执行的程序 之前说过程序执行的第一步Windows是双击程序Linux是 ./ 系统接收到该命令时就会将磁盘中的程序代码载入到内存中并为程序分配空间。 当程序被加载到内存后建立了自己的PCB那他就是进程了。 PCB是什么 PCB的概念含有该进程各种 信息 及 属性 的 数据结构比如进程 ID 用户 ID 组 ID 进程状态 优先级 I /O状态信息及程序数据等。 PCB是一般课本上的称呼process control block Linux操作系统下被称为PCB的实体是: task_struct task_struct的作用 task_struct 是 Linux内核的一种数据结构它会被装载到 RAM(内存) 里并且包含着进程的信息 其包含内容大致有 1. 标示符: 描述本进程的唯一标示符用来区别其他进程。 2. 状态: 任务状态退出代码退出信号等。 3. 优先级: 相对于其他进程的优先级。 4. 程序计数器: 程序中即将被执行的下一条指令的地址。 5. 内存指针: 包括程序代码和进程相关数据的指针还有和其他进程共享的内存块的指针 6. 上下文数据: 进程执行时处理器的寄存器中的数据可以理解为存储的是程序已经做了什么下一步该做那些 8. I O状态信息: 包括显示的I/O请求,分配给进程的I O设备和被进程使用的文件列表。 9. 记账信息: 可能包括处理器时间总和使用的时钟数总和时间限制记账号等。其他信息等如何执行进程 首先咱要明白Linux 下你所有的 命令 与你能 执行的操作 都与权限有关。 触发任何一个事件系统都会将其定义成一个进程并给予这个进程一个专属 ID ,称为PID ,同时根据触发这个进程的用户与相关属性关系给予该进程PID设置对应权限 运行程序也一样也要受到权限的约束所以task_struct 要存有必要的属性信息 正常情况下task_struct会在内存中像链表一样依次排列逐个进行 但我们要知道任何事情都要分个轻重缓急操作系统在执行进程时更是如此。 所以进程对应的task_struct中便有了优先级这一属性他用PRI值来表示优先级PRI值越小则优先级越高所以下图中PRI为60的会比PRI为80的优先得到CPU的资源 优先级是CPU分配资源的先后顺序 上图中PRI值只有两种是为了大家方便理解实际上PRI值是根据进程属性决定的NI值也会影响进程优先级后边会补充 优先级的必要性 系统进程数目众多而CPU资源只有少量甚至1个所以进程之间是具有竞争属性的。为了高效完成任务更合理竞争相关资源便具有了优先级。 进程的探查 说了那么多是时候见见进程了 在Linux下可用 ps 命令查看进程 命令ps 作用: 查看属于当前用户的进程 上图可以看到输入 ps 回车后只看到了当前 ps 命令的进程及 bash 的进程由此可以得出结论命令只是某一程序快捷方式执行时也会创建进程 什么是bash 每个用户登录时都会创建一个 bash 进程各用户之间的 bash 进程互相之间没有影响。 1. bash是一个命令处理器, 运行在文本窗口中, 并能执行用户直接输入的命令. 2. bash还能从文件中读取Linux命令, 称之为脚本. 3. bash支持通配符, 管道, 命令替换, 条件判断等逻辑控制语句 总结 bash可以称为命令行解释器我么在命令行执行的进程都由他衍生而来。 ps命令的使用查看进程 首先先了解进程信息列表每一项分别表示什么 F 内核分配给进程的系统标志 UID : 启动该进程的用户 PID : 进程ID PPID : 父进程ID(如果该进程是其他进程启动的) PRI : 进程优先级值越小优先级越大 NI 优先级的修正值 VSZ : 进程占用虚拟内存空间的大小 RSS 进程在未被交换出时占用的物理内存大小 WCHAN 进程休眠的内核函数地址 STST : 代表当前进程状态R是可运行正在等待O是正在运行S代表休眠Z代表僵化已终止但找不到其父进程 T代表停止上面简单演示了ps命令但其只显示了两行极短的内容这显然不是咱想要的 下面演示ps的BSD风格的指令 指令 ps la 作用采用长格式显示与任意终端关联的所有进程 可以看到显示了好几个进程其中有两个bash进程因为这台现在有两个账号在登陆这。 其中右边一栏 COMMAND 是程序名图中的./my_exe程序只是目前在另一个账号上运行的程序其PID是19795PPID表示父进程./my_exe程序 PPID为18505而18505恰好是bash的PID. 所以得出第二个结论在Linux命令行执行的命令产生的进程都由bash进程衍生而来也就是说命令行上执行产生的进程其PPID(父进程)都为bash 下图为ps的命令选项由于都是查询类选项我就不一一示范了 选项描述T显示与当前终端关联的所有进程a显示与任意终端关联的所有进程g显示包括控制进程在内的所有进程r仅显示运行中的进程x显示所有进程包括未分配任何终端的进程U userlist显示属于userlist列表中某个用户ID所有的进程p pidlist显示PID在pidlist列表中的进程t ttylist显示与ttylist列表中的某个终端关联的进程o format除了标准列还输出由 format指定的列x以寄存器格式显示数据z在输出中包含安全信息j显示作业信息l采用长格式显示o format仅显示由format指定的列s采用信号格式显示u采用基于用户的格式显示v采用虚拟内存格式显示N namelist定义要在 wCHAN输出列中显示的值o order定义信息列的显示顺序s将子进程的数值统计信息比如CPU和内存使用情况汇总到父进程中c显示真实的命令名称用以启动该进程的程序名称)e显示命令使用的环境变量f用层级格式来显示进程显示哪些进程启动了哪些进程h不显示头信息k sort指定用于排序输出的列n使用数值显示用户ID、组ID以及 wCHAN信息w为更宽的终端屏幕生成宽输出H将线程显示为进程m在进程之后显示线程L列出所有的格式说明符v显示ps命令的版本 创建进程 方法进程可使用系统调用 fork() 函数创建新进程。 其中调用 fork() 的进程被称为父进程新创建的进程被称为子进程 如下在main中创建一个子进程 远行结果如下 如上所示使用 fork() 创建了子进程后bbbbbb…居然被打印了两次而aaaa…输出正常只打印了一次 为探究为什么咱使用两个函数辅助咱们观看结果 函数getpid() 作用返回当前进程PID 函数getppid() 作用返回当前进程PPID(父进程) 重新对代码编辑如下 #includeunistd.h #includestdio.h int main() { printf(aaaaaaaaaaaaaaaaaaa\n); fork(); //创建一个子进程 printf(我的PID :%d 我的PPID :%d \n,getpid(),getppid()); return 0; } 执行程序后结果如下 可以看出第一个打印出自己PID 6389 的为父进程 因为第二个打印出自己的PPID 为 6389所以PID 6390为子进程 但也说明了父子进程执行的代码是一样的。 探究父子进程 查看 fork 的说明: 1如果子进程开启成功则给父进程返回子进程的PID否则返回-1 2会给子进程返回0由此我下下以下程序 1 #includeunistd.h2 #includestdio.h3 int main()4 {5 int n 5;6 int i 1;7 printf(aaaaaaaaaaaaaaaaaaa\n);8 int pp fork(); //创建一个子进程9 if(pp 0)//子进程程序10 {11 while(n--)12 {13 printf(我是子进程i %d 我的PID :%d 我的PPID :%d \n,i ,getpid(),getppid());14 sleep(1); i 99;//把值改掉15 }16 }17 else18 { 19 while(n--)20 { 21 printf(我是父进程i %d 我的PID :%d 我的PPID :%d \n,i ,getpid(),getppid()); sleep(1);22 } 23 }24 return 0;25 }如上图 pp 变量会接收 fork() 的返回值目前不考虑进程创建失败的情况上面已经叙述了父进程与子进程的代码是一致的 只是父进程中 pp 变量接收到的 fork() 返回值为其子进程的PID ,而子进程中的 pp 变量接收到的 fork() 返回值为0 所以上述代码中子进程和父进程所执行的代码一致子进程从fork()函数位置开始执行只是 pp 变量不同 大致可以如下图 程序执行结果如下 和我们预想的一致由于父子进程中的 pp 变量不同所以被 if 和 else 区分打印出了对应的 但程序代码的第 14 行在子进程中把 i 的值改成了99,但父进程的i值并没有被改变 总结内核通过对父进程的复制来创建子进程子进程从父进程处继承数据段栈段以及堆段的副本后可以修改这些内容不会影响父进程的内容在内存中被标记为只读的程序文本段则由父子进程共享
http://www.dnsts.com.cn/news/192442.html

相关文章:

  • 东莞seo建站怎么投放软件培训学校
  • 电商网站h5模板下载网站是否降权查询
  • 网站关键词优化应该怎么做网站产品的详情页怎么做
  • 东莞网站建设需要多少钱工商注册法人查询
  • 优秀网站设计欣赏做书网站 时光
  • 做期货应该看的网站网站怎么更改后台登陆密码
  • 直播网站是怎么做的天津建设工程信息网招投标正规吗
  • 如何只做网站昆山设计公司
  • 网站建设在哪里做比较好申请带域名的免费空间
  • 网站信息备案查询系统joomla做类似赶集网的网站
  • wordpress精美网站做网站什么字体
  • 做图标的网站做网站前端工资
  • 厦门市建设局网站住房保障wordpress页面文字首行缩进
  • 阿里网站备案寄材料廉价网站建设
  • 招生就业网站开发详情失信被执行人查询系统
  • 网站怎么做cp备案号网站开发怎样实现上传视频
  • 百度网站录入租一个服务器要多少钱
  • 求购做网站网站建设 cn
  • 免费的企业网站模板营销推广的目标通常是什么
  • 出口外贸网站邯郸网站设计培训机构
  • 建设外贸网站案例网络图怎么绘制
  • 网站开发成本预算价目表东莞网站建设功能
  • 狼雨seo网站排名查询专业服务网站开发
  • 网站建设(信科网络)重庆社区官网
  • 网站开发要注意哪些细节微网站开发教材
  • 东莞海天网站建设网站调用微信数据
  • 中能建设集团电子商务网站企业网络贷款平台
  • 吉林省建设厅网站特殊工种免费的建设网站软件
  • 网站优化推广平台dede wap网站模板下载
  • 甘肃省嘉峪关建设局网站广州最新消息今天