南昌大学操作系统实验综合

上传人:飞*** 文档编号:47527298 上传时间:2018-07-02 格式:PDF 页数:28 大小:698.41KB
返回 下载 相关 举报
南昌大学操作系统实验综合_第1页
第1页 / 共28页
南昌大学操作系统实验综合_第2页
第2页 / 共28页
南昌大学操作系统实验综合_第3页
第3页 / 共28页
南昌大学操作系统实验综合_第4页
第4页 / 共28页
南昌大学操作系统实验综合_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《南昌大学操作系统实验综合》由会员分享,可在线阅读,更多相关《南昌大学操作系统实验综合(28页珍藏版)》请在金锄头文库上搜索。

1、实验报告实验课程:计算机操作系统学生姓名:王维学号:6100212202 专业班级:网工 121 班2014 年 06月 11日南昌大学实验报告-( 1)操 作 系 统 安 装 及 其 接 口 环 境学生姓名:学号:专业班级:实验类型:验证 综合 设计 创新实验日期:实验成绩:一、实验目的熟悉 Windows/Linux操作系统的安装过程与安装方法,并掌握该操作系统所提供的用户接口环境,并为后续实验做好编程环境准备。二、实验内容1、熟悉 Windows/Linux操作系统的安装过程与安装方法,并掌握该操作系统所提供的用户接口环境,通过系统提供的用户管理程序、查看系统中的用户情况、进程、线程、内

2、存使用情况等,学会使用它进行监视进程的状况、系统资源的使用情况及用户情况。并为后续实验做好编程环境准备。2、用 C 语言编写一小段程序,使其可以通过某个系统调用来获得OS 提供的某种服务。三、实验要求1 了解所安装的操作系统对软硬件资源的具体要求;2 机器最低硬件配置要求;3 操作系统所提供的用户接口环境的熟悉;4 了解主要BIOS CMOS 参数的含义及其设置方法;5 掌握程序编写中系统调用的方法。四、主要实验步骤五、实验数据及处理结果#include #include main() time_t timep; time( printf(“%sn“,asctime(gmtime( 六、实验体

3、会或对改进实验的建议体会到了 Linux 的强大和神秘七、参考资料南昌大学实验报告-( 2) 编 程 模 拟 进 程 间 的同 步 和 互 斥学生姓名:学号:专业班级:实验类型:验证 综合 设计 创新实验日期:实验成绩:一、实验目的通过实验加强对进程同步和互斥的理解,并掌握进程(线程)的创建和调用方法。学会使用信号量解决资源共享问题。学生可以自己选择在Windows 或 Linux 系统下编写。二、实验内容1以下为Linux系统下参考程序,请编译、运行并观察程序的输出,并分析实验结果,写出实验报告。#include #include #include #include #include #in

4、clude #include #define NUM_PROCS 5 #define SEM_ID 250 #define FILE_NAME “/tmp/sem_aaa“ #define DELAY 4000000 void update_file(int sem_set_id, char *file_path, int number) struct sembuf sem_op; FILE *file; / 等待信号量的数值变为非负数,此处设为负值,相当于对信号量进行P操作sem_op.sem_num=0; sem_op.sem_op=-1; sem_op.sem_flg=0; semop(

