操作系统课件 第十二章 UNIX 实例分析(2).ppt

操作系统课件 第十二章 UNIX 实例分析(2).ppt

ID:51500035

大小:70.00 KB

页数:18页

时间:2020-03-25

操作系统课件 第十二章 UNIX 实例分析(2).ppt_第1页
操作系统课件 第十二章 UNIX 实例分析(2).ppt_第2页
操作系统课件 第十二章 UNIX 实例分析(2).ppt_第3页
操作系统课件 第十二章 UNIX 实例分析(2).ppt_第4页
操作系统课件 第十二章 UNIX 实例分析(2).ppt_第5页
资源描述:

《操作系统课件 第十二章 UNIX 实例分析(2).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、12.6设备管理打开一个设备文件即相当于申请对应的设备,如该设备已处于打开状态则等待关闭一个设备文件即相当于释放对应的设备,如有等待者则唤醒一个读写一个设备文件就相当于对所对应的设备执行I/O操作缓冲与缓存块型设备缓冲用于磁盘、磁带等设备的I/O传输每个缓冲区的长度与块型物理设备中一个块的长度相同,即为512字节缓冲区为所有块型设备公用,其总数为15个块型设备缓冲structbuf{intb_flags;/*seedefinitionbelow*/structbuf*b_forw;/*headedbydevtab

2、ofb_dev*/structbuf*b_back;/*设备b链向后指针*/structbuf*av_forw;/*av链向前指针*/structbuf*av_back;/*av链向后指针*/intb_dev;/*设备名*/intb_wcount;/*传送字数*/char*b_addr;/*内存地址(低位)*/char*b_xmem;/*内存地址(高位)*/char*b_blkno;/*设备物理块号*/charb_error;/*返回出错信息*/char*b_resid;/*传送剩余字节*/}buf[NBUF];

3、块型设备控制结构structdevtab{chard_active;/*busyflag*/chard_erncnt;/*errorcount*/structbuf*b_forw;/*firstbufferforthisdev*/structbuf*b_back;/*lastbufferforthisdev*/structbuf*d_actf;/*headofIOqueue*/structbuf*d_actl;/*tailofIOqueue*/}块缓冲数据读写内存区缓冲区磁盘块iomovebread,breada

4、bwrite,bawrite,bdwrite字符型设备缓冲缓冲池structcblock{structcblock*c_next;/*pointer*/charinfo[6];/*infocontainer*/}读操作写操作预先读与延迟写预先读(readahead)将以后即将使用的块读入缓冲区中以后进程需要该块时便可在缓冲区中直接得到,不必等待设备I/O传输基于文件顺序访问的假设延迟写(delayedwrite)当一个缓冲块尚未写满时,暂不将其写到外存以后继续写时,不必将该块由外存读入内存12.7系统调用主要包括

5、ProcessmanipulationFilemanipulationCommunicationOthers12.7.1有关进程的系统调用命令相关系统调用创建子进程Pid=fork()加载并执行新程序execl(prog,arg0,…argn-1,0)进程自我结束exit(status)等待子进程终止pid=wait(&status)proc结构p_pid=9p_ppid=5user结构pid=fork();if(pid==0)/*成立*/{/*子进程代码*/}else{/*父进程代码*/}…proc结构p_pi

6、d=15p_ppid=9user结构复制父进程子进程fork()创建子进程联系子进程号(>0整数)pid=fork();if(pid==0)/*不成立*/{/*子进程代码*/}else{/*父进程代码*/}…恒为0pid=fork();if(pid==0)/*不成立*/{execl(“P”,0);}else{/*父进程代码*/}…proc结构p_pid=9p_ppid=5user结构pid=fork();if(pid==0)/*成立*/{execl(“P”,0);}else{/*父进程代码*/}…proc结构p_

7、pid=15p_ppid=9user结构父进程子进程execl()加载并执行新程序pid=fork();if(pid==0)/*不成立*/{execl(“P”,0);}else{/*父进程代码*/}…proc结构p_pid=9p_ppid=5user结构程序P(覆盖原来程序)proc结构p_pid=15p_ppid=9user结构父进程子进程execl()加载并执行新程序pid=fork();if(pid==0)/*不成立*/{execl(“P”,0);}else{/*父进程代码*/}…proc结构p_pid=9

8、p_ppid=5user结构程序P(覆盖原来程序)exit(2)proc结构p_pid=15p_ppid=9user结构父进程子进程exit()进程自我终止pid=fork();if(pid==0)/*不成立*/{execl(“P”,0);}else{…p=wait(&s);}…proc结构p_pid=9p_ppid=5user结构…程序P(覆盖原来程序)…exit(2)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。