亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sch_demo.c

?? 操作系統(tǒng)實驗教程核心技術與編程實例書中地例子代碼
?? C
字號:
#include<\tc\include\stdio.h>
#include<\tc\include\dos.h>
#include"g\sch_demo.h"
#define INTERRUPT 0x08
#include"user.c"
int far pp1(),far pp2(),far pp3();
int far gsch();
void far pcba_r(struct pcb far *it);
void far r_pcba(struct pcb far *pr);
void interrupt gint8();
void save8(int n);
void (interrupt * oldhandler)();
void ggret();
#include"g\g_func1.c"
void process_kill();
main()
  {
    int i,j,l,k;
    clrscr();
    ginit();
    printf("\n   Exit from genix");
    ggret();
  }
pcbcreat(char *gname,int gprio,int g_sys,int g_off,int g_seg)
  {
   int i=2;
   char nn;
   struct pcb far *rpt,far *rp00;
   rpt=rp00=(struct pcb far *)malloc(sizeof(struct pcb));
   while(i<=9&&pcba[i].status!='D')
      {i=i+1;}
   strcpy(pcba[i].name,gname);
   pcba[i].priority=gprio;
   pcba[i].id=i;
   if(g_sys==0)
     {pcba[i].status='S';}
   else
     {pcba[i].status='B';} /* create_state */
   if(g_sys==0)
   {
   }
   else
      {if(ready_head==NULL)
         {ready_head=&pcba[i];
          pcba[i].next=NULL; }
      else
         { rp00=ready_head;
           if( rp00->next==NULL)
              { if(rp00->priority<gprio)
                  {ready_head->next=&pcba[i];
                   pcba[i].next=NULL; }
                else
                { pcba[i].next=rp00;
                  ready_head=&pcba[i];}
              }
           else
              { if (rp00->priority>=gprio)
                   {ready_head=&pcba[i];
                    pcba[i].next=rp00;}
                else
                   {rpt=rp00->next;
                    while(rpt->next!=NULL&&rpt->priority<gprio)
                      {rp00=rpt;
                      rpt=rpt->next;}
                    if(rpt->priority<gprio)
                      {rpt->next=&pcba[i];
                       pcba[i].next=NULL; }
                    else
                     { pcba[i].next=rpt;
                      rp00->next=&pcba[i];}
                   }
              }
         }

   }

     r_flag=0x0200;
     r_ax=0;
     r_bx=0;
     r_cx=0;
     r_dx=0;
     r_si=0;
     r_di=0;
     r_bp=0;
     nn=gname[2];
     switch(nn)
     {  
        case '1':
             r_ip = FP_OFF(&pp1);
             r_cs = FP_SEG(&pp1);
             goto gs;
        case '2':
             r_ip = FP_OFF(&pp2);
             r_cs = FP_SEG(&pp2);
             goto gs;
        case '3':
             r_ip = FP_OFF(&pp3);
             r_cs = FP_SEG(&pp3);
     };
     gs:
     r_sp = g_off;
     r_ss = g_seg ;
     asm      mov r_es,es
     asm      mov r_ds,ds
     printf("creat->:%s",gname);
     printf("-sp:%d",r_sp);
     printf("-ss:%d",r_ss);
     printf("-ip:%d",r_ip);
     printf("-cs:%d",r_cs);
     rpt=&pcba[i];
     r_pcba(rpt);
     /*     dispreg(i);*/
  }
dispreadyq()
  {
   struct pcb far *prtp;
   printf("\n");
   printf("\n   THE READY QUEUE:");
   printf("\n   * * * * * * * * * * * * * * * * * * * * * * * * * * *");
   printf("\n          id        name    priority      status");
   prtp=ready_head;
   while(prtp!=NULL)
   {
      printf("%12s",prtp->name);
      printf("%12d",prtp->priority);
      printf("%12c",prtp->status);
      prtp=prtp->next;
   }
   printf("\n   * * * * * * * * * * * * * * * * * * * * * * * * * * *");
  }
gscreen_int()
{
  clrscr();
  gotoxy(1,22);
  printf("\--------------------------------------------------------------------------------");
  printf("\Input Command:");
}
void far pcb_reg(struct pcb far *it)
  {
   if (it->status=='B') 
      { it->status='R';
        process_kill_id=it->id;
      }
   else{ process_kill_id=-1; };
   pcba_r(it);
   time_count=3;
   time_sch=1;
   asm mov ax,r_ax
   asm mov bx,r_bx
   asm mov cx,r_cx
   asm mov dx,r_dx
   asm mov si,r_si
   asm mov di,r_di
   asm mov bp,r_bp
   asm mov es,r_es
   asm mov ds,r_ds

   asm mov sp,bp
   asm add sp,2

   asm mov ss,r_ss
   asm mov sp,r_sp
   asm cmp word ptr process_kill_id,0
   asm jl pcb_reg1
   asm push word ptr process_kill_id
   asm push word ptr process_kill_seg
   asm push word ptr process_kill_off
pcb_reg1: ;
   asm mov ax,r_ax
   asm push r_flag
   asm popf
   asm push r_cs
   asm push r_ip
   asm sti
   asm ret
   }
