资源简介

操作系统课程设计演示代码,界面美观,包含进程管理和内存管理等课程内容

资源截图

代码片段和文件信息

/*
 * 由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个文件信息

评论

共有 条评论