Chapter8-进程和程序.pptVIP

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Chapter8-进程和程序

Unix/Linux编程 北京化工大学 信息科学与技术学院计算机系 易军凯 yijk@mail.buct.edu.cn 第8章 进程和程序:编写命令解释器和 sh 概念与技巧: Unix shell的功能 Unix的进程模型 如何执行一个程序 如何创建一个程序 父进程和子进程之间如何通信 相关的系统调用: fork exec wait exit 相关命令: sh ps 8.1 进程=运行中的程序 8.2 通过命令ps学习进程 8.3 shell:进程控制和程序控制的一个工具 8.4 shell是如何运行程序的 8.5 实现一个shell:psh2.c 8.6 思考:用进程编程 8.7 exit和exec的其他细节 主要内容: 数据和程序存储在磁盘文件中,程序在进程中运行. 一个程序是存储在文件中的机器指令序列.一般它是由编译器将源代码译成二进制的代码.运行一个程序意味着将这个机器指令序列载入内存然后让CPU逐条执行这些代码. 进程 文件 系统中的进程和程序 8.1 进程=运行中的程序 用户空间容纳进程 ls:文件系统容纳文件和目录 进程存在于用户空间.用户空间是存放运行的程序和它们的数据的一部分内存空间。 ps:查看用户空间的内容。 Ps命令列出当前进程 每个进程都有唯一标识它的数字(PID).每个进程都与一个终端相连.每个进程都有一个已运行的时间. 8.2 通过命令ps学习进程 文件系统容纳文件和目录 $ ps -a -a选项列出所有进程,包括在其他终端由其他用户运行的程序。 $ ps -1a 名为S的一列表示进程的状态。S列的值R说明ps对应的进程正在运行。其他进程的S列值都是S,说明它们都处于睡眠状态。 注意:ps对已运行时间统计并不是非常精确的 8.2.1 系统进程 1 进程可以分为2种: (1)用户运行的进程 (2)Unix系统用来完成系统任务的进程 2 系统进程做些什么? 系统进程的很大一部分是没有与终端与之相连接的.它们在系统启动时启动,而不是由用户在命令行输入. 系统进程的工作:内核缓冲,虚存页面,管理系统日志,调度批任务,防范可能的攻击和让一般的用户登陆. 8.2.2 进程管理和文件管理 文件包含数据,进程包含可执行代码.文件有一些属性,进程也有一些属性.内核建立和销毁文件,进程类似. 8.2.3 内存和程序 进程:内存中的一些字节. 进程存在于用户空间. 内存:连续的字节数组. 计算机内存的3种模式 Shell是一个管理进程和运行程序的程序.常用的shell有以下三个功能: (1)运行程序 (2)管理输入和输出 shell不仅仅是运行程序.使用 和|符号可以将输入、 输出重定向。 (3)可编程 shell同时也是带有变量和流程控制的编程语言. 8.3 shell:进程控制和程序控制的一个工具 Shell主循环执行步骤: (1) 用户键入a.out (2)Shell建立一个新的进程来运行这个程序 (3)Shell将程序从磁盘载入 (4)程序在它的进程中运行直到结束 用户要求shell运行一个程序 Shell是一个管理进程和运行程序的程序 8.4 shell是如何运行程序的 为了要写一个shell,我们需要学会: (1)运行一个程序 (2)建立一个程序 (3)等待exit() Shell由下面的循环组成: while(! end_of_input) get comman execute command wait for command to finish Shell主循环的时间轴 8.4.1 Shell的主循环 8.4.2 问题1:一个程序如何运行另一个程序 答案:程序调用execvp() 1 程序调用 execvp 2 内核从磁盘将程序载入 3 内核将arglist复制到进程 4 内核调用main(argc,argv) 注意: 将数组的第一个元素置为程序的名称.最后一个元素必须是null. 注意: execvp()如果出错则返回值是-1 execvp有两个参数:progname和arglist Unix如何运行一个程序: 1.将指定的程序复制到调用它的进程 2.将指定的字符串数组作为argv[]传给这个程序。 3.运行这个程序 例1:execdemo.c 怎样去运行一个程序 目的:运行指令ls-l/usr/bin main() {char *args[5]={“ls”,”ls”,”-l”,”/usr/b

文档评论(0)

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

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

1亿VIP精品文档

相关文档