资源简介
操作系统课程设计演示代码,界面美观,包含进程管理和内存管理等课程内容
代码片段和文件信息
/*
* 由SharpDevelop创建。
* 用户: Administrator
* 日期: 2018-05-05
* 时间: 22:17
*
* 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
*/
using System;
using System.Diagnostics;
namespace OS
{
///
/// Interrupt Type
///
public enum INT_TYPE
{
TIME = 1
IO = 2
SOFT = 4}
;
///
/// Registers
///
public class Registers
{
public InfoViewEvent ONDRChange=null;
public InfoViewEvent ONTimeSliceChange=null;
private int _PSW;
//程序状态寄存器
private int _PC;
//程序计数器寄存器
private int _DR;
//数据寄存器
private string _IR;
//指令寄存器
private int _TIME;
//相对时钟寄存器
//访问时间寄存器
public int Time{ get { return _TIME; }
set {
_TIME = value;
if(ONTimeSliceChange!=null)ONTimeSliceChange(thisnew InfoViewEventArgs(value));
}
}
//访问数据寄存器DR
public int DR{ get { return _DR; }
set {
_DR = value;
if(ONDRChange!=null)ONDRChange(thisnew InfoViewEventArgs(value));
}
}
//访问指令寄存器IR
public string IR{ get { return _IR; } set { _IR = value; } }
//设置中断
public void SetInterrupt(INT_TYPE interrupt)
{
_PSW |= (int)interrupt;
}
//清中断
public void ClearInterrupt(INT_TYPE interrupt)
{
_PSW &= ~(int)interrupt;
}
//查询是否存在中断
public bool HasInterrupt()
{
return _PSW > 0;
}
//查询指定中断状态
public bool HasInterrupt(INT_TYPE t)
{
return Convert.ToBoolean(_PSW & (int)t);
}
private bool isIdle()
{
return PCBNo == -1;
}
public int PCBNo {
get {
if ((_PC & 0xFF00) == 0xFF00) {
return -1;
} else
return (_PC & 0xFF00) >> 8;
}
set {
if (value >= 0)
_PC = (value << 8)|PC;
else
_PC = 0xFF00|PC;
}
}
public int PC {
get{ return _PC & 0xFF; }
set{ _PC = (_PC & 0xFF00) + value; }
}
//获得当前执行的PCB
public PCB curPCB()
{
PCB pcb;
if (isIdle()) {
pcb = Program.g.IDLE;
} else {
pcb = Program.g.pcbs[PCBNo];
}
return pcb;
}
//执行中断时保存现场
public void SaveStates()
{
PCB pcb = curPCB();
pcb.PSW = _PSW;
pcb.DR = _DR;
pcb.IR = _IR;
pcb.PC = PC;
pcb.PTime = _TIME;
}
//中断执行完毕恢复现场
public void RestoreStates(PCB pcb)
{
_PSW = pcb.PSW;
_PC = pcb.PC;
_IR = pcb.IR;
_DR = pcb.DR;
_TIME = pcb.PTime;
}
}
///
/// 中断处理程序
///
public class InterruptProcedures
{
private int pcbNo;
public void DealIOInt(Registers registers)
{
registers.SaveStates();
pcbNo = registers.PCBNo;
PCB pcb = pcbNo == -1 ? Program.g.IDLE : Program.g.pcbs[pcbNo];
Program.g.scheduler.DealIOInt();
registers.RestoreStates(pcb);
registers.PCBNo = pcbNo;
registers.ClearInterrupt(INT_TYPE.IO);
}
public void DealSoftInt(Registers registers)
{
registers.SaveStates();
Program.g.scheduler.DealSoftInt();
registers.ClearInterrupt(INT_TYPE.SOFT);
}
public v
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 49664 2018-06-09 08:19 OSCode\OSCode\OS\.vs\OS\v15\.suo
文件 0 2018-05-25 16:38 OSCode\OSCode\OS\.vs\OS\v15\Server\sqlite3\db.lock
文件 1126400 2018-06-09 08:19 OSCode\OSCode\OS\.vs\OS\v15\Server\sqlite3\storage.ide
文件 173 2018-05-26 15:27 OSCode\OSCode\OS\OS\app.config
文件 28 2018-05-25 11:13 OSCode\OSCode\OS\OS\bin\Debug\001.c
文件 3 2018-06-09 12:15 OSCode\OSCode\OS\OS\bin\Debug\001.c.log
文件 28 2018-05-25 11:13 OSCode\OSCode\OS\OS\bin\Debug\002.c
文件 3 2018-06-09 12:15 OSCode\OSCode\OS\OS\bin\Debug\002.c.log
文件 28 2018-05-25 11:13 OSCode\OSCode\OS\OS\bin\Debug\003.c
文件 3 2018-06-09 12:15 OSCode\OSCode\OS\OS\bin\Debug\003.c.log
文件 28 2018-05-25 11:13 OSCode\OSCode\OS\OS\bin\Debug\004.c
文件 3 2018-06-09 12:15 OSCode\OSCode\OS\OS\bin\Debug\004.c.log
文件 28 2018-05-25 11:13 OSCode\OSCode\OS\OS\bin\Debug\005.c
文件 3 2018-06-09 12:15 OSCode\OSCode\OS\OS\bin\Debug\005.c.log
文件 28 2018-05-25 11:13 OSCode\OSCode\OS\OS\bin\Debug\006.c
文件 3 2018-06-09 12:15 OSCode\OSCode\OS\OS\bin\Debug\006.c.log
文件 28 2018-05-25 11:13 OSCode\OSCode\OS\OS\bin\Debug\007.c
文件 3 2018-06-09 12:15 OSCode\OSCode\OS\OS\bin\Debug\007.c.log
文件 28 2018-05-25 11:13 OSCode\OSCode\OS\OS\bin\Debug\008.c
文件 3 2018-06-09 12:15 OSCode\OSCode\OS\OS\bin\Debug\008.c.log
文件 28 2018-05-25 11:13 OSCode\OSCode\OS\OS\bin\Debug\009.c
文件 3 2018-06-09 12:15 OSCode\OSCode\OS\OS\bin\Debug\009.c.log
文件 28 2018-05-25 11:13 OSCode\OSCode\OS\OS\bin\Debug\010.c
文件 3 2018-06-09 12:15 OSCode\OSCode\OS\OS\bin\Debug\010.c.log
文件 1986560 2018-06-09 12:18 OSCode\OSCode\OS\OS\bin\Debug\OS.exe
文件 173 2018-05-26 15:27 OSCode\OSCode\OS\OS\bin\Debug\OS.exe.config
文件 75264 2018-06-09 12:18 OSCode\OSCode\OS\OS\bin\Debug\OS.pdb
文件 28 2018-05-25 11:13 OSCode\OSCode\OS\OS\bin\Release\001.c
文件 28 2018-05-25 11:13 OSCode\OSCode\OS\OS\bin\Release\002.c
文件 28 2018-05-25 11:13 OSCode\OSCode\OS\OS\bin\Release\003.c
............此处省略82个文件信息
- 上一篇:GridCtrl控件源码及Demo
- 下一篇:pdf转word不乱码
相关资源
- qnx6.4.0源代码 亲测可用含makefile
- FREEBSD操作系统设计与实现 清晰中文版
- 操作系统习题与解析第2版 曾平曾林
- Envi4.8 破解包含32位和64位操作系统
- 嵌入式实时操作系统VxWorks及其开发环
- 防火墙入侵检测课程设计个人防火墙
- 杭电15,16年操作系统期末卷
- 嵌入式操作系统基础μCOS-2和Linux第二
- 程序设计智能大厦自动报警系统
- 《鸟哥的Linux私房菜-基础篇》第四版
- 一个64位操作系统的设计与实现源码
- 泛微OA操作系统
- 计算机操作系统原理笔记
- 操作系统实用教程第三版任爱华
- 《嵌入式实时操作系统uCOS-II》邵贝贝
- 基于fpga的vhdl课程设计_函数信号发生
- 嵌入式实时操作系统small RTOS51原理及
- Spire.Doc、Spire.Xls无水印
- XPwindow2000unix操作系统安装全集
- .net经典会员管理项目完整源码(包含
- LINQ实战英文版
- PdfPrintingNet完美破解版4.8.2 (官网Re
- 网页设计与制作 课程设计
- 电力电子课程设计之桥式整流电路
- 课程设计-CAN总线数据通信系统的设计
- 过程控制课程设计资料\\工业过程控制
- [免费PDF]代码整洁之道.rar
- 操作系统考研辅导教程(电子科技大
- 操作系统原理第6版
- win2012 操作系统激活工具
评论
共有 条评论