版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 茶叶买卖购销合同范本
- 合伙购房协议书范本
- 订做安装防护栏、铝合金窗的协议
- 高三一轮复习 课件 第15讲 构造地貌的形成
- 2017-2018历史人教版必修2第11课经济建设的发展和曲折作业
- 人教PEP版英语四年级上册Unit6单元练习
- 北京人朝初一分班考英语试题及答案
- 清单07求阴影部分面积的五大经典方法(5种题型解读(30题))
- 工程项目安全生产预控目标合同书
- 工程文件的归档范围及质量要求
- 瓦斯超限事故专项应急预案详解
- 水资源分区表、等值线图绘制、年河川径流系列一致性处理方法、平原区、山丘区地下水资源量、水资源总量计算
- 风电工程项目质量控制管理
- 变压器油枕胶囊式和金属波纹式的区别
- 公司薪酬管理制度
- 张爱玲完整版课件
- DB1506T 13-2020 热力站建设技术标准
- 梯形递减表初中英语
- 《送东阳马生序》- 完整版课件
- 风险分级管控课件
- 顶管施工的始发 接收施工前验收条件
评论
0/150
提交评论