东北大学操作系统实验报告
实验一熟悉Linux系统
一、实验目的
熟悉和掌握Linux系统基本命令,熟悉Linux编程环境,为以后的实验打下基础。
二、实验原理
基于linux系统的基础操作
三、实验内容(源码、注释、基础内容、扩展点等)
启动、退出、ls(显示目录内容)、cp(文件或目录的复制)、mv(文件、目录更名或移动)、rm(删除文件或目录)、mkdir(创建目录)、rmdir(删除空目录)、cd(改变工作目录)…
cout << "Status contains r1(running),r2(ready) and b(blocked)." << endl;
cin >> sta;
= sta;
if(sta == "r1") ame << ",";
}
cout << endl;
cout << "ready:";
for(i=0; i<(); i++)
C语言编辑、编译
四、实验结果(截图)
ls mkdir:
cd:
rmdir:
实验二进程状态
一、实验目的
自行编制模拟程序,通过形象化的状态显示,使学生理解进程的概念、进程之间的状态转换及其所带来的PCB内容 、组织的变化,理解进程与其PCB间的一一对应关系。
二、实验原理
1.进程在内存中存在三种基本状态:就绪态、执行态、阻塞态
showPCB();
return 0;
}
int main()
{
int act; << endl;
iniQ();
while(1)
{
cout << "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << endl;
cout << "Please select the action to take." << endl;
cout << "####################################" << endl;
cout << endl;
}
return 0;
}
拓展点:五状态模型
四、实验结果(截图)
创建进程ed:
状态blockedready:
());
());
if()) << endl;
cout << endl;
Pro process;
char nam;
string sta;
cout << "Please enter processes names." << endl;
cin >> nam;
= nam;
= "r2";
(process);
cout << "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << endl;
2.三种状态在满足某种条件时会发生转换:
①就绪——》运行:调度程序选择一个新的进程运行
②运行——》就绪:运行进程用完了时间片
运行进程被中断,因为一高优先级进程处于就绪状态
③运行——》阻塞:当一进程等待某一事件的发生时,如
请求系统服务; 初始化I/O 且必须等待结果;
无新工作可做; 等待某一进程提供输入 (IPC)
cout << "2:running-->ready" << endl;
cout << "3:running-->blocked" << endl;
cout << "4:blocked-->ready" << endl;
cout << "5:new-->ready" << endl;
cout << "6:running-->exit" << endl;
东北大学操作系统实验报告
计算机科学与工程学院实验报告
实验课程名称
操作系统实验
实验成绩
专业
计算机科学与技术
班级
1507班
指导教师签字
学号
姓名
罗艺博
实验报告批改时间
实验项目目录
1.实验一熟悉Linux系统
2.实验二进程状态
3.实验三进程同步和通信
4.实验四进程的管道通信
5.实验五页面置换算法
实验报告正文
()); {
());
());
if(!())
{
());
());
}
else
cout << "Error in ruTObl1." << endl;
}
else
cout << "Error in ruTObl2." << endl;
showPCB();
return 0;
}
int blTOre()
{
if(!()) {
④阻塞——》就绪:当所等待的事件发生时
三、实验内容(源码、注释、基础内容、扩展点等)
#include <iostream>
#include <vector>
#include <>
#include <algorithm> << endl;
cout << "#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#" << endl;
{
cout << re[i].name << ",";
}
cout << endl;
cout << "blocked:";
for(i=0; i<(); i++)
{
cout << bl[i].name << ",";
}
cout << endl;
return 0;
}
int ruTOre()
{
if(!()) {
cout << endl;
cout << endl;
return 0;
}
int iniQ() << endl;
cout << endl;
for(i=0; i<5; i++) << endl;
cin >> nam;
= nam;
cout << "Please enter processes status." << endl;
cin >> act;
if(act == 2)
ruTOre();
else if(act == 3)
ruTObl();
else if(act == 4)
blTOre();
else if(act == 5)
neTOre();
else if(act == 6)
ruTOex();
else
cout << "Error in select."<<endl;
cout << endl;
if())
{
());
());
}
showPCB();
return 0;
}
int ruTOex()
{
if(!()) {
());
if(!())
{
());
());
}
else
cout << "Error in ruTOex1." << endl;
}
else
cout << "Error in ruTOex2." << endl;