




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux操作系统精讲大连理工大学软件学院
邱铁综合楼413,Tel_mail: qiutie@参考教材:《Linux应用与开发典型实例精讲》 清华大学出版社.2010.5第8章进程操作
学习本章要达到的目标:1.了解Linux进程工作的原理。2.掌握Linux进程操作函数的使用。3.熟悉Linux信号量的相关知识。4.掌握Linux信号量操作的函数,理解并掌握P、V操作。8.1Linux进程工作原理Linux是一个多任务的操作系统,在Linux中采用进程作为任务调度的单位
进程与程序的区别进程是一段运行的有生命力的程序,它是一个动态的概念;程序是存储在磁盘或其他存储介质中的静态代码,是一种静态的概念
Linux进程有五种状态,Linux通过维护者五个状态来调度进程的运行。这五个状态分别为:运行、可中断、不可中断、僵死、停止
Linux的进程在宏观上是并行的,Linux可以同时运行多个进程在微观上,各个进程是串行的,在同一时刻只能有一个进程处于“正在运行”的状态Linux通过进程号PID来标识不同的进程的,Linux中每一个进程都有一个唯一的进程号8.2进程操作函数创建子进程,生成的子进程是父进程的完全复制
#include<unistd.h>pid_tfork(void);pid_tvfork(void);执行命令
#include<unistd.h>intexecv(constchar*path,char*constargv[]);intexecl(constchar*path,constchar*arg,...);在新的环境变量下执行命令
#include<unistd.h>intexecve(constchar*filename,char*constargv[],char*constenvp[]);根据环境变量执行命令。#include<unistd.h>intexecvp(constchar*filename,char*constargv[]);intexeclp(constchar*filename,constchar*arg,...);取得当前进程的进程号
#include<unistd.h>pid_tgetpid(void);取得当前进程父进程的进程号
#include<unistd.h>pid_tgetppid(void);获取指定进程(getpgid)或当前进程(getpgrp)的组识别码
#include<unistd.h>pid_tgetpgid(pid_tpid);pid_tgetpgrp(void);
取得指定进程、进程组或用户的优先级
#include<sys/time.h>#include<sys/resource.h>intgetpriority(intwhich,intwho);设置指定进程的组识别码#include<unistd.h>intsetpgid(pid_tpid,pid_tpgid);设置指定进程、进程组、用户的优先级
#include<sys/time.h>#include<sys/resource.h>pid_tsetpriority(intwhich,intwho,intprio);暂停当前进程的执行,等待子进程的中端或结束
#include<sys/types.h>#include<sys/wait.h>pid_twait(int*status);暂停当前进程的执行,等待子进程的中端或结束
#include<sys/types.h>#include<sys/wait.h>pid_twaitpid(pid_tpid,int*status,intoptions);结束当前进程
#include<unistd.h>void_exit(intstatus);设定当进程结束时需要运行的函数
#include<unistd.h>intatexit(void(*function)(void));设定当进程正常结束时需要运行的函数#include<unistd.h>inton_exit(void(*function)(int,void*),void*arg);8.3信号量操作系统需要解决进程之间资源合理分配的问题Linux采用信号量(Semaphore)来解决这一问题,一个信号量表示可用资源的数量对信号量有两种操作
P(S):信号量的值S=S-1,如果S
0,则正常运行,如果S<0,则进程暂停运行进入等待队列。
V(S):信号量的值S=S+1,如果S>0,则正常运行,如果S
0,则从等待队列中选择一个进程使其继续运行,进程V操作的进程仍继续运行。8.4信号量操作的函数创建并打开一个信号量集,或打开一个以创建的信号量集
#include<sys/sem.h>intsemget(key_tkey,intnsems,intsemflg);
对指定的信号量进行指定的操作
#include<sys/sem.h>intsemop(intsemid,structsembuf*sops,unsignednsops);
structsembuf{ ushortsem_num; shortsem_op; shortsem_flg;};对指定的信号量进行控制操作
#include<sys/sem.h>intsemctl(intsemid,intsemnum,intcmd,...);
cmd的常用可取值(非完全)如下:IPC_STAT 读取信号量的状态信息,返回到arg的buf元素中。IPC_RMID 删除指定的信号量(集)。GETPID 返回最后一个执行semop函数的进程的进程号。GETVAL 返回信号量的值。SETVAL 设置信号量的值,取自arg的val元素。8.5应用实例训练五位哲学家围坐在一张圆形桌子上,桌子上有一盘饺子。每一位哲学家要么思考,要么等待
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育新星的职业生涯规划从理论到实践的跨越
- 教育技术创新实验室的办公自动化升级
- 销售部经理安全生产职责
- 卫生院全员安全生产责任制
- 大数据驱动的实时异常行为监控与修复-洞察阐释
- 新时代背景下的财富保值增值策略探讨
- 高维数据的鲁棒性分析-洞察阐释
- 职场心理健康关注-洞察阐释
- 声音记忆与文化记忆的共生-洞察阐释
- 广告礼品供应商的数字化转型路径-洞察阐释
- 劳动仲裁内部培训
- 2025年云南普洱市墨江天下一双文旅体育集团有限公司招聘笔试参考题库附带答案详解
- 机械原理课程设计-冲压机构及送料机构设计说明书
- 品牌中国产业联盟简介ppt课件
- 肝素钠生产工艺综述
- 装载机安全培训
- 实验一机构运动简图绘制与分析
- 人民网删除稿件(帖文)申请登记表
- 综采维修钳工__矿井维修钳工题库
- 服装校服投标书模板(精编版)
- (完整版)可研性研究报告评审服务方案
评论
0/150
提交评论