void far pcba_r(struct pcb far *it)
 {
   r_flag=it->rega.flag;
   r_ax=it->rega.ax;
   r_bx=it->rega.bx;
   r_cx=it->rega.cx;
   r_dx=it->rega.dx;
   r_si=it->rega.si;
   r_di=it->rega.di;
   r_bp=it->rega.bp;
   r_ip=it->rega.ip;
   r_sp=it->rega.sp;
   r_es=it->rega.es;
   r_ds=it->rega.ds;
   r_ss=it->rega.ss;
   r_cs=it->rega.cs;
  }
void far r_pcba(struct pcb far *pr)
  {
     pr->rega.flag=r_flag;
     pr->rega.ax=r_ax;
     pr->rega.bx=r_bx;
     pr->rega.cx=r_cx;
     pr->rega.dx=r_dx;
     pr->rega.si=r_si;
     pr->rega.di=r_di;
     pr->rega.bp=r_bp;
     pr->rega.ip=r_ip;
     pr->rega.sp=r_sp;
     pr->rega.es=r_es;
     pr->rega.ds=r_ds;
     pr->rega.ss=r_ss;
     pr->rega.cs=r_cs;
   }
void interrupt gint8()
 {  
    oldhandler();
    asm cli
    inregs.h.ah=0x34;
    intdosx(&inregs,&outregs,&segs);
    indos=(char far *)(((long)(segs.es)<<16)+outregs.x.bx);
    if (*indos) goto g_ret;
    asm mov al,0x0B
    asm out 0x20,al
    asm nop
    asm in al,0x20
    asm and al,0x0fe
    asm jnz g_ret
    time_count =time_count - 1;
    if ( time_sch == 0 ) goto g_ret ;
    if (time_count>=1) goto g_ret;
    time_sch=0;
        asm      pop word ptr r_bp
        asm      pop word ptr r_di
        asm      pop word ptr r_si
        asm      pop word ptr r_ds
        asm      pop word ptr r_es
        asm      pop word ptr r_dx
        asm      pop word ptr r_cx
        asm      pop word ptr r_bx
        asm      pop word ptr r_ax
        asm      pop word ptr r_ip
        asm      pop word ptr r_cs
        asm      pop word ptr r_flag
    asm push word ptr gsch_seg
    asm push word ptr gsch_off
    asm ret;
 g_ret:
    asm sti;
 }
int ginit()
  {
   int i,j,k,g_seg,g_off;
   run=ready_head=(struct pcb far *)malloc(sizeof(struct pcb));
/*   gscreen_int();*/

   for (i=0;i<=9;i++)
   {
      pcba[i].status='D';
   }
   ready_head=NULL;
   run=NULL;
   g_off=FP_OFF(&ss1)+4095;
   g_seg=FP_SEG(&ss1);
   pcbcreat(name1,2,1,g_off,g_seg);
   g_off=FP_OFF(&ss2)+4095;
   pcbcreat(name2,1,1,g_off,g_seg);
   g_off=FP_OFF(&ss3)+4095;
   pcbcreat(name3,3,1,g_off,g_seg);
   /*dispreadyq();*/
   time_sch=1;
   time_count=2;
   gsch_off=FP_OFF(&gsch);
   gsch_seg=FP_SEG(&gsch);
   sys_sp=FP_OFF(&ss0)+4095;
   sys_ss=FP_SEG(&ss0);
   process_kill_off=FP_OFF(&process_kill);
   process_kill_seg=FP_SEG(&process_kill);
   to_gsch=-1;
   run=NULL;
   sys=1;
   g_off=FP_OFF(&ss2)+4095;
   g_seg=FP_SEG(&ss2);
   oldhandler=getvect(INTERRUPT);

   asm cli
   asm mov sp,word ptr g_off
   asm mov ss,word ptr g_seg
   /*save8(1);*/
   /*svect();*/
   setvect(INTERRUPT,gint8);
   gsch();
   asm sti
   asm push word ptr gsch_seg
   asm push word ptr gsch_off
   pp2();
   }
