Linux课程介绍-第七章.pptVIP

  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文档。上传文档
查看更多
Linux课程介绍-第七章.ppt

Linux系统管理与应用 计算机科学与技术教研室 主讲:王震 第7章 Linux环境编程 主要内容 系统调用和库函数简介 文件操作 进程管理和同步 进程通信 内存管理 1、进程控制 Linux进程模型:函数fork()用于创建一个新的进程,该进程是原进程的一个完全拷贝;调用函数execve()可以再进程中用另外的程序来替换当前的进程。 运行另外的程序通常包含了上述两种操作,可能还会改变前后运行的程序 2、进程属性 一个进程由如下元素组成 程序当前的上下文,即程序执行的当前状态 程序的当前执行目录 程序访问的文件和目录 程序的信任状态或者说访问权限 内存和其他分配给进程的系统资源 2.1进程标志号 进程:自己的进程号pid,父进程号ppid 一个pid唯一标志一个进程 所有进程追溯祖先最终都是进程号1上,即init进程 实例:pripds.c 2.2 real和effective标识号 进程属性 进程id getpid() 父进程id getppid() 真实用户id getuid() 有效用户id geteduid 真实用户组id getgid() 有效用户组id getegid() 实例:ids.c 3 创建进程 3.1 使用system函数 System函数通过传递给/bin/sh –c来执行string所指定的命令,string钟可以包含选项和参数,接着整个命令行(/bin/sh –c string)又传递给系统调用execve。 如果没有找到/bin/sh,则返回127;如果出现其他错误,返回-1;如果执行成功,则返回string代码 实例:system.c 3.2 fork系统调用 fork调用创建一个新进程。新的进程或者说是子进程是调用进程或者说是父进程的副本。 fork语法如下: #includeunisted.h pid_t fork(void) 如果fork执行成功,就向父进程返回子进程的pid,并向子进程返回0.意味着你即使调用fork一次,也会返回两次 3.2 fork系统调用 Fork创建的进程是和父进程(出了pid和ppid外)完全一样的副本,包括真实的和有效的uid、gid、进程组和会话id、环境、资源限制、打开的文件以及共享内存段。 子进程没有继承父进程的超时限制、父进程的文件锁、或者未决信号 实例:child.c 3.3 exec函数族 exec函数实际上是包含了6个函数的函数族(execl/execlp/execle/execv/exxecve/execvp) exec 函数用被执行的程序完全替换了调用进程的映像。Fork创建一个新进程就产生了一个新的pid,exec启动一个新进程,替换原有的进程 execve 接受3个参数:path、argv、envp 实例:execve.c 3.4 控制程序 等待进程-wait函数家族 用fork或者exec创建一个新进程后,为了收集新进程的推出状体并防止出现僵进程,父进程应该等待子进程终止。 子进程消亡后,所占有的内存和其它资源都会释放,但是在内核的进程表中还有一条记录等待父进程收回。这就是僵进程。 使用wait或者waitpid调用可以收集子进程的推出状态。 例子:waitpid.c 4.1 什么是线程 线程是在共享内存空间中并发的多道执行路径,共享一个进程的资源。 进程切换需要花费很大的上下文切换开销;线程则不需要(属于同一个上下文) 4.2 _ _clone函数调用 _ _clone函数是fork函数的替代,能够更多的控制父进程和子进程之间共享了哪些进程资源 #include sched.h int __clone(int (*fn)(void *fnarg),void *child_stack, int flags, void *arg) (fn*)(void *fnarg)是函数指针,当执行子程序时调用这个函数。fnarg是传递给fn的参数。 child_stack是指向你为子进程分配的堆栈的指针。 flags是多种参数 *arg被传递给子函数,取值和用法取决于编程者。 4.3 pthread接口 pthread是一种标准化模型,用于把一个程序分成一组能够同时执行的任务。 pthread用场: 在阻塞i/o任务返回前,继续执行其他处理 一边进行后台处理,一边相应ui输入 一边处理网络通信等异步事件,一边继续正常的处理 保证某些程序功能的优先级,同时保证所有任务运行 4.3 pthread接口 pthread_create函数 创建新进程: #includepthread.h int pthread_create(pthread_t *thread, pt

文档评论(0)

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

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档