操作系统实验报告
更新时间:2023-12-21 11:22:01 阅读量: 教育文库 文档下载
- 操作系统有哪些推荐度:
- 相关推荐
课 程 实 验 报 告
课程名称: 操作系统 专业班级:计算机科学与技术1003班 学 号: 姓 名: 鲁辰 指导教师: 报告日期: 2012.12.26
计算机科学与技术学院
目 录
0 Linux系统生成 .......................................................................................................... 3 1 实验一LINUX系统用户界面 实验二进(线)程同步与通信 ........................... 4
1.1 实验目的......................................................................................................... 4 1.2 预备知识......................................................................................................... 4
1.2.1 Linux下的信号灯及其P、V操作 ..................................................... 4 1.2.2 线程...................................................................................................... 4 1.2.3 共享内存.............................................................................................. 4 1.2.4 进程控制.............................................................................................. 5 1.2.5 编译、编辑、调试.............................................................................. 5 1.3 实验内容......................................................................................................... 5 1.4 运行结果......................................................................................................... 5 1.5 源代码............................................................................................................. 5 2在linux下编程实现P98 4-11 ................................................................................ 7
2.1 实验目的......................................................................................................... 7 2.2 预备知识......................................................................................................... 7
2.2.1 并发程序的誊抄.................................................................................. 7 2.2.2 誊抄的实现.......................................................................................... 7 2.3 实验内容......................................................................................................... 8 2.4 运行结果......................................................................................................... 8 2.5 源代码............................................................................................................. 9 3 实验三 Linux文件目录操作 ............................................................................... 13
3.1 实验目的、实验要求................................................................................... 13
3.1.1实验目的............................................................................................. 13 3.1.2 实验要求............................................................................................ 13 3.2 实验内容....................................................................................................... 13 3.3 预备知识....................................................................................................... 14
3.3.1 Linux文件属性接口 .......................................................................... 14 3.3.2 Linux目录结构接口 .......................................................................... 14 3.4 运行结果....................................................................................................... 15 3.5 源代码........................................................................................................... 15
2
0 Linux系统生成
步骤:
(1)安装Linux系统Ubuntu10.12 (2)使用ctrl+alt+T打开终端
(3)设置root用户及root用户密码:使用的命令如图所示
(4)进入root用户
(5)把源码包解压到 /usr/src/linux-3.6.3
(6)编译内核:使用make命令
(7)安装编译好的内核
(8)查看内核版本
3
1 实验一LINUX系统用户界面 实验二进(线)程同步与通信
1.1 实验目的
1、掌握Linux系统用户界面中键盘命令的使用。 2、学会一种Linux下的编程环境。 3、掌握Linux下进(线)程的概念。
4、了解Linux进程同步与通信的主要机制,并通过信号灯操作实现进程间
的同步与互斥。
1.2 预备知识
1.2.1 Linux下的信号灯及其P、V操作
表1. 1 P、V操作定义
P操作 void P(int semid,int index) { struct sembuf sem; sem.sem_num = index; sem.sem_op = -1; V操作 void V(int semid,int index) { struct sembuf sem; sem.sem_num = index; sem.sem_op = 1; sem.sem_flg = 0; //:操作标 sem.sem_flg = 0; semop(semid,&sem,1); 记:0或IPC_NOWAIT等 return; semop(semid,&sem,1); } //1:表示执行命令的个数 return; } 1.2.2 线程
表1. 2 线程相关函数
线程创建 线程挂起 pthread_create(pthread_t *thread, pthread_attr_t void *(*start_routine)(void *),void *arg); pthread_join(pthread_t th, void **thread_retrun); *attr, 1.2.3 共享内存
使用共享内存是运行在同一计算机上的进程进行进程间通信的最快的方法,shmget与shmat 系统调用。
4
1.2.4 进程控制
fork与execv系统调用 1.2.5 编译、编辑、调试
表1. 3 编译、编辑、调试
编译 编辑 调试 cc –o test -g test.c –lpthread cc –o sub1 sub1.c vi gdb 1.3 实验内容
实验一的程序要求:
两个线程,共享公共变量a 线程1负责计算(+1) 线程2负责打印 实现:
1、线程的同步与互斥 2、进程的同步与互斥 3、子进程的创建
1.4 运行结果
图1. 1 运行结果
1.5 源代码
#include
#include 2在linux下编程实现P98 4-11 2.1 实验目的 了解并发程序的执行过程和实现原理 2.2 预备知识 2.2.1 并发程序的誊抄 图2. 1 誊抄过程 get程序:负责从输入序列f中读取字符并送到缓冲区s中; copy程序:把缓冲区s中的数据复制到缓冲区t中去; put程序:从缓冲区t中取出数据打印。 2.2.2 誊抄的实现 图2. 2 誊抄的实现 在相应的圆圈对应的进程中,通过修改箭头上对应序号的信号灯控制进程的运行,设有4个信号灯分别为0、1、2、3 在进程中对信号灯的控制可简写为: get() copy() put() { { { p(0); p(1); p(3); get操作; p(2); put操作; copy操作; v(2); v(1); } v(0); } v(3); } 通过设置信号灯0的初值和利用通过设置信号灯1、2的初值和利通过设置信号灯3的初值和利用copy对信号灯0做v操作,使得用put对信号灯1做v操作、利用copy对信号灯3做v操作,使得当信号灯0的资源个数>0时,可get对信号灯2做v操作,使得当当信号灯3的资源个数>0时,可7 以进行get操作 信号灯1和信号灯2的资源个数均>0时,可以进行copy操作 以进行put操作 2.3 实验内容 1、实现: main、get、copy、put 4个函数 2、将这四个函数编译链接(使用makefile) 2.4 运行结果 图2. 3 运行结果 使用./main打开程序 8 2.5 源代码 main.c #include } else { if((p2=fork()) == 0){ execv(\ } else { if((p3=fork())==0){ execv(\ } } } p1=wait(&p1); p2=wait(&p2); p3=wait(&p3); /*for(i=0;i<3;i++) { while(-1!=wait()) ; }*/ if(semctl(semid,0,IPC_RMID,0)<0) printf(\ shmctl(shmid1,IPC_RMID,0); shmctl(shmid2,IPC_RMID,0); return 0; } get.c #include char *s,*t,str[]=\为输入的字符,实现一个一个字符的输入,输出,s,t指针当单个字符使用,即s[0],t[0]*/ semid = semget(IPCKEY,4,IPC_CREAT|0666); shmid1 = shmget(SHMKEY1,sizeof(char),IPC_CREAT|0666); s=(char *)shmat(shmid1,NULL,SHM_R|SHM_W);/* 绑定到共享内存块 */ do { P(semid,0); s[0]=str[i]; printf(\ i++; V(semid,2); }while(s[0]!='\\0'); } copy.c #include { P(semid,1); P(semid,2); strcpy(t,s); printf(\ V(semid,0); V(semid,3); }while(t[0]!='\\0'); } put.c #include }while(t[0]!='\\0'); } makefile all:get copy put main echo \get:get.o gcc -o get get.o copy:copy.o gcc -o copy copy.o put:put.o gcc -o put put.o main:main.o gcc -o main main.o get.o:get.c gcc -c get.c copy.o:copy.c gcc -c copy.c put.o:put.c gcc -c put.c main.o:main.c gcc -c main.c 3 实验三 Linux文件目录操作 3.1 实验目的、实验要求 3.1.1实验目的 了解并掌握Linux文件目录结构。 3.1.2 实验要求 了解Linux文件系统与目录操作: (1) Linux文件系统 :文件属性; (2)Linux目录结构:目录文件; (3)目录相关函数接口; 3.2 实验内容 1、熟悉Linux文件系统的使用; 2、了解Linux文件系统目录结构; 3、编程实现目录查询命令; ? 功能类似ls -lR; ? 查询指定目录下的文件及子目录信息; 13 显示文件的类型、大小、时间等信息; ? 递归显示子目录中的文件信息; 3.3 预备知识 3.3.1 Linux文件属性接口 表3. 1 文件属性接口 函数 int fstat(int fildes,struct stat *buf); 功能 返回文件描述符相关的文件的状态信息 int lstat(const char *path, struct stat 如读取到了符号连接,读取符号连接本*buf); 身的状态信息 int stat(const char *path, struct stat *buf); 如读取到了符号连接,读取的是符号连接指向文件的信息 stat结构体几乎保存了所有的文件状态信息: 本程序中主要用到st_mode 文件的权限信息和类型信息,检查类型时使用S_ISDIR(); 宏,检查是否是目录 3.3.2 Linux目录结构接口 表3. 2 目录结构接口 函数 功能 DIR *opendir(const char *name); 通过路径打开一个目录,返回一个DIR结构体 指针(目录流),失败返回NULL; struct dirent *readdir(DIR *) 读取目录中的下一个目录项,没有目录项可以 读取时,返回为NULL; int chdir(const char *path); 改变目录,与用户通过cd命令改变目录一样,程序也可以通过chdir来改变目录,这样使得 fopen(),opendir(),这里需要路径的系统调用,可以使用相对于当前目录的相对路径打开文件(目录)。 int closedir(DIR*) 关闭目录流 14 在本程序中,用到结构dirent中的char d_name[256]; (文件名)项 3.4 运行结果 图3. 1 运行结果 3.5 源代码 #include lstat(entry->d_name,&statbuf); if(S_ISDIR(statbuf.st_mode)){ if(strcmp(entry->d_name,\ continue; printf(\%d \ printf(\%s\\n\ printdir(entry->d_name,depth+1); } else { printf(\\ printf(\%s\\n\ } } chdir(\ closedir(dp); //closedir } int main(void){ char a[50]; printf(\ scanf(\ printdir(a,0); return 0; } 16 lstat(entry->d_name,&statbuf); if(S_ISDIR(statbuf.st_mode)){ if(strcmp(entry->d_name,\ continue; printf(\%d \ printf(\%s\\n\ printdir(entry->d_name,depth+1); } else { printf(\\ printf(\%s\\n\ } } chdir(\ closedir(dp); //closedir } int main(void){ char a[50]; printf(\ scanf(\ printdir(a,0); return 0; } 16
正在阅读:
操作系统实验报告12-21
实验报告06-25
湖北省武昌区高三元月调考数学(理)试题 Word版含答案05-07
信息技术培训心得体会05-29
11模电考题试卷答案11-16
高考语文复习创新导练专题过关检测试题12-25
员工手册培训心得体会总结范文05-01
一个顽强的人作文600字07-03
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 操作系统
- 实验
- 报告
- 追加被告申请书范本
- 事件研究法的计算步骤
- 苏教版小学六年级科学下册第六单元测试题
- 孕妇生活上应留心的几个地方
- 如何做好学校教学管理工作
- 13公分紫叶李价格- 津城园苗木
- 基于matlab的人脸识别系统设计与仿真(含源文件) - 图文
- FANUC - PMC编程基础
- 盐分胁迫对植物生长和生理的影响
- 走进儿童福利院活动策划书
- 观后感之2018年第一学期工作计划4篇学校第一学期工作计划
- 赵秀平纪委书记在2007年全市教育纪检监察工作会议上的讲话
- 浅析藏传佛教建筑拉卜楞寺
- 多选
- 小学综合实践活动《我喜欢的玩具》
- JPA 2.0动态查询Criteria
- 新课程理念下初中数学习题教学之我见
- 《分子间作用力与物质性质》习题3
- 2011春季曙光中学安全工作计划
- 文化生活期中考试测试题(好题)