int far gsch()
 {  struct pcb far *i,far *g_current;
    /*register -->r area */
    asm cli
    asm      mov ax,bp
    asm      add ax,2
    asm      mov r_sp,ax
    asm      mov r_ss,ss
    asm mov ss,sys_ss
    asm mov sp,sys_sp
    sys=0;
    i=(struct pcb far *)malloc(sizeof(struct pcb));
    if (ready_head==NULL){ggret();};
    if (run!=NULL) {if(to_gsch!=1){r_pcba(run);};}
    else {run=ready_head;goto gsch_begin;}
    if (run->next==NULL) {i=NULL;}
    else
       {                     
       i=run->next;
       while (i!=NULL) 
          {if (i->status=='x') {i=i->next;} else break;}
       };
    if (i!=NULL) { run=i;}
    else
       {
        i=ready_head;
        while (i!=NULL) 
          {
           if (i->status=='x') {i=i->next;} else break;}
           run=i;
           printf("--------enter to gsch ");
          };
gsch_begin:
    if (run!=NULL)
    {
     printf("\n gsch:ip:%d",r_ip);
     printf("-cs:%d",r_cs);
     printf("-flag:%d",r_flag);
     printf("--->%s",run->name);

     if (to_gsch==1)
     { if(run->next!=NULL) 
       {
         i=run->next;
         printf("\naaaa--->%s",i->name);
         i=i->next;
         if(i!=NULL){printf("bbbb--->%s",i->name);};
       };
      };
     to_gsch=-1;
     pcb_reg(run);
    }
    else ggret();
 }
