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

制作一般网站青岛建设投资公司网站

制作一般网站,青岛建设投资公司网站,专门做地方特产的网站,许昌市建设路小学网站2 进程相关概念 2.1 程序和进程 程序#xff0c;是指编译好的二进制文件#xff0c;在磁盘上#xff0c;占用磁盘空间, 是一个静态的概念. 进程#xff0c;一个启动的程序#xff0c; 进程占用的是系统资源#xff0c;如#xff1a;物理内存#xff0c;CPU#xf…2 进程相关概念 2.1 程序和进程 程序是指编译好的二进制文件在磁盘上占用磁盘空间, 是一个静态的概念. 进程一个启动的程序 进程占用的是系统资源如物理内存CPU终端等是一个动态的概念 程序 → 剧本(纸) 进程 → 戏(舞台、演员、灯光、道具…) 同一个剧本可以在多个舞台同时上演。同样同一个程序也可以加载为不同的进程(彼此之间互不影响) 2.2 并行和并发 并发在一个时间段内, 是在同一个cpu上, 同时运行多个程序。 如若将CPU的1S的时间分成1000个时间片每个进程执行完一个时间片必须无条件让出CPU的使用权这样1S中就可以执行1000个进程。 并行性指两个或两个以上的程序在同一时刻发生(需要有多颗)。 2.3 PCB-进程控制块 每个进程在内核中都有一个进程控制块PCB来维护进程相关的信息Linux内核的进程控制块是task_struct结构体。 /usr/src/linux-headers-4.4.0-96/include/linux/sched.h文件的1390行处可以查看struct task_struct 结构体定义。其内部成员有很多我们重点掌握以下部分即可 进程id。系统中每个进程有唯一的id在C语言中用pid_t类型表示其实就是一个非负整数。 进程的状态有就绪、运行、挂起、停止等状态。 进程切换时需要保存和恢复的一些CPU寄存器。 描述虚拟地址空间的信息。 描述控制终端的信息。 当前工作目录Current Working Directory。 getcwd --pwd umask掩码。 文件描述符表包含很多指向file结构体的指针。 和信号相关的信息。 用户id和组id。 会话Session和进程组。 进程可以使用的资源上限Resource Limit。 ulimit -a 2.4 进程状态(面试考) 进程基本的状态有5种。分别为初始态就绪态运行态挂起态与终止态。其中初始态为进程准备阶段常与就绪态结合来看。 3 创建进程 3.1 fork函数 函数作用创建子进程 原型: pid_t fork(void); 函数参数无 返回值调用成功:父进程返回子进程的PID子进程返回0 调用失败:返回-1设置errno值。 ● fork函数代码片段实例 调用fork函数的内核实现原理: ● fork函数总结 ►fork函数的返回值 父进程返回子进程的PID是一个大于0数; 子进程返回0 特别需要注意的是不是fork函数在一个进程中返回2个值而是在父子进程各自返回一个值。 ►子进程创建成功后代码的执行位置 父进程执行到什么位置子进程就从哪里执行 ►如何区分父子进程 通过fork函数的返回值 ►父子进程的执行顺序 不一定哪个进程先抢到CPU哪个进程就先执行 3.2 ps命令和kill命令 ps aux | grep “xxx” ps ajx | grep “xxx” -aall当前系统所有用户的进程 -u查看进程所有者及其他一些信息 -x显示没有控制终端的进程 – 不能与用户进行交互的进程【输入、输出】 -j: 列出与作业控制相关的信息 kill -l 查看系统有哪些信号 kill -9 pid 杀死某个线程 3.3 getpid/getppid getpid - 得到当前进程的PID pid_t getpid(void); getppid - 得到当前进程的父进程的PID pid_t getppid(void); 3.3 练习题 编写程序循环创建多个子进程要求如下 1.多个子进程是兄弟关系。 2.判断子进程是第几个子进程 画图讲解创建多个子进程遇到的问题 注意若让多个子进程都是兄弟进程必须不能让子进程再去创建新的子进程。 编写程序测试父子进程是否能够共享全局变量 重点通过这个案例讲解读时共享写时复制 4 exec函数族 4.1 函数作用和函数介绍 有的时候需要在一个进程里面执行其他的命令或者是用户自定义的应用程序此时就用到了exec函数族当中的函数。 使用方法一般都是在父进程里面调用fork创建处子进程然后在子进程里面调用exec函数。 execl函数 函数原型: int execl(const char *path, const char arg, … / (char *) NULL */); 参数介绍 path: 要执行的程序的绝对路径 变参arg: 要执行的程序的需要的参数 arg:占位通常写应用程序的名字 arg后面的: 命令的参数 参数写完之后: NULL 返回值若是成功则不返回不会再执行exec函数后面的代码若是失败会执行execl后面的代码可以用perror打印错误原因。 execl函数一般执行自己写的程序。 execlp函数 函数原型: int execlp(const char *file, const char arg, …/ (char *) NULL */); 参数介绍 file: 执行命令的名字, 根据PATH环境变量来搜索该命令 arg:占位 arg后面的: 命令的参数 参数写完之后: NULL 返回值若是成功则不返回不会再执行exec函数后面的代码若是失败会执行exec后面的代码可以用perror打印错误原因。 execlp函数一般是执行系统自带的程序或者是命令. 4.2 exec函数族原理介绍 exec族函数的实现原理图 如execlp(“ls”, “ls”, “-l”, NULL); 总结 exec函数是用一个新程序替换了当前进程的代码段、数据段、堆和栈原有的进程空间没有发生变化并没有创建新的进程进程PID没有发生变化。 4.3 exec函数练习 使用execl函数执行一个用户自定义的应用程序 使用execlp函数执行一个linux系统命令 注意当execl和execlp函数执行成功后不返回并且不会执行execl后面的代码逻辑原因是调用execl函数成功以后exec函数指定的代码段已经将原有的代码段替换了。 5 进程回收 5.1 为什么要进行进程资源的回收 当一个进程退出之后进程能够回收自己的用户区的资源但是不能回收内核空间的PCB资源必须由它的父进程调用wait或者waitpid函数完成对子进程的回收避免造成系统资源的浪费。 5.2 孤儿进程 孤儿进程的概念 若子进程的父进程已经死掉而子进程还存活着这个进程就成了孤儿进程。 为了保证每个进程都有一个父进程孤儿进程会被init进程领养init进程成为了孤儿进程的养父进程当孤儿进程退出之后由init进程完成对孤儿进程的回收。 模拟孤儿进程的案例 编写模拟孤儿进程的代码讲解孤儿进程验证孤儿进程的父进程是否由原来的父进程变成了init进程。 5.3 僵尸进程 僵尸进程的概念: 若子进程死了父进程还活着 但是父进程没有调用wait或waitpid函数完成对子进程的回收则该子进程就成了僵尸进程。 如何解决僵尸进程 由于僵尸进程是一个已经死亡的进程所以不能使用kill命令将其杀死 通过杀死其父进程的方法可以消除僵尸进程。 杀死其父进程后这个僵尸进程会被init进程领养由init进程完成对僵尸进程的回收。 模拟僵尸进程的案例 编写模拟僵尸进程的代码讲解僵尸进程, 验证若子进程先于父进程退出, 而父进程没有调用wait或者waitpid函数进行回收, 从而使子进程成为了僵尸进程. 5.4 进程回收函数 wait函数 函数原型 pid_t wait(int *status); 函数作用 阻塞并等待子进程退出 回收子进程残留资源 获取子进程结束状态(退出原因)。 返回值 成功清理掉的子进程ID 失败-1 (没有子进程) status参数子进程的退出状态 – 传出参数 WIFEXITED(status)为非0 → 进程正常结束 WEXITSTATUS(status)获取进程退出状态 WIFSIGNALED(status)为非0 → 进程异常终止 WTERMSIG(status)取得进程终止的信号编号。 wait函数练习 使用wait函数完成父进程对子进程的回收 waitpid函数 函数原型 pid_t waitpid(pid_t pid, int *status, in options); 函数作用 同wait函数 函数参数 参数 pid pid -1 等待任一子进程。与wait等效。 pid 0 等待其进程ID与pid相等的子进程。 pid 0 等待进程组ID与目前进程相同的任何子进程也就是说任何和调用 waitpid()函数的进程在同一个进程组的进程。 pid -1 等待其组ID等于pid的绝对值的任一子进程。(适用于子进程在其他组的情况) status: 子进程的退出状态用法同wait函数。 options设置为WNOHANG函数非阻塞设置为0函数阻塞。 函数返回值 0返回回收掉的子进程ID -1无子进程 0参3为WNOHANG且子进程正在运行。 waitpid函数练习 使用waitpid函数完成对子进程的回收
http://www.zqtcl.cn/news/122187/

