山大操作系统实验一

2024-05-16

山大操作系统实验一(通用3篇)

山大操作系统实验一 篇1

进程调度算法实验

张咪 软件四班

一、实验要求

设有两个并发执行的父子进程,不断循环输出各自进程号、优先数和调度策略。进程初始调度策略均为系统默认策略和默认优先级。当某个进程收到SIGINT信号时会自动将其优先数加1,收到SIGTSTP信号时会自动将其优先数减1。请编程实现以上功能。

二、实验目的

加深对进程调度概念的理解,体验进程调度机制的功能,了解Linux系统中进程调度策略的使用方法。练习进程调度算法的编程和调试技术。

三、实验环境

实验环境均为Linux操作系统,开发工具为gcc和g++。

四、实验思路

建立一个父进程和一个子进程,用signal系统调用,父进程收到ctrl+c的SIGINT信号时,执行优先级加一的函数,子进程收到ctrl+z的SIGSTP信号时,执行优先级减1的函数,我认为这样能更好的加深对进程调度概念的理解

。当按下Ctrl+Z时,子进程做出响应,其优先级减1;当按下Ctrl+C时,父进程做出响应,父进程优先级加1.然后再输出各自进程号、优先数和调度策略。通过for()语句循环,执行十次后退出进程。

五、实验过程

新建一个文件夹,在该文件夹中建立以下名为psched.c的C语言程序。编写代码,保存。

输入gcc psched.c命令, 生成默认的可执行文件a.out。执行a.out:。

执行并调试psched程序。

六、调试及实验结果

1、一开始对于父(子)进程获得ctrl+c(ctrl+z)信号后的处理只有一句signal(SIGINT,(sighandler_t)ctrlc)或signal(SIGTSTP,(sighandler_t)ctrlz),认为不用声明对于ctrl+z(ctrl+c)的反应父(子)进程就不会对SIGTSTP(SIGINT)信号做处理,然而进程执行结果一次ctrl+c后就退出了。

要想实现:父进程获得Ctrl+C信号后进程优先号加一,对Ctrl+Z信号不作处理;子进程获得Ctrl+Z信号后进程优先号减一,对Ctrl+C信号不作处理。要在父进程执行的代码中设置对SIGINT执行ctrlc()函数,对SIGTSTP执行nothing()函数(即不作为);在子进程执行的代码中对SIGINT执行nothing()函数(即不作为),对SIGTSPT执行ctrlz()函数。

2、编译成功后,却只能实现按ctrl+c优先数加一的功能,一直无法实现按ctrl+z优先数减一的功能。

未成功运行的结果:

经过多次修改调试代码始终无法实现将优先数减少的功能,查阅资料发现不是代码的问题,而是需要在root模式下才能实现减少优先级的操作。在终端上输入$su root命令行和密码,进入root模式。

成功运行的结果:

七、心得体会

1、进程调度本质就是让谁先执行,让谁后执行。在真实的操作系统中,由调度策略和优先级决定谁先执行。

2、通过这个系统调用设置进程调度策略,int sched_setscheduler(pid_t pid,int policy,const struct sched_param *sp);其中pid是进程号policy 是3种调度策略之一,sp调度参数结构指针,调度参数结构主要存有调度优先数。

3、进程优先数(prio)由静态优先级和动态优先级两部分组成。静态优先级与调度策略有关。动态优先级

由以下系统调用设置,int setpriority(int which,int who,int prio);优先调度算法总是把处理机分配给就绪队列中具有最高优先权的进程。

4、想要实现对进程优先号的减操作,要获取root权限。

八、源代码

#include #include #include #include #include #include #include #include #include

typedef void(*sighandler_t)(int);

void ctrlc(){//按ctrl+c,优先级加1

setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,0)+1);}

void ctrlz(){//按ctrl+z,优先级减1

setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,0)-1);}

void nothing(){};