void process_kill()
{   
    int pt1;
    struct pcb far *i;
    struct pcb far *j;
    asm cli
    i=(struct pcb far *)malloc(sizeof(struct pcb));
    j=(struct pcb far *)malloc(sizeof(struct pcb));
    asm push ax
    asm mov ax,[bp+2]
    asm mov pt1,ax
    asm pop ax
    pcba[pt1].status='D';
    printf("\n------------------------------kill:%s",pcba[pt1].name);
    if (ready_head->id==pt1)
    {  ready_head=ready_head->next;
       run=NULL;
       goto process_kill1;
    }
    i=ready_head;
    while (i->next!=NULL&&i->next->id!=pt1) 
    {i=i->next;};
    if (i->next!=NULL&&i->next->id==pt1)
    {
       run=i;
       j=i->next;
       i->next=j->next;
    }
process_kill1:;
    to_gsch=1;
    asm pop   ds
    asm pop   si
    asm mov   sp,bp
    asm pop   bp
    asm push word ptr gsch_seg
    asm push word ptr gsch_off
    asm ret
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级在线免费观看| 久久美女高清视频| 精久久久久久久久久久| 亚洲品质自拍视频网站| 精品福利一二区| 91网址在线看| 久久福利视频一区二区| 亚洲精品欧美专区| 久久嫩草精品久久久精品| 欧美日韩另类国产亚洲欧美一级| 国产白丝网站精品污在线入口| 天堂在线亚洲视频| |精品福利一区二区三区| 日韩精品一区二区三区中文不卡 | 精品国内二区三区| 欧美在线视频你懂得| 成人在线视频首页| 日本aⅴ亚洲精品中文乱码| 亚洲精品国产无套在线观| 久久久久国产一区二区三区四区| 久久久久久久久久电影| 欧美二区三区91| 在线观看视频91| www.亚洲精品| 国产福利一区二区三区视频在线| 日本v片在线高清不卡在线观看| 一区二区三区在线免费视频| 国产精品系列在线| 久久久精品免费网站| 日韩一级片在线播放| 欧美老女人第四色| 91久久久免费一区二区| av午夜一区麻豆| 成人永久aaa| 国产91精品精华液一区二区三区| 国产一区二区三区香蕉| 奇米综合一区二区三区精品视频| 亚洲成人激情av| 亚洲高清不卡在线| 亚洲国产va精品久久久不卡综合| 亚洲免费色视频| 亚洲精品中文字幕乱码三区| 亚洲私人黄色宅男| 亚洲欧美一区二区三区极速播放| 成人欧美一区二区三区黑人麻豆| 国产精品女上位| 国产精品卡一卡二卡三| 国产精品久久久久久户外露出 | 国产不卡视频在线播放| 国产精品888| 成人夜色视频网站在线观看| 成人在线视频一区二区| 99精品热视频| 色悠久久久久综合欧美99| 一本到三区不卡视频| 色999日韩国产欧美一区二区| 一本色道亚洲精品aⅴ| 91精彩视频在线| 欧美日韩一区小说| 在线播放欧美女士性生活| 91精品国产日韩91久久久久久| 精品欧美黑人一区二区三区| 亚洲精品视频一区二区| 亚洲成人精品一区二区| 蜜桃传媒麻豆第一区在线观看| 免费高清视频精品| 成人一区二区三区在线观看| 91麻豆蜜桃一区二区三区| 欧美日韩情趣电影| 日韩一区二区三区免费观看| 久久久三级国产网站| 亚洲美女屁股眼交| 美腿丝袜一区二区三区| 成人激情文学综合网| 色综合久久天天综合网| 欧美精品黑人性xxxx| 久久亚洲影视婷婷| 亚洲欧美在线高清| 五月婷婷久久综合| 国产乱人伦偷精品视频免下载| 99视频精品免费视频| 欧美日韩精品三区| 久久你懂得1024| 一区二区三区中文字幕精品精品 | 久久久九九九九| 亚洲视频狠狠干| 免费在线观看一区二区三区| 国产精品系列在线播放| 欧美色老头old∨ideo| 337p粉嫩大胆噜噜噜噜噜91av | 国产成人av在线影院| 在线看国产一区| 精品国产sm最大网站| 亚洲欧美日韩中文字幕一区二区三区| 日韩中文欧美在线| 99综合影院在线| 日韩精品中文字幕一区二区三区 | 日本一区二区三区视频视频| 亚洲午夜在线视频| 成人三级在线视频| 91精品国产一区二区三区| 麻豆国产精品官网| www.性欧美| 日韩欧美高清dvd碟片| 一区二区三区在线免费| 国产一区91精品张津瑜| 欧美日韩免费不卡视频一区二区三区| 欧美激情在线一区二区| 久久精品国产一区二区| 欧美色区777第一页| 国产精品国产三级国产普通话99| 男女男精品视频网| 欧美日韩亚洲综合在线 | 日韩极品在线观看| 色综合天天综合色综合av| 欧美精品一区二区不卡| 调教+趴+乳夹+国产+精品| www.久久久久久久久| 久久久精品一品道一区| 奇米777欧美一区二区| 欧美日韩在线一区二区| 亚洲色图20p| 成人性生交大合| 久久婷婷国产综合精品青草| 日韩av午夜在线观看| 欧美日韩国产片| 亚洲午夜在线视频| 欧美怡红院视频| 伊人色综合久久天天| 99re热视频这里只精品| 国产精品视频免费看| 国产精品1区2区3区在线观看| 日韩欧美你懂的| 日韩不卡一区二区| 69堂成人精品免费视频| 亚洲大片在线观看| 欧美日韩亚洲高清一区二区| 亚洲一二三级电影| 欧美日韩视频专区在线播放| 亚洲高清在线视频| 欧美精品高清视频| 日本成人中文字幕在线视频| 欧美一区二区三区喷汁尤物| 性久久久久久久久| 3d成人h动漫网站入口| 亚洲国产日韩一级| 欧美日韩视频在线一区二区| 亚洲成人动漫在线免费观看| 欧美日韩国产综合草草| 石原莉奈在线亚洲三区| 91精品国产入口在线| 精品一区二区三区免费毛片爱| 欧美成人a∨高清免费观看| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩精品欧美精品| 欧美一区二区三区男人的天堂| 免费观看日韩av| 国产亚洲欧美日韩日本| 不卡的av网站| 亚洲图片欧美一区| 欧美成人综合网站| 国产成人精品影视| 亚洲视频免费观看| 欧美电影一区二区| 久久成人久久爱| 国产精品美女久久福利网站| 91蝌蚪porny| 偷偷要91色婷婷| 久久影院视频免费| 99这里只有久久精品视频| 亚洲高清三级视频| 欧美刺激午夜性久久久久久久 | 日韩av一区二区三区| 26uuu国产电影一区二区| 成人av在线资源网站| 午夜精品免费在线观看| 精品免费视频.| 一本久久综合亚洲鲁鲁五月天 | 中文字幕亚洲在| 欧美天堂一区二区三区| 久久99久久99精品免视看婷婷 | 国产999精品久久久久久绿帽| 亚洲综合视频在线观看| 久久综合精品国产一区二区三区 | 国产a视频精品免费观看| 亚洲高清在线精品| 国产欧美一区二区三区鸳鸯浴| 色999日韩国产欧美一区二区| 麻豆精品在线看| 亚洲免费av高清| 久久久一区二区| 欧洲亚洲精品在线| 国产精品中文字幕一区二区三区| 亚洲免费观看高清完整版在线| 日韩免费成人网| 欧洲一区在线电影| 成人一区二区三区中文字幕| 日本亚洲免费观看| 亚洲永久精品大片| 中文字幕一区视频|