-
大小: 14.89MB文件類型: .rar金幣: 1下載: 0 次發(fā)布日期: 2023-07-31
- 語言: 其他
- 標簽: C#??操作系統(tǒng)??課程設(shè)計??
資源簡介
操作系統(tǒng)課程設(shè)計演示代碼,界面美觀,包含進程管理和內(nèi)存管理等課程內(nèi)容
代碼片段和文件信息
/*
?*?由SharpDevelop創(chuàng)建。
?*?用戶:?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;
//程序狀態(tài)寄存器
private?int?_PC;
//程序計數(shù)器寄存器
private?int?_DR;
//數(shù)據(jù)寄存器
private?string?_IR;
//指令寄存器
private?int?_TIME;
//相對時鐘寄存器
//訪問時間寄存器
public?int?Time{?get?{?return?_TIME;?}?
set?{?
_TIME?=?value;
if(ONTimeSliceChange!=null)ONTimeSliceChange(thisnew?InfoViewEventArgs(value));
}?
}
//訪問數(shù)據(jù)寄存器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;?}?}
//設(shè)置中斷
public?void?SetInterrupt(INT_TYPE?interrupt)
{
_PSW?|=?(int)interrupt;
}
//清中斷
public?void?ClearInterrupt(INT_TYPE?interrupt)
{
_PSW?&=?~(int)interrupt;
}
//查詢是否存在中斷
public?bool?HasInterrupt()
{
return?_PSW?>?0;
}
//查詢指定中斷狀態(tài)
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;?}
}
//獲得當前執(zhí)行的PCB
public?PCB?curPCB()
{
PCB?pcb;
if?(isIdle())?{
pcb?=?Program.g.IDLE;
}?else?{
pcb?=?Program.g.pcbs[PCBNo];
}
return?pcb;
}
//執(zhí)行中斷時保存現(xiàn)場
public?void?SaveStates()
{
PCB?pcb?=?curPCB();
pcb.PSW?=?_PSW;
pcb.DR?=?_DR;
pcb.IR?=?_IR;
pcb.PC?=?PC;
pcb.PTime?=?_TIME;
}
//中斷執(zhí)行完畢恢復(fù)現(xiàn)場
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轉(zhuǎn)word不亂碼
評論
共有 條評論