相关文章:

  • 网站改版提交给百度个人定做衣服店
  • 网站接广告网站用途说明
  • 中兴豫建设管理有限公司网站中小企业网站建设济南兴田德润o厉害吗
  • 枣庄有做网站的吗网站 关键词 多少个
  • 广州10大网站服务品牌做网站买了域名之后
  • 北京网站备案电商网站建设考试
  • 微信官网网站虚拟主机网站被挂马
  • 怎么看网站是不是h5做的建设网站的目的和功能
  • 购销网站建设视频百度云中国数据网
  • 网站运营队伍与渠道建设成都开发网站建设
  • 手机网站图片宽度做儿童交互网站
  • 商家入驻型网站建设中小型企业查询网址
  • 园区网站建设服务公司wordpress添加好友
  • 网站建设有哪些推广渠道洛阳小程序开发公司
  • 网站的icp备案平面设计网格
  • 东莞网站建设免费服务器营销是什么意思
  • 内容管理网站建设方案阿里云wordpress搭建
  • 静安微信手机网站制作中企动力做网站费用
  • 北京网站建设交易凡客诚品特色
  • 免费建设旅游网站学校网站开发方案
  • 专门做网站的科技公司青岛做网站哪家专业
  • 佛山网站优化效果珠海婚恋网站建设市场分析
  • 贵阳建设公司网站个人网站必须备案
  • 万网网站备案域客式单页网站能申请域名吗
  • 网站建设公司哪家好 都来磐石网络建设银行网络平台
  • 微营销网站建设免费建设网站教程
  • c .net怎么做网站如何进行账号推广
  • 网站建设丨金手指谷哥12怎么看网站做的外链
  • 一个空间建多个网站青海培训网站建设公司
  • 网站国际联网备案大型外贸网站建设