2012级操系统实验报告.docVIP

  • 18
  • 0
  • 约8.28万字
  • 约 20页
  • 2017-06-12 发布于河南
  • 举报
2012级操系统实验报告

哈 尔 滨 学 院 实 验 报 告 课程名称: 计算机操作系统 专 业: 软件工程 班 级: 12-8 学 号: 姓 名: 常燕如 教务处制 实验一 进程管理 【实验目的与要求】 ⒈ 加深对进程概念的理解,明确进程与程序的区别。 ⒉ 掌握Linux进程创建及撤销的方法,进一步认识并发执行的实质。 ⒊ 掌握Linux系统下守护进程的创建方法。 【实验原理】 ⒈ Linux进程管理命令 ⑴进程查看 ⑵进程终止 ⑶进程优先级设置 ⒉ Linux进程控制函数 ⑴创建和修改进程 ⑵设置进程属性 ⑶获取进程属性 ⑷进程的退出 ⒊ Linux守护进程 ⑴独立启动守护进程 ⑵超级守护进程 ⑶守护进程的编写流程 守护进程的编写遵循特定的流程,主要包括五个步骤: Step⒈ 创建子进程,退出父进程 Step⒉ 在子进程中创建新会话 Step⒊ 改变当前目录为根目录 Step⒋ 重设文件权限掩码 Step⒌ 关闭文件描述符 【实验主要仪器与材料】 ⒈ 带Linux操作系统的PC机 ⒉ GCC编译器 【实验内容】 ⒈ 获取进程信息 通过管理命令,获取系统当前执行进程的信息,包括进程名称与ID、PID和PGID等。 ⒉ 创建进程 编程程序,实现父进程创建一个子进程,返回后父子进程都分别循环输出字符串“I am parent.”或“I am child.”5次,每输出一次延时1秒(sleep(1)),然后进入下一次循环。观察并分析运行结果。然后将程序改为父子进程同步执行:子进程循环输出字符串“I am child.”5次,然后父进程再循环输出字符串“I am parent.”5次。再次观察并分析运行结果。 【实验步骤及实验结果分析】 ⒈ 实验内容1 通过进程实现及验证父进程及子进程的id号的命令 ps -lg ⒉ 实验内容2 ⑴实现父进程创建一个子进程,返回后父子进程都分别循环输出字符串“I am parent.”或“I am child.”5次,每输出一次延时1秒(sleep(1)),然后进入下一次循环。 #includesys/types.h #includeunistd.h #includestdio.h int main() { pid_t pt; printf(Hello world!\n); int i; pt=fork(); for(i=0;i5;i++) { if(pt==-1) printf(Fork error.\n); else if{ printf(I am a parent.\n); Sleep(1); } else{ printf(I am a child.\n); Sleep(1); } } return 0; } ⑵父子进程同步执行:子进程循环输出字符串“I am child.”5次,然后父进程再循环输出字符串“I am parent.”5次。 #includesys/types.h #includeunistd.h #includestdio.h int main() { pid_t pt; printf(Hello world!\n); int i; pt=fork(); for(i=0;i5;i++) { if(pt==-1) printf(Fork error.\n); else if{ printf(I am a parent.\n); } else{ printf(I am a child.\n); } } return 0; } 【思考题】 ⒈ 程序和进程的区别。 (1)程序是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态和可以复制。 (2)进程是暂时的,程序是永久的:进程是一个状态变化的过程,程序可长久保存。 (3)进程和程序的组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息)。 (4)进程和程序的对应关系:通过多次执行,一个程序可对应多个

文档评论(0)

1亿VIP精品文档

相关文档