期末复习必备:linux整理后.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程管理什么是进程:an address space with one or more threads executing within that address space, and the required system resources for those threads. (SUSv3)进程控制块:struct task_struct搜了一下定义超级长,想知道自己看吧,下图阴影即是(将堆栈指针esp的低13位去掉即可找到struct task_struct)进程的启动和终止(main函数,C程序的内存布局,exit和_exit)?:进程的启动和终止5种进程终止的方式:Normal :return from “main” function exit //库函数,功能比_exit多,会做一些清理工作(见上图)_exit //系统调用,Abnormal :Call “abort” functionTerminated by a signalC程序的内存布局:(主要包含三段Text segment (code segment) ,Data segment,Stack)exit和_exit库函数:#include stdlib.hvoid exit(int status);系统调用:#include unistd.hvoid _exit(int status);区别:1. _exit 是一个系统调用, exit是一个库函数2. _exit 立即终结进程,exit需要做一些清理工作再返回内核。ps和pstree命令这两个命令按照您的指示显示系统当前运行的进程列表。 ps及参数列出进程的名称和信息pstree 列出进程的子父进程关系不带参数运行 ps 将只显示您启动并附加到当前终端的进程: $ ps PID TTY TIME CMD 18614 pts/3 00:00:00 bash 20173 pts/3 00:00:00 ps常用选项的有: a:显示由其他用户启动的进程;x:显示没有控制终端或控制终端不是当前终端的进程;u:为每个进程显示启动它的用户和启动的时间。init进程linux系统动时,它将运行一个名叫init的进程,该进程是系统运行的第一个进程,进程号为1。是其他所有进程的祖先进程。四个基本系统调用:fork, exec, wait, exit;fork:产生一个子进程(完全复制父进程的映像)#include sys/types.h#include unistd.hPid_tfork (void);返回值: 成功:在父进程之得到子进程pid,子进程中得0失败:在父进程中得-1exec:用新的进程映像代替原有的进程。保留原有的pid, ppid, uid, gid, working directory, root directory …但euid/egid会变,打开的文件描述符也会保留。Exec函数族:#include unistd.hextern char **environ;int execl(const char *path, const char *arg, ...);int execlp(const char *file, const char *arg, ...);int execle(const char *path, const char *arg, ..., char * const envp[]);int execv(const char *path, char * const argv[]);int execvp(const char *file, char * const argv[]);#include unistd.hint execve(const char *filename, char * const argv[], char * const envp[]);//其它的都是通过这个实现的。注:有p的,在PATH环境变量中查可执行文件路径;有e的,将char * const envp[]作为新程序的环境变量;有l 的,表示参数以list传递,以(void*)0表示参数结束;有v的,表示参数以数组传递。Wait:等待进程终结#include sys/types.h#include sys/wait.hpid_t wait(int *status);pid_t waitpid(pid_t pid, int *status, int options);JJS复习提到了僵尸进程:僵尸进程:子先死,父未死。还保留子的退出信息,成为僵尸进程。解决方法:1.父进程终结,由init收养子进程,统一释放。 2.父进程调用wait/wait

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档