《东北大学操作系统实验报告》由会员分享,可在线阅读,更多相关《东北大学操作系统实验报告(29页珍藏版)》请在金锄头文库上搜索。
1、计算 机科学 与工程 学院实 验报告实验课程名称操作系统实验实验成绩专业计算机科学 与技术班级1507 班指导教师签字学号20154377姓名罗艺博实验报告批改 时间实验项目目录1. 实验一熟悉Linux系统2. 实验二进程状态3. 实验三进程同步和通信4. 实验四进程的管道通信5. 实验五页面置换算法实验报告正文实验一熟悉Linux系统一、实验目的熟悉和掌握Linux系统基本命令,熟悉 Linux编程环境,为以后的实验打下基础。二、实验原理基于linux系统的基础操作三、实验内容(源码、注释、基础内容、扩展点等)、rm启动、退出、Is (显示目录内容)、cp (文件或目录的复制)、mv (文
2、件、目录更名或移动)(删除文件或目录)、mkdir (创建目录)、rmdir (删除空目录)、cd (改变工作目录)C语言编辑、编译四、实验结果(截图)Is mkdir:cd:rmdir:实验二进程状态一、实验目的自行编制模拟程序,通过形象化的状态显示,使学生理解进程的概念、进程之间的状态转换及其所带来的PCB内容、组织的变化,理解进程与其PCB间的对应关系。二、实验原理1. 进程在内存中存在三种基本状态:就绪态、执行态、阻塞态2. 三种状态在满足某种条件时会发生转换: 就绪一一运行:调度程序选择一个新的进程运行 运行一一就绪:运行进程用完了时间片运行进程被中断,因为一高优先级进程处于就绪状态
3、 运行一一阻塞:当一进程等待某一事件的发生时,如请求系统服务;初始化I/O 且必须等待结果;无新工作可做;等待某一进程提供输入(IPC) 阻塞一一就绪:当所等待的事件发生时三、实验内容(源码、注释、基础内容、扩展点等)#in clude #in elude #i nclude #i nclude /for sort in vectorusing n amespace std;class Pro /process classpublic:char n ame;string status;vector ru,re,bl;ru-runnin g,re-ready,bl-blocked/functio
4、n declarati onint helloUI();int in iQ();int showPCB();int ruTOre();int ruTObl();int blTOre();int neTOre();int ruTOex();int helloUI() /start UIcout Hello!Welcome to come back. en dl;cout ”#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#” endl;cout en dl;cout en dl;return 0;int in iQ()/in itialize the processi
5、nt i;cout Please en ter processes n ames and their status. en dl;cout en dl;for(i=0; i5; i+)15 process a to oPro process;char n am;string sta;cout Please en ter i processes n ames. nam;process .n ame = n am;cout Please en ter processes status. en dl;cout Status contains r1(r unnin g),r2(ready) and b
6、(blocked). sta;process.status = sta;if(sta = r1) /judge which statusif(ru.size()1)ru.push_back(process);cout yes en dl;elsecout Error! en dl;else if(sta = r2)re.push_back(process);else if(sta = b)bl.push_back(process);elsecout Error! en dl;cout AAAAAAAAAAAAAAAAAAAAAAAAAAAAA en dl;cout en dl; showPCB
7、(); return 0;int showPCB() int i;cout runnin g:;for(i=0; iru.size(); i+)cout rui. name cout en dl;cout ready:;for(i=0; ire.size(); i+)cout rei.name ,;cout en dl;cout blocked:;for(i=0; ibl.size(); i+)cout bli.name ,;cout en dl;return 0;int ruTOre()if(!ru.empty() /runnin gQueue is being used.re.push_b
8、ack(ru.fr on t();/runnin gs first process go to readylastru.erase(ru.begi n();/delete runnin gs first processru.push_back(re .fron t();re.erase(re.begi n();elsecout Error in ruTOre en dl;showPCB();return 0;int ruTObl()if(!ru.empty() /runnin gQueue is being used.bl.push_back(ru .fron t();ru.erase(ru.
9、begi n();if(!re.empty()ru.push_back(re .fron t();re.erase(re.begi n();else elsecout Error in ruTObl2. r unning ru.push_back(re .fron t();re.erase(re.begi n();elsecout Error in blTOre en dl;showPCB();return 0;int neTOre()int i;cout Please en ter processes n ames and their status. en dl; cout en dl;Pr
10、o process;char n am;string sta;cout Please en ter processes n ames. n am;process .n ame = nam;process.status = r2;re.push_back(process);cout AAAAAAAAAAAAAAAAAAAAAAAAAAAAA en dl;if(ru.empty()ru.push_back(re .fron t(); re.erase(re.begi n();showPCB();return 0;int ruTOex()if(!ru.empty()/runnin gQueue is
11、 being used.ru.erase(ru.begi n();if(!re.empty()ru.push_back(re .fron t(); re.erase(re.begi n();elsecout Error in ruTOex1. en dl;elsecout Error in ruTOex2. endl;showPCB();return 0;int mai n()int act; /choose acti onhelloUI();cout Please in itialize the process. en dl; ini Q();while(1)cout AAAAAAAAAAA
12、AAAAAAAAAAAAAAAAAAA en dl;cout Please select the action to take. en dl;cout ready en dl; cout blocked en dl; cout ready en dl; cout ready en dl;cout exit act;if(act = 2)ruTOre();else if(act = 3)ruTObl();else if(act = 4)blTOre();else if(act = 5)n eTOre();else if(act = 6)ruTOex();elsecout Error in select.e ndl;cout # endl;cout en dl;return 0;