操作系统实验三实验报告.docxVIP

  • 65
  • 0
  • 约2.09千字
  • 约 5页
  • 2016-11-29 发布于重庆
  • 举报
操作系统实验三实验报告

操作系统实验三实验报告基本信息? 1.1 实验题目 进程调度算法实验 1.2完成人 王召德? 1.3报告日期 2015-4-16 实验内容简要描述 2.1实验目标 ? 加深对进程调度概念的理解,体验进程调度机制的功能,了解 Linux 系统中进程调度策略的使用方法。 练习进程调度算法的编程和调试技术。2.2实验要求 ? 设有两个并发执行的父子进程,不断循环输出各自进程号、优先数和调度策略。进程初始调度策略均为系统默认策略和默认优先级。当某个进程收到 SIGINT信号时会自动将其优先数加 1,收到 SIGTSTP 信号时会自动将其优先数减 1。请编程实现以上功能。2.3实验的软硬件环境Ubuntu14.04intelPC报告的主要内容 ? 3.1实验的思路 父进程生成子进程分别都绑定SIGINT和SIGTSTP信号,并且在函数中分别让优先级加一和减一,然后分别打印二十次自己的PID,优先级,调度策略。每次按Ctrl-C优先级会加一,按Ctrl-Z优先级会减一。3.2实验模型的描述 无? 3.3主要数据结构的分析说明 ?无 3.4主要算法代码的分析说明 无? 3.5项目管理文件的说明 无实验过程和结果 ? 4.1实验投入的实际学时数 1学时? 4.2调试排错过程的记录 在调试过程中,两个进程id搞错导致处理错误? 4.3多种方式测试结果的记录4.4实验结果的分析综合无实验的总结系统可以有多种不同的策略调度进程,其中按照优先级调度,可以给某个进程设置优先级,这个优先级可正可负,可以根据优先级的大小进行调度,而且这个优先级可以在进程执行中改变。附录程序源代码#include sched.h#include sys/time.h#include sys/resource.h#include signal.h#include stdio.h#include stdlib.h// SIGINT 程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。// SIGTSTP 停止进程的运行, 但该信号可以被处理和忽略. 用户键入SUSP字符时(通常是Ctrl-Z)发出这个信号typedef void (*sighandler_t) (int);void sigcat_1(){printf(SIGINT信号,优先度加一\n);setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,getpid())+1);}void sigcat_2(){printf(SIGTSTP信号,优先度减一\n);setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,getpid())-1);}int main(int argc, char *argv[]){ int i,j,pid; //srand((unsigned)time(0)); printf(Ctrl-C让进程优先度加一,Ctrl-Z让进程优先度减一); if((pid=fork())==0) { signal(SIGINT,(sighandler_t)sigcat_1); signal(SIGTSTP,(sighandler_t)sigcat_2); for(i=0;i20;i++){ printf(子进程 PID = %d 优先级= %d ,调度策略= %d\n,getpid(),getpriority(PRIO_PROCESS,0),sched_getscheduler(getpid())); /* if(rand()%2){ printf(子进程发送SIGINT信号给父进程\n); kill(getppid(),SIGINT); }else{ printf(子进程发送SIGTSTP信号给父进程\n); kill(getppid(),SIGTSTP); } pause(); */ sleep(1); } }else{ signal(SIGINT,(sighandler_t)sigcat_1); signal(SIGTSTP,(sighandler_t)sigcat_2); for(i=0;i20;i++){ printf(父进程 PID = %d 优先级= %d ,调度策略= %d\n,getpid(),getpriority(PRIO_PROCESS,0),sched_getscheduler(getpid())); /* if(rand()%2){ printf(父进程发送SIGINT信号给子进程\n); kill(pid,SIGINT); }else{ printf(父进程发送SIGTST

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档