int main(int argc,char *argv[]){

struct sched_param p[2];int i,j,status;

int pid;

for(i=0;i<2;i++){ p[i].sched_priority=10;

}

pid=fork();

if(pid<0)printf(“failed”);

else if(pid>0){ signal(SIGINT,(sighandler_t)ctrlc);signal(SIGTSTP,(sighandler_t)nothing);sched_setscheduler(getpid(),SCHED_OTHER,&p[0]);setpriority(PRIO_PROCESS,getpid(),10);sleep(1);for(i=0;i<10;i++){

printf(“parent PID=%d,priority=%d,scheduler=%dn”,getpid

(),getpriority(PRIO_PROCESS,0),sched_getscheduler(getpid()));

printf(“父进程挂起,按 Ctrl + C 为其优先数加一n”);

pause();

sleep(1);//每隔 1 秒报告一次进程号和优先级

}//for循环

} //父进程

else{ signal(SIGTSTP,(sighandler_t)ctrlz);

signal(SIGINT,(sighandler_t)nothing);sched_setscheduler(getpid(),SCHED_OTHER,&p[1]);setpriority(PRIO_PROCESS,getpid(),5);sleep(1);for(i=0;i<10;i++){

printf(“child PID=%d,priority=%d,scheduler=%dn”,getpid(),getpriority(PRIO_PROCESS,0),sched_getscheduler(getpid()));

printf(“子进程挂起,按 Ctrl + Z 为其优先数减一n”);

pause();

sleep(1);//每隔 1 妙报告一次进程号和优先级

}//for循环

exit(EXIT_SUCCESS);

}//子进程

return EXIT_SUCCESS;}

实验一 ATM系统建模 篇2

ATM系统建模

1.1实验目的

1、掌握软件体系结构建模的概念及4+1视图模型

2、熟悉Rational Rose 2003或 Microsoft Office Visio的使用方法

3、掌握利用UML进行软件体系结构的相应视图设计 4、4课时(6分),第10周交

1.2实验要求

使用Rational Rose 2003 或 Microsoft Office Visio进行ATM系统软件体系结构的建模设计,包括静态建模和动态建模,要求完成ATM机系统的用例图、类图、顺序图、协作图、系统状态图、系统活动图、系统构件图和系统部署图的设计。

1.3实验原理及内容

统一建模语言UML是一个通用的可视化建模语言,基于主流的软件开发方法和开发经验,明确定义了建模的语法和语义,可用来作为软件体系结构建模的辅助设计工具。UML所提供的静态和动态建模机制可用来实现软件体系结构的4+1视图模型,即辅助设计逻辑视图、进程视图、物理视图、开发视图和场景视图。

本次实验要求使用Rational Rose 2003或 Microsoft Office Visio完成ATM自动取款机系统的用例图、类图、顺序图、协作图、系统状态图、系统活动图、系统构件图和系统部署图的设计。

1.4实验软硬件环境

硬件:IBM PC机

软件:Windows 2000 Server, Rational Rose 2003或 Microsoft Office Visio

1.5实验步骤和方法

1.5.1 ATM系统场景视图设计

图1 ATM系统用例图

1.5.2 设计ATM的系统逻辑视图

绘制图2,并设计ATM系统逻辑视图中的类图,要求至少包括以下类: CardReader,ATMScreen,Account,CashDispenser.图2 逻辑视图之对象图

图3 对象图

1.5.3 设计ATM系统的进程视图

图4 ATM系统状态图

图5 活动图

ATM系统存款业务顺序图

图6 存款顺序图

ATM系统取款协作图

图7 ATM取款协作图

1.5.4 ATM系统的开发视图设计

图8 ATM系统组件图

1.5.5 ATM系统物理视图设计

图9 ATM系统部署图

1.6实验预习要求

ATM自动取款机系统的体系结构分析思考

Rational Rose 2003或 Microsoft Office Visio软件的使用

1.7思考题

从系统管理和维护者的角度如何设计ATM系统的各个场景视图。

1.8评分标准

要求独立完成上述给出的ATM系统的9个设计图,占70%,布局合理美观占30%。

山大操作系统实验一 篇3

2、认识了解数控加工机床的组成及结构

3、掌握数控加工的工作原理

4、掌握数控机床的一般的操作步骤

二、实验内容

1、静态观察TCF-20数控车床的各个组成部分,认识转塔刀架、排屑器,指出各刀位上

刀具的名称和用途。

2、动态观察TCF-20数控车床的仪表数值,液压卡盘的夹紧、松开过程,液压尾架的前

进、后退过程,转塔刀架的手动控制及自动控制。

3、用右手原则判定XZK7532数控钻铣床各轴及方向,观察返回参考点的过程,明确返

回参考点的原理。

4、观察华中8型数控系统的各个组成部分,熟悉其操作界面。

5、警醒ZJK7532数控钻铣床的返回参考点、点动、手轮进给,MDI运行及自动执行程

序操作。

三、实验报告要求

1、回答下述问题

1)简述返回参考点的意义?

2)利用手轮克方面哪些操作?

3)Z轴电机和X/Y轴电机有何区别?

2、描述实验用数控机床的结构和性能;

上一篇:对梦想坚持的名言警句下一篇:安全生产平安回家