欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    操作系统课程设计.pptx

    • 资源ID:77747820       资源大小:111.20KB        全文页数:27页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    操作系统课程设计.pptx

    文本编辑相关vi ed 系统命令reboot shutdown chmod chgrp chownuseradd groupadd三、Linux环境编程1、基本流程和命令第1页/共27页编辑-编译-调试-连接-运行编辑:常用vi或其他IDE集成开发环境编译:gcc o abc abc.c gcc g o abc abc.c /abc中加调试信息调试:gdb abc /只有在编译时加了-g选项才可能用gdb调试break NUM 在指定的行上设置断点。clear 删除设置在特定源文件、特定行上的断点。Clear FILENAME:NUM。print EXPR 显示表达式 EXPR 的值 list 显示源代码段 next 在不单步执行进入其他函数的情况下,向前执行一行源代码 help 帮助q 退出运行 ./abc四、常用系统调用第2页/共27页(1)设备管理:如ioctrl()(2)文件管理:open()close()read()write()(3)进程控制:fork()wait()getpid()exec()(4)进程通信:signal()kill()(5)存储管理:memset()五、实习用文件系统相关系统调用,打开/proc/sys/fs/file-max文件,获得本操作系统最大可打开文件句柄数。第3页/共27页实验二 Linux系统调用分析通过对Linux的fork exec等代码的分析了解一个操作系统进程的创建执行等过程锻炼学生分析大型软件代码的能力.一、/include/linux/shed.h包含了进程相关的数据结构task_struct二、kernel/fork.c包含了get_pid和do_fork 三、fs/exec.c包含了do_execve 第4页/共27页四、要求分析源代码,分组讨论分工合作。要求至少有以下内容:进程idstruct task_struct分析struct task_struct volatile long state;/*-1 unrunnable,0 runnable,0 stopped*/unsigned long flags;第5页/共27页int has_cpu;int processor;int last_processor;int lock_depth;struct task_struct*next_task,*prev_task;struct task_struct*next_run,*prev_run;第6页/共27页pid_t pid;struct task_struct*p_opptr,*p_pptr,*p_cptr,*p_ysptr,*p_osptr;struct task_struct*pidhash_next;struct task_struct*pidhash_pprev;第7页/共27页Pidhash分析linux进程的6种状态:#define TASK_RUNNING0#define TASK_INTERRUPTIBLE1#define TASK_UNINTERRUPTIBLE2#define TASK_ZOMBIE4#define TASK_STOPPED8#define TASK_SWAPPING16第8页/共27页do_fork流程框图do_execve流程框图第9页/共27页Fork()实例#includeMain()Int getpid(),getppid(),pid;puts(“Before fork.”);Printf(“The parent pid of process%d is%dn”,getpid(),getppid();If(pid=fork()=-1)exit(1);ElseIf(pid=0)/子进程 puts(“child process after fork”);Printf(“The parent pid of process%d is%dn”,getpid(),getppid();exit(1);Else/父进程wait();puts(“parent process after fork”);Printf(“The parent pid of process%d is%dn”,getpid(),getppid();Printf(“The child pid of process%d is%dn”,getpid(),pid);Exit(0);第10页/共27页实验三 进程间通信一、进程间通信基础知识高级通信:socket通信低级通信:管道、消息通信消息队列=消息队列头+消息头+消息文本消息队列头:struct msqid_ds 消息头:struct msg*msg_next;msg_type;Msg_ts;msg_spot;消息文本:struct msgbufmtype;char*mtext;第11页/共27页Msgget():建立消息队列;返回消息队列idInt msgget(key_t key,int flags)Msgctl():取得、修改消息队列属性int msgctl(int msgid,int cmd,struct msqid_ds*mbuf)Msgsnd()与msgrcv()int msgsnd(msgid,void*msgp,msgtype,msgflag);Int msgrcv(msgid,msgp,size_t,msgtype,msgflag)第12页/共27页二、管道通信用pipe()系统调用编写程序实现:父进程通过管道向子进程发送一个字符串,子进程将其显示出来。第13页/共27页三、模拟生产者-消费者进程通信过程1、PV操作与生产者消费者问题回顾(1)信号灯,是一个确定的二元组(s,q),s是信号量,是一个非负初值的整型变量,q为初始状态为空的队列(即等待队列)。S0,代表可供并发进程使用的资源个数(临界资源则只有1个)S=0,代表所有进程都分配到了资源,且空闲资源数为。S0,代表有|s|个进程等待临界资源以进入临界区。第14页/共27页(2)P、V操作改变信号量的值,是通过PV原语来完成的;记作:P(s)和V(s)。P(s):使信号量s的值减;V(s):使信号量s的值加;(3)用信号灯和PV操作实现进程的同步第15页/共27页私有信号量:一个进程的私有信号量是从制约进程发送来的该进程执行所必须的消息;该信号量只与制约、被制约进程有关。利用私有信号量,可以通过使用PV操作实现进程同步。(4)生产者消费者问题生产者消费者问题主要是同步问题,但是其中涉及到互斥问题。第16页/共27页生产者把系统中释放某一类资源的进程统称为生产者。消费者把系统中使用某一类资源的进程统称为消费者。生产者之间必须是互斥的。消费者之间必须是互斥的。必须设一个公有信号量.(也可保证P-C之间互斥)而生产者P和消费者C之间必须是同步的。必须为P和C各设一个私有信号量第17页/共27页用PV操作的解为:P()/生产者P(empty;P(mutex);V(mutex);V(full);C()/消费者P(empty);P(mutex);V(mutex);V(empty);两进程相互间通过mutex empty full 3个信号量通信,达到同步。第18页/共27页(5)在Linux环境下模拟生产者-消费者进程间的同步通信设计思路:通过fork()产生两个进程;其中一个是生产者进程,另一个是消费者进程。生产者进程主要功能:寻找一个随机数范围内所有的素数个数。消费者进程主要功能:求该随机数的平方。第19页/共27页利用Linux提供系统调用:sigset sigholdsigrelsesigpause kill配合使用,实现PV操作的类似功能并能相互通信和唤醒。第20页/共27页关键部分代码#includemain()int i,j,pid,cpid,find_prime(int),square(int);short s_flag=1;void catch_signal(),catch_usr();setbuf(stdout,(char*)NULL);puts(ctrl+to terminamte program);sigset(SIGUSR1,catch_usr);sigset(SIGUSR2,catch_usr);sigset(SIGQUIT,catch_signal);sigset(SIGINT,catch_signal);srand(getpid();第21页/共27页if(cpid=fork()=0)pid=getppid();while(1)puts(producer processing.);sighold(SIGUSR1);find_prime(rand()%20901);puts(Job done!send message);kill(pid,SIGUSR2);for(j=0;j65535;j+);sigrelse(SIGUSR1);puts(producer went to sleep);sigpause(SIGUSR1);puts(producer is wakeing up);第22页/共27页while(1)puts(ttconsumer processing.);sighold(SIGUSR2);printf(ttsquare=%dn,square(rand()%251);puts(ttjob done!send message!);kill(cpid,SIGUSR1);for(j=0;j=65535;j+);sigrelse(SIGUSR2);puts(ttconsumer went to sleep);sigpause(SIGUSR2);puts(ttconsumer is waking up);第23页/共27页void catch_signal(int signo)puts(process is interrupted!);exit(1);void catch_usr(int signo)printf(#%d signal sendn,signo);sigset(signo,catch_usr);return;Int find_prime(int randnum)Int j,k=2;unsigned cnt=0;Puts(“counting now”);For(;k=randnum;+k)J=2;while(k%j!=0)+j;If(j=k)+cnt;第24页/共27页Int square(int x)sleep(2);return(x*x);注意要求通过man帮助信息,搞清楚sig类系统调用的功能用法;并分析、设计程序流程,指出程序中实现P操作部分和实现V操作部分,尤其是kill()的唤醒同步功能如何实现。第25页/共27页实验四 作业调度算法模拟作业调度的模拟实现实验内容作业调度的原理;作业以及作业调度算法的实现1作业控制块;作业的状态;作业就绪队列;2数据结构和算法:作业控制块JCB;作业就绪队列;先来先服务法fifo();短作业优先法fsfo()重点作业的创建;先来先服务法;短作业优先法回顾操作系统原理中有关作业以及作业调度的原理;模拟实现作业以及作业调度的算法,加深对操作系统中作业管理部分的理解。第26页/共27页感谢您的观看!第27页/共27页

    注意事项

    本文(操作系统课程设计.pptx)为本站会员(莉***)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开