5、sem_set_id, / 写文件,写入的数值是当前进程的进程号file=fopen(file_path,“w“); if(file)/临界区fprintf(file,“%dn“,number); printf(“%dn“,number); fclose(file); / 发送信号,把信号量的数值加1,此处相当于对信号量进行V操作sem_op.sem_num=0; sem_op.sem_op=1; sem_op.sem_flg=0; semop(sem_set_id, / 子进程写文件void do_child_loop(int sem_set_id,char *file_name) pid_

6、t pid=getpid(); int i,j; for(i=0;iPC 结束保护现场, PC=当前进程 PCB的断点有就绪进程?否是开始SS-1 将调用P(s)过程的S #define MaxSize 10 typedef struct char dataMaxSize; int front,rear; queue; queue q; int S=0; void init() q.front=q.rear=0; void in(char c) q.rear = (q.rear+1)%MaxSize; q.dataq.rear=c; S+; void out(char *c) q.front

7、= (q.front+1)%MaxSize; *c=q.dataq.front; S-; void produce(char c) if(S0) char c; out( printf(“ 消费了 %cn“,c); else printf(“ 缓冲器已空,不能消费!n“); char randCreate(int a) if(a #define N 5 #define M 3 int MaxNM=7,5,3,3,2,2,9,0,2,2,2,2,4,3,3; int AllocationNM=0,1,0,2,0,0,3,0,2,2,1,1,0,0,2; int NeedNM=7,4,3,1,2,

8、2,6,0,0,0,1,1,4,3,1; int AvailableM=3,3,2; void print() int i,j; printf(“| 资源情况 | Max | Allocation| Need | Available |n“); printf(“| 进程| A B C | A B C | A B C | A B C | n“); for(i=0;iNeedpidi) printf(“ 错误!请求资源超过最大需求n“); ok=0; break; if(reqiAvailablei) printf(“ 资源不足,请等待!n“); ok=0; break; if(ok=1) for

9、(i=0;i #include typedef struct char id10; double arrivetime; double servicetime; process; process p100; sort(int n) char *s; double d; int i,j; for(i=0;ipj+1.arrivetime) strcpy(s,pj.id); strcpy(pj.id,pj+1.id); strcpy(pj+1.id,s); d=pj.arrivetime; pj.arrivetime=pj+1.arrivetime; pj+1.arrivetime=d; d=pj

10、.servicetime; pj.servicetime=pj+1.servicetime; pj+1.servicetime=d; int main() int n,i; double zhou100; double wz100; double time=0; printf(“ 请输入进程的数量:“); scanf(“%d“, for(i=0;i #include #include #include int ins320; double hit293; typedef struct node int data; struct node *next; node; typedef struct

11、node * front,*rear; queue; void init(queue* LQ) LQ-front=LQ-rear=NULL; void enQueue(queue *LQ,int x) node *s; s=(node *)malloc(sizeof(node); s-data=x; s-next=NULL; if(!LQ-front) LQ-front=LQ-rear=s; else LQ-rear-next=s; LQ-rear=s; void deQueue(queue *LQ) /本题中不会出现空队列出队的情况,故无需判断此异常node *p; p=LQ-front;

12、LQ-front=p-next; free(p); if(!LQ-front) LQ-rear=NULL; int find(queue *LQ,int x) node *p=LQ-front; while(p) if(x=p-data) return 1; p=p-next; return 0; /*随机生成指令序列*/ void randIns() int i=0,m; srand(unsigned)time(NULL); while(i320) m=rand()%320; insi+=m; insi+=m+1; m=rand()%m+2; insi+=m; insi+=m+1; m=ra

13、nd()%(318-m)+m+2; insi+=m; / /FIFO 算法/ void fifo(int n) queue que,*q;/内存页队列q= init(q); int i,size=0; int sum=0; for(i=0;i320;i+) int page=insi/10; if(find(q,page) sum+; else if(sizen) enQueue(q,page); size+; else deQueue(q); enQueue(q,page); hitn-40=sum/320.0; / /LRU 算法/ unsigned r32; int p32; int f

14、ind_page(int n,int page) int i; for(i=0;in;i+) if(page=pi) ri+=1; return i+1; return 0; void insert_page(int n,int page) int i; int maxIndex=0; unsigned max=r0; for(i=1;in;i+) if(rimax) max=ri; maxIndex=i; pmaxIndex=page; rmaxIndex=1; void updateLRU(int n) int i; for(i=0;in;i+) ri=1; void lru(int n) memset(r,0,sizeof(r); memset(p,0,sizeof(p); int i,sum=0,size=0; for(i=0;i320;i+) int page=insi/10+1; if(find_page(n,page) sum+; else if(sizen) psize+=page; else insert_page(n,page); updateLRU(n); hitn-41=sum/320.0; /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号