• 大小:
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2023-05-18
  • 语言: 其他
  • 标签:

资源简介

杭电操作系统课程设计虚拟文件系统

资源截图

代码片段和文件信息

#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

评论

共有 条评论