资源简介
杭电操作系统课程设计虚拟文件系统
代码片段和文件信息
#include /*里面包含了很多BIOS和DOS调用函数*/
#include /*动态分配内存,相当于malloc.h*/
#include
#include
#include /*包含对字符数组操作的函数*/
/*#include “indos.c“
#include “exterr.c“*/
#define GET_INDOS 0X34
#define GET_GRIT_ERR 0X5D06
#define NTCB 5 /*表示系统允许的最大线程数*/
#define NTEXT 20 /*消息的最大字节数*/
#define NBUF 5 /*消息缓冲区的数目*/
/*#define TL 3*/
/* state code */
/* null 0 not assigned */
#define FINISHED 0 /*表示线程处于终止态或TCB是空白状态*/
#define RUNNING 1 /*表示线程处于运行状态*/
#define READY 2 /*表示线程处于就绪状态*/
#define BLOCKED 3 /*表示线程处于阻塞状态*/
unsigned oldssoldsp;
static int current=0; /* the tcb index of the current process 当前正在运行的进程的ID */
int multstop=1;
int timecount=0;
int TL;
int n =0;
int buf1;
char far *indos_ptr = 0 ; /*INDOS标志的地址*/
char far *crit_err_ptr = 0 ; /*严重错误标志的地址*/
/* the pointer to the process‘s code指针指向进程的代码 */
typedef int (far *codeptr)(void);
/*信号量结构体,记录型信号量*/
typedef struct{
int value; /*信号量的值,表示空闲资源的总数*/
struct TCB *wq; /*线程阻塞队列队首指针*/
} semaphore;
semaphore mutexfb={1NULL};/* 是一个关键资源空闲消息缓冲队列的互斥信号量 */
semaphore sfb={NBUFNULL};/* 空闲消息缓冲队列的计数信号量 */
semaphore mutex={1NULL}; /*对n执行加操作时的信号量,f5和f6会用到*/
semaphore sa={1NULL}sb={0NULL};
/*消息缓冲区*/
struct buffer {
int id;
int size; /*消息长度*/
char text[NTEXT]; /*消息正文*/
struct buffer *next; /*指向下一个消息缓冲区的指针*/
} buf[NBUF]*freebuf; /*buf[]是消息队列,freebuf指向消息队列中的某条消息*/
/*线程控制块*/
struct TCB {
int id; /* unique process id */
char name[10]; /* 线程的外部标识符 */
unsigned char *stack; /* 线程堆栈的真实地址 */
unsigned sp; /*堆栈指针,指向栈顶内容*/
unsigned ss; /*堆栈段址,存放程序下一条指令所在的地址*/
char state; /*线程状态,取值可以是FINISHED、RUNNING、READY、BLOCKED*/
unsigned *chan; /* event process is awainting */
struct buffer *mq; /*接受线程的消息队列队首指针*/
semaphore mutex; /*接收线程的消息队列的互斥信号量*/
semaphore sm; /*接收线程的消息队列的计数信号量,用于实现同步*/
struct TCB *next; /* 指向下一个线程的指针 */
} tcb[NTCB] ;
/* the registers pushed in the stack after entering an interrupt funtion */
/*struct int_regs {
unsigned bpdisidsesdxcxbxaxipcsflags;
};*、
/*头文件的这个数据结构修改成这样 线程的私有堆栈,保存现场信息*/
struct int_regs {
unsigned bpdisidsesdxcxbxaxipcsflagsoffseg;
/* 段寄存器cs指向存放程序的内存段,ip是用来执行下条待执行指令在内存中的偏移量
把他们和在一起可在该内存段 内取到下次要执行的指令,
段寄存器ss指向用于堆栈的内存段,sp指向该堆栈的栈顶,和在一起可访问栈顶单元
当偏移量用到了指针寄存器BP,则其缺省的段寄存器是SS,并且可用BP访问整个堆栈
段寄存器ds指向数据段,es指向附加段,存放当前执行程序中一个辅助数据段的段地址在存取操作数时,二者之一和一个偏移量合并就可得到存储单元的物理地址
该偏移量可以是具体数值,符号地址和指针寄存器的值等之一
SI,DI是变址寄存器,flags是标志寄存器
段寄存器 偏移地址寄存器
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); /*定义用于处理中断的函数 */
void interrupt new_int8(void); /*时间片到时引起的CPU调度*/
int create(char *name
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-09-24 10:55 多任务系统\
文件 28479 2016-05-27 00:49 多任务系统\amy_main.c
文件 21498 2016-05-27 00:19 多任务系统\一个发送者两个接受者.c
文件 443145 2016-06-12 00:13 文件系统\amain.exe
文件 34414 2016-06-12 00:13 文件系统\amain.c
目录 0 2016-09-24 10:55 文件系统\
文件 359136 2016-09-24 10:55 操作系统课程设计.docx
文件 10485762 2016-06-12 14:54 文件系统\虚拟磁盘.disk
评论
共有 条评论