网站大量收购独家精品文档,联系QQ:2885784924

第8.1章 Linux编程—进程操作与同步函数PPT.ppt

第8.1章 Linux编程—进程操作与同步函数PPT.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8.1章 Linux编程—进程操作与同步函数PPT

Linux操作系统精讲 大连理工大学软件学院 邱铁 综合楼413,Tel:0411E_mail: qiutie@dlut.edu.cn 参考教材: 《Linux应用与开发典型实例精讲》 清华大学出版社. 2010.5 第8章 进程操作 学习本章要达到的目标: 1.了解Linux进程工作的原理。 2.掌握Linux进程操作函数的使用。 3.熟悉Linux信号量的相关知识。 4.掌握Linux信号量操作的函数,理解并掌握P、V操作。 8.1 Linux进程工作原理 Linux是一个多任务的操作系统,在Linux中采用进程作为任务调度的单位 进程与程序的区别 进程是一段运行的有生命力的程序,它是一个动态的概念; 程序是存储在磁盘或其他存储介质中的静态代码,是一种静态的概念 Linux进程有五种状态,Linux通过维护者五个状态来调度进程的运行。这五个状态分别为:运行、可中断、不可中断、僵死、停止 Linux的进程在宏观上是并行的,Linux可以同时运行多个进程 在微观上,各个进程是串行的,在同一时刻只能有一个进程处于“正在运行”的状态 Linux通过进程号PID来标识不同的进程的,Linux中每一个进程都有一个唯一的进程号 在新的环境变量下执行命令 #include unistd.h int execve(const char *filename, char * const argv[], char * const envp[]); 根据环境变量执行命令。 #include unistd.h int execvp(const char *filename, char * const argv[]); int execlp(const char *filename, const char *arg, ...); 取得当前进程的进程号 #include unistd.h pid_t getpid(void); 取得当前进程父进程的进程号 #include unistd.h pid_t getppid(void); 获取指定进程(getpgid)或当前进程(getpgrp)的组识别码 #include unistd.h pid_t getpgid(pid_t pid); pid_t getpgrp(void); 取得指定进程、进程组或用户的优先级 #include sys/time.h #include sys/resource.h int getpriority(int which, int who); 设置指定进程的组识别码 #include unistd.h int setpgid(pid_t pid, pid_t pgid); 设置指定进程、进程组、用户的优先级 #include sys/time.h #include sys/resource.h pid_t setpriority(int which, int who, int prio); 暂停当前进程的执行,等待子进程的中端或结束 #include sys/types.h #include sys/wait.h pid_t wait(int *status); 暂停当前进程的执行,等待子进程的中端或结束 #include sys/types.h #include sys/wait.h pid_t waitpid(pid_t pid, int *status, int options); 结束当前进程 #include unistd.h void _exit(int status); 设定当进程结束时需要运行的函数 #include unistd.h int atexit(void (*function)(void)); 设定当进程正常结束时需要运行的函数 #include unistd.h int on_exit(void (*function)(int ,void *), void *arg); 8.3 信号量 操作系统需要解决进程之间资源合理分配的问题 Linux采用信号量(Semaphore)来解决这一问题,一个信号量表示可用资源的数量 对信号量有两种操作 P(S):信号量的值S=S-1,如果S?0,则正常运行,如果S0,则进程暂停运行进入等待队列。 V(S):信号量的值S=S+1,如果S0,则正常运行,如果S?0,则从等待队列中选择一个进程使其继续运行,进程V操作的进程仍继续运行。 8.4 信号量操作的函数 创建并打开一个信号量集,或打开一个以创建的信号量集 #include sys/sem.h int semget(key_t key, int nsem

文档评论(0)

erfg4eg + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档