操作系统实验三-进程.doc_第1页
操作系统实验三-进程.doc_第2页
操作系统实验三-进程.doc_第3页
操作系统实验三-进程.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统实验三完成人:谌浩旗 学号:71109424 日期:2011-4-8【实验内容】在Linux操作系统上,利用fork()创建一个子进程去生成Fibonacci数列,并采用POSIX share memory 将结果传递给父进程,具体要求见”Operating System Concepts(Seventh Edition)” Chapter 3后的习题3.10。编写程序并在父进程中输出测试结果【实验目的】1. 通过实验,了解Unix/Linux中新进程的创建,以及父进程与子进程之间关系2. 通过实验,掌握共享内存的创建、使用和删除【设计思路】1. 在创建子进程的前面用相应的函数创建共享内存2. 创建子进程,并在子进程内修改内存中存储的值3. 在父进程中输出内存中存储的值 【流程图】创建共享内存创建子进程并修改内存的值父进程中输出修改后的值【主要数据结构及其说明】struct Fibonacci /结构体,用来存储long fib_sequence MAX_SEQUENCE; /数组,存储Fibonacci数值int sequence_size; /数组的大小 shared_data;【源程序并附上注释】#include #include #include #include #include #include #define MAX_SEQUENCE 10/定义共享内存段数据结构typedef struct long fib_sequence MAX_SEQUENCE; int sequence_size; shared_data;int main(int argc, char *argv) /读取表示数列长度的参数,将其转化为int型 int size = 0; int i = -1; while(argv2+i != 0)size = size * 10 + (int)argv2i - (int)0; /参数合法判断 if (size MAX_SEQUENCE) printf(wrong argumentn); return -1; /共享内存段标识符 int segment_id; /一个指向共享内存段的指针 shared_data *shared_memory; /创建共享内存段 segment_id = shmget(IPC_PRIVATE, sizeof(shared_data), S_IRUSR | S_IWUSR); /加入共享内存 shared_memory = (shared_data *)shmat(segment_id, NULL, 0); /将来自命令行的参数赋值给shared_data shared_memory-sequence_size = size; /创建子进程 pid_t pid; pid = fork(); /创建失败 if (pid 0) printf(create child process failedn);return -1; /子进程操作 else if (pid = 0) /构造Fabonacci数列,并将数据写入共享内存段long preNum = 0, behNum = 1, temp;for (int i = 0; i sequence_size; +i) shared_memory-fib_sequencei = behNum; temp = preNum + behNum; preNum = behNum; behNum = temp;/子进程分离共享内存段 shmdt(shared_memory); /父进程操作 else if (pid 0) /等待子进程退出wait(NULL);/打印共享内存段的信息printf(Fibonacci: );for (int i = 0; i sequence_size; +i) printf(%ld , shared_memory-fib_sequencei);printf(n);/父进程分离共享内存段shmdt(shared_memory);/父进程删除共享内存段shmctl(segme

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论