华科操作系统实验报告_第1页
华科操作系统实验报告_第2页
华科操作系统实验报告_第3页
华科操作系统实验报告_第4页
华科操作系统实验报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

课 程 实 验 报 告课程名称: 操 作 系 统 原 理 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 计算机科学与技术学院目录目录2实验一:线程的同步3一、实验目的3二、实验内容3三、实验心得6实验二:誊抄实验的进程实现7一、实验目的7二、实验内容7三、实验心得10实验三:Linux文件目录操作12一、实验目的12二、实验内容12三、实验心得14实验一:线程的同步一、实验目的1、掌握Linux系统用户界面中键盘命令的使用。2、学会一种Linux下的编程环境。3、掌握Linux下进(线)程的概念。4、了解Linux进程同步与通信的主要机制,并通过信号灯操作实现进程间的同步与互斥。二、实验内容1、程序要求 两个线程,共享公共变量a 线程1负责计算(+1) 线程2负责打印2、运行环境软件配置(含操作系统版本):ubuntu - 14.10硬件:PC3、源程序源程序:#include #include #include #include #include #include int semid;int a=0;typedef union senumint val;struct semid_ds *buf;unsigned short *array;struct seminfo *_buf;SEM_CTL_UN;void P(int semid,int index) struct sembuf sem; sem.sem_num = index; sem.sem_op = -1;/P sem.sem_flg = 0;/biaoji semop(semid,&sem,1);void V(int semid,int index) struct sembuf sem; sem.sem_num = index; sem.sem_op = 1; sem.sem_flg = 0; semop(semid,&sem,1);void* thread1(void *arg)int i=0;for(i;i8;i+)P(semid,0);printf(add:n);a=a+1;printf(a=%dn,a);V(semid,1);void* thread2(void *arg)int i=0;for(i;i%cn,*t); else printf(put-0n); V(semid,3); while(t0!=0); 头文件:#include #include #include #include #include #include #include #include #define LOOPS 10#define IPCKEY (key_t) 0x11#define SHMKEY1 (key_t)0x222#define SHMKEY2 (key_t)0x333void P(int semid,int index); void V(int semid,int index); int semid; void P(int semid,int index) /对标记符为semid的信号量集 中的第index个 /元素进行P操作(信号量操作要用到semop()函数) struct sembuf sem; /此数据类型在sys/sem.h中定义 sem.sem_num = index;/对信号量集中的第index个元素进行P操作 sem.sem_op = -1;/表示P操作 sem.sem_flg = 0;/操作标记:0或IPC_NOWAIT等 semop(semid,&sem,1);/1:要操作1个信号量void V(int semid,int index) struct sembuf sem;sem.sem_num =index;sem.sem_op=1;sem.sem_flg=0;semop(semid,&sem,1);return;4、实验结果实验结果截图如下:图2-1 誊抄问题进程实现三、实验心得本次实验实现了誊抄问题的进程实现,这是一个经典的进程问题,通过进程合作将源文件复制到目标文件中。本次实验相较于第一次实验较为复杂,涉及到了文件操作的相关系统调用等操作。实验中共享内存的设置是重点。通过本次实验,我对进程的合作有了更深的了解和认识,掌握了常用文件操作相关系统调用,熟悉了进程的同步于互斥,了解了exec函数组的用法。总而言之,通过本次试验我收获颇丰。实验三:Linux文件目录操作一、实验目的 了解并掌握Linux文件目录结构。二、实验内容1、程序要求 1)、熟悉Linux文件系统的使用; 2)、了解Linux文件系统目录结构; 3)、编程实现目录查询命令; 功能类似ls -l; 查询指定目录下的文件及子目录信息; 显示文件的类型、大小、时间等信息; 递归显示子目录中的文件信息;2、运行环境软件配置(含操作系统版本):ubuntu - 14.10硬件:PC3、源程序源程序:#include #include #include #include #include #include void printdir(char *dir, int depth)DIR *dp;struct dirent *entry;struct stat statbuf;if (dp=opendir(dir)=NULL)/打开目录不成功printf(open the file error!n);return ;chdir(dir);char s1000;while (entry=readdir(dp)!=NULL)/读到一个目录项 if (strcmp(entry-d_name,.)=0|strcmp(entry-d_name, .)=0)continue;/跳过strcpy(s,./);strcat(s,entry-d_name);lstat(s, &statbuf);/读取到了符号链接,lstat读取符号链接本身的状态信息if (S_ISDIR(statbuf.st_mode)/权限&类型 int i=0; for(i=0;id_name);/文件名 printdir(entry-d_name, depth+1);else int i=0; for(;id_name,statbuf.st_size, statbuf.st_ino); chdir(./);closedir(dp);void main(void) char dir1000; int depth=0;scanf(%s,dir); printdir(dir,depth);return;4、实验结果实验结果截图如下:图3-1 文件目录操作三、实验心得通过本次实验,我熟悉了Linux文件系统的使用,了解了Linux文件系统目录结构;实现了查询指定目录下的文件及子目录信息、显示文件

温馨提示

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

评论

0/150

提交评论