版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告课程名称:计算作统专业班级:学 号:姓 名:指导教师:报告日期:计算机科学与技术学院录1 实验目的·掌握Linux操作系统的使用方法;·了解Linux系统内核代码结构;·掌握实例操作系统的实现方法;2 实验环境本次课程设计采用的操作系统环境是windowsUbuntu双系统Ubuntu系统版本号为,内核版本号为linux;采用的编程环境为CodeBlocksIDE和QtCreato。3 实验内容3.1 实验一掌握Lnx操统方括令统掌在Lix下的环。(1)个C程序内现拷能。(2个C要到x(t。3.2 实验二掌统实,译法一的用编写应,增统实能文。3.3 实验三掌加动方过法一的动,其可(字的)3.4 实验四(选做)了和握/prc文件系特使方法(1)解/prc文件的和方;(2)控状,系若部用;(3)图面现监态;3.5 实验五(选做)设并一模文统。多用户的多级目录的文件系统设计。多用户、多级目录、logi(用户登录、系统初始化(建文件卷,提供登录模块、文件的创建、文件的打开、文件的读写、退。4 设计与实现4.1 实验一4.1.1实验要求掌握Linx操作系的使方法包括键命令系统用;掌在Linux下的编程境。4.1.2具体实现本实验容是用CodBlcksIDE实现的此。(1个C。在s用nde三准C用x用n、d、e。:——标准输入输出头文件——字符串处理相关头文件——Linux系统调用头文件,比如read、write——包含open系统调用——包含一些调试错误时用到的变量具体实现思路:,照片等调用read函数读取源文件的内容将read的返为wle循环判返大于(还未读取毕源文中的内容调用e标用e。在s有运行之后桌面上新建了“教程副本.docx”并且“教程.docx”中的内容被复制到了“教程副本.docx”,程序运行结果如下所示:详细代码见。(2编写一个C程序其内容为分窗口同时显示三个并发进程的运行结果要求用到Linux(GTK/Qt。本次实验使的图形是跨平台开发工具Qt。先载Qt的装安。Qt安完先一个Qt控台用MN作为主进程,用于调用三个并发的子进程。在主进程的main函数中,使用fok创建三个子进程,若进程创建成功(即fok函数返回值等于0则使用execv函数进入对应的子进(getcopyput。主进程程序编写完成后,再新建三个Qtsn程get、cop、put(所实现的功能并不是拷贝。由于三个子进程窗口显示的内容形式一模一样所以以子进程tt进程口一个当间、的d程MAN的pid用Qt的对象e系个Qel类的实例中然后将该实例添加至窗口直接把当前进程名称写在一个标签上然后添加至窗口使用ged和getid函数分别获取当前进程号和父进程号,然后调用sprintf把进程号转换成字符串类型之后写在标签上并添加至窗口即可。在Qt结:。4.1.3源代码(1)文件贝源代码#nlde<>#nlde<>#nlde<>#nlde<>#nlde<>#nldess>#nlde<>#efneSIE10 oc";cr*goali=hm/br/桌面程本.x;ntntr,ntr*v){itr,ol;ite_n;r;sonrl_DNY);f0){pitf"altoopen%sn"srFl);et;}glp(aiORN|O_RE;iol){pit(ailoopn%sn"gaFl);et;}wee_=druI)0){rguan;}o;l(l;en;}(2)三程程#nue<Qoeplai>#nldess>#nldess>#nldess>#nlde<>#nlde<>itmai(ntarc,car*agv]){Qorppitonaac,ag);pdtp1p,3;i(1=ok)=0){ee(/oeier桌面/ul-e-eko_Q____GC_4i-eu/etNUL);}e{i2f(=){evhee面/ulcp-eko_t54__C_4b-eu/oy,UL);}e{i((3fo()=){evhee面/udptest_t541GC_4iDbgpt,UL;}}}ai1L,;ai2L,;ai3L,;tn;}程#iclde""#iclde""#nlde<>#nlde<>#ncue<QtCre>#nlde<>MiWno:anidwQigt*an):Qanidwprn,unwU:anio)hreoy"ae){u-euU(i;sWioTt(g";sWdwlstDl);;ri(00);cart18fi18;srnfsr"d"gtid);srnffi,%"gtpd);u>eBos-eTt"t);uttos2sTtt;u>xrwe3>tx(i;Qier*ier=newQierhs;cnetie,SGALteot),hs,LT(mrpae));te>a(;}MainWindow::~MainWindow(){ee;}vidanidwterDa(){QatTmetme=QDaeie:cretaeie(;Qtigstr=(yyyM-ddh:mssdd";u>aluaestx(r;}#子进程cy#iclde""#iclde""#ncue<QtCre>#nlde<>#nlde<>#nlde<>MiWno:anidwQigt*an):Qanidwprn,unwUiMiWno)hreor(sr1)heeoy(hr"){cart18fi18;u-euU(i;enT"";sWdwlstDl);o0;ri(00);srnfsr"d"gtid);srnffi,%"gtpd);u>xrwrsTx"p);uttos2sTtt;u>xrwe3>tx(i;Qier*ier=newQierhs;cnetie,SGALteot),hs,LT(mrpae));te>a(;}MainWindow::~MainWindow(){ee;}vidanidwterDa(){QatTmetme=QDaeie:cretaeie(;Qtigstr=(yyyM-ddh:mssdd";u>aluaestx(r;}#子进程pt#iclde""#iclde""#ncue<QtCre>#nlde<>#nlde<>#nlde<>MiWno:anidwQigt*an):Qanidwprn,unwU:anio)hreoy"ae){cart18fi18;u-euU(i;sWioTt(p";sWdwlstDl);mv10);ri(00);srnfsr"d"gtid);srnffi,%"gtpd);u>eBos-eTt"t);uttos2sTtt;u>xrwe3>tx(i;Qier*ier=newQierhs;cnetie,SGALteot),hs,LT(mrpae));te>a(;}MainWindow::~MainWindow(){ee;}vidanidwterDa(){QatTmetme=QDaeie:cretaeie(;Qtigstr=(yyyM-ddh:mssdd";u>aluaestx(r;}4.2 实验二4.2.1实验要求掌握系调用实现程,通编译核方,增加个新系统用,另编写一个用程,调新增加系统用。4.2.2具体实现(1)系统用的原理用户进程不能访问内核所占内存空间,也不能调用内核函数。进程调用一个特殊的指令,这个指令会跳到一个事先定义的内核中的一个位置。在IntelCPU中,由中断T0x80实现。与DOS功能用int0x21很相转到内位置做syemcll统表(sys_cll_abe)回后,做一些系统检查,最后返回到进程(如果这个进程时间用尽,就返回到其他进程。(2)编写新的系统调用程序新的系统调用程序实现的功能是:将一个文件中的内容拷贝到另一个文件中。这个系统调用的参数是两个h型的字符指针SucFi、Golie,分别表源的opendeloe函数此时对应内核函数sys_open、sys_read、sys_write、sys_close函数。循环拷贝的判断条件还是s_d的返回值,当其大于0的时候执行循环,否则表示源文件已拷贝到了目标文件。mm_egen_t类型的变量fs的前fs冲。。(3)核核到x用ou取t使用p夹c下xz-d和tarxvf。②修改内核新的内核解压完毕后,使用命令进入目录。然后使用命令sudogeditken/打,的调序制文文尾存出统程详细码。使命令suogetah/c/打开添统在中加一容317onalsyl号7该。使用命令o gt iusec/打开,在“#endf /*__S_GNRI_YSALSH*/这一行的上面一行添加新的系统调用程序的函数定义,即:#fdfsy_yalamikgeitsy_yalca*soreiehr*dsFl);#enif然后保存退出。③编译内核在编译内核之前先要安装nuss库用令suopgtntllnue5ev入/usr/src/令get打开该件。内脚:#ishmeormakemnuonigmakedpmakeclenmakebImge–j4makeoduls–j4makemodules_install–j4makeinstall–j4mkinitramfs-o/boot/updte-rubrebot保存退出,然后修改脚本文件的权限,使其可以对内核文件进行操作,修改权限的命令为chmod777。权限修改成功后,在终端中运行该脚本文./,内核开始置linux先后OK再exit待选入Uuu项入unaea所:。(4)序在n数sycll,该函有个数第个参是统用(317第个参是文(即测试序源码件第个数目文(。程序运行结果为:在所在目录下新建了一个文件,并将中的代码拷贝到了中。详细代码见。4.2.3源代码(1)系统用程序amlkgeitsy_mcl(hr*SucFi,hr*Golie){itocsspnorFe_DN;ito=sp(oFe_RNY|_CRTOTRUC,60);r;msmtt;fs=gts;stf(e_s);t;ior>0&go>){o{=saoef9;yrgb);}h;}e{pik"ro";}scsoc;ssls(a);sff;rrn0;}(2)测序#nlde<>#nlde<>#nlde<>intmai(){ssal37",";en;}4.3 实验三4.3.1实验要求掌握增设备动程的方法通过块方,增加个新设备动程序,其功能以简实现符设的驱)4.3.2具体实现(1)x种monolithic类型的内核,即单一的大核心,另外一种形式是MicoKenel,核心的所有功能部件都被拆成独立部分,这些部分之间通过严格的通讯机制进行联系x内核因西.或者删难的在内核中添加或者删除模块。模块一旦被插入内核,就和内核其他部分一样。内核中的设备驱动程序是一组常驻内存的具有特权的共享库,是低级硬件处理例程对用户程序而言设备驱动程序隐藏了设备的具体细节,对各不备提了的口来是备射个的备文件户可以像其件样设文行作。支持3种个一个主设备号唯一标识了设备类型,即设备驱动程序类型设释于,O请求所涉及到的那个设备。的:①注册设备:在系统初启或者加载模块的时候,必须将设备登记到相应的设备数组,并返回主设备号。②定义功能函数:对于每一个驱动函数来说,都有一些和此设备密切相关的功能函数以最常用的块设备或者字符设备来说都存在着诸如pen)a类的当这时的动定来体的。③卸载设备:在不用这个设备时,可以将它卸载,主要是从/proc中取消这个设备的特殊文件。(2)编写Makefle件Maefle件用编译备驱程序其内如下:iq((RERLAE)#kuid#模块的文件成=#的名bm=esePD:$selpwd)KER:$seluae-r)KIR:=i/odl/(VE)bidall:$MKE)C$(DI)M=(W)cen:#m-f*.md*.o*mod*korm-f.*cd*.o*.*ko.m_vrins#$MK)-C$KI)M=PD)canenif(3)能数数,充s的各域。体file_oeraios的具体义如下:srctfieoprtins{sctueoewr=,.k=,.d=,.e=,.n=,};intinit_module(void){intdev_num;dev_num=register_chrdev(0,"MyDeviceDriver",&fops);if(dev_num<0){pit(ENIFOMDvervr:ALtoetaornme\";rtrne_u;}ifdvu_aor=0)vu_aor=e_u;ie=DVSZ;(dv)dta=mlo(VSZ,GPKRE);mme(*ep.aa,0,(化Qtig类的变量sudo,再把suo转换成ch类型,然后调用syem函数执行关机命令。(4)界面设计新建一个Qtsn用e题为“proc进管理器”(00左。用Qr实现。状态栏中添加三个标签,别前CPU三器r机。加t个b卡123、41、CPU型号和主频等信息,这些内容全部用QLabel类的标签显示,其中系统运行时间和CPU器r2、dd、存和优先级这些信息用ttt控件设置为禁止选中禁止修改t的列数是固定的5列息数ge_pd_nfo的返回值提;这做的处是当创新进或者死进程时t且PrcesIfo控与r绑定,随时间定时更新。tab_3选项卡用于提供查询进程、杀死进程、创建新进程的操作面板,查询进程的输入框用lineEdit控件实现,该控件的好处是可以直接调用控件所包含的方法text获取输入的容,便于询程息;在linEdt下方放置是t止t控件下方是关闭进程的按钮,当点击该按钮时便会触发killProcess函数关闭进程;创建进程的进程名输入框同样也是用lineEdit控件实现,当点运行”按钮时便会触发CreatePoces函数。tab4选项卡用显示CPU使用率历史记录曲线和内存使用率历史记录曲线。(5)程序运行结果4.3.3源代码#,包含各种槽函数#dfMIWDO_HdeAWDWH#cdeQaiid>#cdeQal>#nlde<Pshutn>cssTaidt;nmsceUi{cssaWdw;}cssMiWnow:pbicMaWiow{_BCTpbi:elctanidwWigtprnt=);~aWnw);pvt:U:anidw*i;pvt:QusBton*suBton;Qal*oiebl;Qae*CPUsae;Qal*eULe;QaWigt*awie;Qitlt>yi;Qitfa>yLs;vidn_tuBr;oda);odoi(;vdSy(;vidd_onfatcua);odptUi;vidd_onmm(otmmRt;vdUaMmi(;prvaeslot:odwm;vdCRt;odR;vdrte;odUo;vdPcso;vdQrre(;odaoTho(;vidilres;vidrtPcs);;#ndfrgosye.rgorlas);c(;c(;ens;}#nifoa=ettl;*maeef;(eSturmmfr;*macdecd;;}fotcaumeRa(emue*meSa){otea;mReft*mttl-(*eStt.re(mmSa)ufes(mmSa)ahe)**eStt.tl;rnm;}#ndfrgcuat)ag"");CUUsLbl>eTetsr;CUUeae-stlnenQtAinetr;dptR);}vdMiid:eRt){_es;QSrngst;ltmt;em_MU;etmaee;mRt(teR*0);strQtig率:%12"agemae.g"";MUealee();Mmseal>elgmn(tAiCne;dt(R;}vdMiid:otm(){cr*s;Qtighosam;s=hr)lc7se(h);ttse;hta=Srgt;u-hsae>eTx(snm);}vidanidwrnte){ftui;rieeutee;Qtigru=Stn(%12)agrnie.r(秒");u>uieblstxrn;}vidaWio:otie){Qtrgboo;tetcrie=0;te_totte=0;sctmpm=NL;i_tt;QStigweek[7]={星期天",星期一",星期二","星期三","星期四","星期五","星期六"};rte(m_(tr_m_c);ici;btte=cute-ruie;pm=loate(bo_m);bo=Srn(%-2%3%4%:6%7".gpm>mya+90)r(t-t_on1.gpm-t_dyagp-t_or.gp-t_i)a(t-t_e.rwe[t-t_dy;u>oaestxbt;}vidanidwOTp(){Qtigos;ogtsy(;u>teblsTts;}vidaiidw:asoTSudw(){Qtngaso;QSrngsuo;h*md;l;QyAaya;pasorQnuilggtx(i,输入码"密码"Lnd:om,,K);){sd=Srg"co%1|suo-Sshtwn-hnw)a(asod;a;m;secmd;}}vdMaWno:PIo){QSrngprcsor;QtigHz,1H2H3;poesrge_rcso(;u-poeolbl-stetStn(0:%".rpoesr);u-poeolbl-stetStn(1:%".rpoesr);u-poeolbl-stetStn(2:%".rpoesr);u-poeolbl-stetStn(3:%".rpoesr);H0e_z);H0Qtn(1%"agz)r(Mz);u>zbl>eetz);H1e_z);H1Qtn(1%"agz)r(Mz);u>zbl>eetz);H2e_z);H2Qtn(1%"agz)r(Mz);u>zbl>eetz);H3e_z);H3Qtn(1%"agz)r(Mz);u>zbl>eetz);}vidManino::rcsIf(){tN;t;QSrnLithedes;QabeideIem*amIe;Qaligtempde;Qaligttm*pIe;QabWigttm*rst;QalWigtem*roiIe;pN=ep_f);u>bWdtsClnon5;utliesoCupN);har<名"<i<pd<存用级;u>bWie>toznlaeae(ae);f(0<du;+){netmnwQalWdte(SrgfmtSi(rIfinm);u-tlWde-sIe(,nmIe);net-sTtlmnQ:lnne;pdt=nwQTalidetmQSig:rStSrgpoIf[.i);u-tlWde-sIe(,pde);pI-sTtlmnQ:iCt);piImnewQalWdetmQtigfoSdtn(rcn[]pd);u-tlWigtsttmi,pdtm;pde-sTtlne(tAget);rse=ewQTbWigte(Srg:rmtSigpoIoirs;u-tbeide-sttmi3rIe);rIm>eetlne(tAgCnr;pirttm=ewQabWigttmQtig:rmtSrn(rcnoipirt);u-tbeigt>eIe(,,irtIm);poiIm>eetlnetQ:lnetr;}u>bWie>tomWi(,1;u>bWie>tomWi(,1;u>bWie>tomWi(,1;u>bWie>tomWi(,1;u>bWie>tomWi(,1;u-alide>edtrgr(AsateVi:NEirge);u>bWie>tecoodQbtctVe:oeco;}vidManido:Qeyrces){Qtigqeyt;itiu,;QSrnLitheadr;QabeideIem*amIe;Qaligtempde;Qaligttm*pIe;QabWigttm*rst;QalWigtem*roiIe;QeaeVe*hedriw=uitbeide_-vriaeae(;haeVe-stidnte;m)||qeytm=Stn:fmSdtn(rcnoipd)r;}utlie-eonot);u>bWie2>toon(;har<名"<i<pd<存用级;u>aligt-stoznledLblhar);nmIm=ewTaligtt(Stn:rSttigrcn[]ae);u>bWdt-sI(,net);net-sTtlmnQ:lnne;pIe=ewTaeigte(SigfmSSrgpcno]i);u>bWdt-sI(,pIm;pIe-sTxlgmnQ:lgetr;piImnewQalWdetmQtigfoSdtn(rcn[]pd);u>bWie2>te(2pIm;pitm>eetlgenQ:lgCne;rIe=ewQalWdetmQtn:rmtSrgpcno]r);u>aligt-ste(3rIm;rIm>eetlne(tAgCnr;piiyt=nwQTbeigte(Srn:rmtSrgpoIfi.iry);u>aligt-ste(4poiIm;poiIm>teAimn(tlgCtr;u-alide>edtrgr(AsateVi:NEirge);u>bWie>tecoodQbtctVe:oeco;}vidMiWidw:ilrcs(){Qtigqeyt;itiu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度城市更新:废旧房屋拆除工程承包合同2篇
- 科学计算语言Julia及MWORKS实践 课件 10-集合容器
- 酒店培训计划
- 2024年装饰公司上半年工作总结
- 2024年节能降耗培训总结
- 连结员培训课件
- 学前班体育活动
- 二零二四年度许可使用转让合同协议书(2024版)2篇
- 稳定性冠心病药物管理
- 玉林师范学院《酶工程实验》2023-2024学年第一学期期末试卷
- 2024版技术转让合同范本3篇
- 2024-2025年粤教花城版七年级音乐上册全册教学设计
- 2024茶山茶叶种植基地合作协议
- 北京市朝阳区农村集体资产租赁合同书
- 浙江省初中名校发展共同体期中联考2024-2025学年七年级上学期11月期中数学试题(含答案)
- 2023年广州市白云区在珠海招聘中小学事业编制教师笔试真题
- 2024-2030年全球及中国松香药芯焊锡丝行业产销状况及投资前景预测报告
- 宪法课件幻灯教学课件
- 新修订《中华人民共和国保守国家秘密法》竞赛题库
- 幼儿园园安全培训
- 高中英语完形填空试题(有答案和解析)及解析
评论
0/150
提交评论