-
大小:文件類(lèi)型: .zip金幣: 2下載: 1 次發(fā)布日期: 2023-05-18
- 語(yǔ)言: 其他
- 標(biāo)簽:
資源簡(jiǎn)介

代碼片段和文件信息
#include????/*里面包含了很多BIOS和DOS調(diào)用函數(shù)*/
#include????/*動(dòng)態(tài)分配內(nèi)存,相當(dāng)于malloc.h*/
#include??
#include?
#include????/*包含對(duì)字符數(shù)組操作的函數(shù)*/
/*#include?“indos.c“
#include?“exterr.c“*/
#define?GET_INDOS?0X34
#define?GET_GRIT_ERR?0X5D06
#define?NTCB?5???/*表示系統(tǒng)允許的最大線(xiàn)程數(shù)*/
#define?NTEXT?20????/*消息的最大字節(jié)數(shù)*/?
#define?NBUF??5?????/*消息緩沖區(qū)的數(shù)目*/
/*#define?TL???3*/
/*?state?code?*/
/*?null 0 not?assigned?*/
#define?FINISHED?0????/*表示線(xiàn)程處于終止態(tài)或TCB是空白狀態(tài)*/?
#define RUNNING 1?????/*表示線(xiàn)程處于運(yùn)行狀態(tài)*/
#define?READY? 2?????/*表示線(xiàn)程處于就緒狀態(tài)*/
#define?BLOCKED?3?????/*表示線(xiàn)程處于阻塞狀態(tài)*/
unsigned?oldssoldsp;
static?int?current=0; /*?the?tcb?index?of?the?current?process?當(dāng)前正在運(yùn)行的進(jìn)程的ID?*/
int?multstop=1;
int?timecount=0;
int?TL;
int?n?=0;
int?buf1;
char?far?*indos_ptr?=?0?;??/*INDOS標(biāo)志的地址*/
char?far?*crit_err_ptr?=?0?;???/*嚴(yán)重錯(cuò)誤標(biāo)志的地址*/
/*?the?pointer?to?the?process‘s?code指針指向進(jìn)程的代碼??*/
typedef?int?(far?*codeptr)(void);
/*信號(hào)量結(jié)構(gòu)體,記錄型信號(hào)量*/?
typedef?struct{
??int?value;???/*信號(hào)量的值,表示空閑資源的總數(shù)*/
??struct?TCB?*wq;???/*線(xiàn)程阻塞隊(duì)列隊(duì)首指針*/
}?semaphore;
semaphore?mutexfb={1NULL};/*?是一個(gè)關(guān)鍵資源空閑消息緩沖隊(duì)列的互斥信號(hào)量?*/
semaphore?sfb={NBUFNULL};/*?空閑消息緩沖隊(duì)列的計(jì)數(shù)信號(hào)量?*/
semaphore?mutex={1NULL};??/*對(duì)n執(zhí)行加操作時(shí)的信號(hào)量,f5和f6會(huì)用到*/?
semaphore?sa={1NULL}sb={0NULL};
/*消息緩沖區(qū)*/
struct?buffer?{
??int?id;
??int?size;???/*消息長(zhǎng)度*/
??char?text[NTEXT];??/*消息正文*/?
??struct?buffer?*next;??/*指向下一個(gè)消息緩沖區(qū)的指針*/
}?buf[NBUF]*freebuf;??/*buf[]是消息隊(duì)列,freebuf指向消息隊(duì)列中的某條消息*/?
/*線(xiàn)程控制塊*/
struct?TCB?{
int? id;???/*?unique?process?id?*/
char name[10]; /*?線(xiàn)程的外部標(biāo)識(shí)符?*/
unsigned?char?*stack;?/*?線(xiàn)程堆棧的真實(shí)地址?*/
unsigned? sp;??/*堆棧指針,指向棧頂內(nèi)容*/
????unsigned? ss;??/*堆棧段址,存放程序下一條指令所在的地址*/
char? state;?/*線(xiàn)程狀態(tài),取值可以是FINISHED、RUNNING、READY、BLOCKED*/
unsigned? *chan;?/*?event?process?is?awainting?*/
struct?buffer?*mq;???/*接受線(xiàn)程的消息隊(duì)列隊(duì)首指針*/?
semaphore?????mutex;??/*接收線(xiàn)程的消息隊(duì)列的互斥信號(hào)量*/
semaphore?????sm;???/*接收線(xiàn)程的消息隊(duì)列的計(jì)數(shù)信號(hào)量,用于實(shí)現(xiàn)同步*/?
struct?TCB???*next;?/*?指向下一個(gè)線(xiàn)程的指針?*/
}?tcb[NTCB]?;
/*?the?registers?pushed?in?the?stack?after?entering?an?interrupt?funtion?*/
/*struct?int_regs?{
??unsigned?bpdisidsesdxcxbxaxipcsflags;
};*、?
/*頭文件的這個(gè)數(shù)據(jù)結(jié)構(gòu)修改成這樣?線(xiàn)程的私有堆棧,保存現(xiàn)場(chǎng)信息*/
struct?int_regs?{
unsigned?bpdisidsesdxcxbxaxipcsflagsoffseg;
/*????段寄存器cs指向存放程序的內(nèi)存段,ip是用來(lái)執(zhí)行下條待執(zhí)行指令在內(nèi)存中的偏移量
??把他們和在一起可在該內(nèi)存段?內(nèi)取到下次要執(zhí)行的指令,
??????段寄存器ss指向用于堆棧的內(nèi)存段,sp指向該堆棧的棧頂,和在一起可訪(fǎng)問(wèn)棧頂單元
??????當(dāng)偏移量用到了指針寄存器BP,則其缺省的段寄存器是SS,并且可用BP訪(fǎng)問(wèn)整個(gè)堆棧?
??????段寄存器ds指向數(shù)據(jù)段,es指向附加段,存放當(dāng)前執(zhí)行程序中一個(gè)輔助數(shù)據(jù)段的段地址在存取操作數(shù)時(shí),二者之一和一個(gè)偏移量合并就可得到存儲(chǔ)單元的物理地址
??該偏移量可以是具體數(shù)值,符號(hào)地址和指針寄存器的值等之一
??SI,DI是變址寄存器,flags是標(biāo)志寄存器?
?段寄存器?????????????偏移地址寄存器
?CS??????????????????IP
?SS????????????????SP或BP
?DS????????????????BX、DI、SI?
?ES???????????????DI(用于串指令)
*/
};
/*struct?{
??char?name[10];
??codeptr?code;
}table[NTCB]={“f1“f1;
??????“f2“f2;
??????“f3“f3;
??????“f4“f4;
??????};
*/
void?interrupt?(*old_int8)(void);??/*定義用于處理中斷的函數(shù)?*/
void?interrupt?new_int8(void);???/*時(shí)間片到時(shí)引起的CPU調(diào)度*/
int?create(char?*name
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????目錄???????????0??2016-09-24?10:55??多任務(wù)系統(tǒng)\
?????文件???????28479??2016-05-27?00:49??多任務(wù)系統(tǒng)\amy_main.c
?????文件???????21498??2016-05-27?00:19??多任務(wù)系統(tǒng)\一個(gè)發(fā)送者兩個(gè)接受者.c
?????文件??????443145??2016-06-12?00:13??文件系統(tǒng)\amain.exe
?????文件???????34414??2016-06-12?00:13??文件系統(tǒng)\amain.c
?????目錄???????????0??2016-09-24?10:55??文件系統(tǒng)\
?????文件??????359136??2016-09-24?10:55??操作系統(tǒng)課程設(shè)計(jì).docx
?????文件????10485762??2016-06-12?14:54??文件系統(tǒng)\虛擬磁盤(pán).disk
評(píng)論
共有 條評(píng)論