中文代码内核---任务管理

//版权声明:
//  本代码为开源代码,作者拥有代码版权,但你可以在任何非商业用途程序中引用,但请标注出处,你
// 也可以对代码进行更改。作者对代码中所包括的错误以及所造成的一切后果将不负任何责任。如果你发
// 现代码中有任何问题或错误,请与我联系。
//  联系方法:QQ 2367051920,Email:nvwa-xt@qq.com
//                                                     -----作者:朱晓辉 2013年11月11日
//==========================================
//函名    :       动态创建任务
//传入参数:       任务号,任务函数名
//返回值  :       无
//==========================================
无返回值   新建任务( 整数8  任务号 , 无返回值(* 任务地址)() )

//----函数执行条件
  如果(系统管理块.中断嵌套!=0)
   { 返回 ;}  
  如果((任务号 < 2)||(任务号 > (任务总数-1)))
   { 返回 ;}
  中断=禁止中断;
//----保存任务函数的入口地址
  任务栈[任务号][1]=(整数16)任务地址&0xff;
  任务栈[任务号][2]=(整数16)任务地址 >> 8;
//----初始化新建任务的任务块
  系统任务块_初始化( 任务号 );
//----任务在运行队列中登记
  运行表登记( 任务号 );
  中断=允许中断;
}
//==========================================
//函名    :       任务停止运行
//传入参数:       1--(任务总数-1)
//返回值  :       无
//==========================================
无返回值  停止任务(整数8  任务号)
{
 如果((系统管理块.中断嵌套!=0)||(系统管理块.系统状态==服务模式))   
  {返回;}
 如果(任务号>(任务总数-1))
  {返回;}
 中断=禁止中断;
 如果((系统任务块[任务号].任务状态!=停止)&&(任务号!=0)&&(任务号!=系统管理块.运行号))     //挂起其他任务;                            
  {
    如果(系统任务块[任务号].任务状态==运行)     //任务已登记但未被运行,    
     {
#如果  实时任务==0     
     如果(优先运行表清除(任务号)==0x00)   //在优先队列中清除
           { 运行表清除( 任务号 );  }       //清除运行队列中的登记,             
#如果结束 
#如果  实时任务==1
     如果(系统任务块[任务号].任务类型==实时任务)
          { 就绪表清除(任务号);}
     否则
       {如果(优先运行表清除(任务号)==0x00)
            {运行表清除( 任务号 );}
    }     
#如果结束        
        }
     系统任务块[任务号].任务挂起前状态=系统任务块[任务号].任务状态;      //保存停止前的状态,        
     系统任务块[任务号].任务状态=停止;
     中断=允许中断;
     返回;            
   } 
  如果((任务号==0)&&(系统管理块.运行号!=0))                                                         //挂起当前运行的任务
     {
       系统任务块[系统管理块.运行号].任务挂起前状态 =系统任务块[系统管理块.运行号].任务状态;                 //保存当前状态,
       系统任务块[系统管理块.运行号].任务状态=停止;                            //改变状态为停止,
#如果 实时任务==1
      如果(系统任务块[系统管理块.运行号].任务类型==实时任务)
              {就绪表清除(系统管理块.运行号);}
#如果结束                                               
       如果(系统管理块.时间片>0)
          { 系统管理块.时间片=0;}                 //时间片清 0 ,
       任务调度();                         //进行任务调度,
      }
  中断=允许中断 ;
}
//==========================================
//函名    :       任务恢复
//传入参数:       1到(任务总数-1)
//返回值  :       无
//==========================================
无返回值  恢复任务( 整数8  任务号)
{
 如果((系统管理块.中断嵌套!=0)||
    (系统管理块.系统状态==服务模式))
  {返回;} 
  如果((任务号==0)||(任务号>(任务总数-1)))
  {返回;}
  中断=禁止中断; 
  如果(系统任务块[任务号].任务状态==停止)
   {
     系统任务块[任务号].任务状态=系统任务块[任务号].任务挂起前状态; //取得停止前保存的状态,
     系统任务块[任务号].任务挂起前状态=0;
  如果(系统任务块[任务号].任务状态==运行)
       {
#如果 实时任务==0
     优先运行表登记(任务号);
#如果结束
#如果 实时任务==1
    如果(系统任务块[任务号].任务类型==chssrw_on)
         {就绪表登记(任务号);
           如果(系统任务块[系统管理块.运行号].任务类型==普通任务)
              {优先运行表登记(系统管理块.运行号);}
               系统管理块.时间片=0;
               任务调度();
          }
         否则
         {优先运行表登记(任务号);}              //任务在运行队列中登记,  
#如果结束                           
        }
    }
  中断=允许中断;
}
//==========================================
//函名    :       当前任务等待中断
//传入参数:       1到(任务总数-1)
//返回值  :       无
//==========================================
无返回值  任务中断开(无参数)

  如果(系统管理块.系统状态==服务模式)
      { 返回;}
  中断=禁止中断;
  如果(系统管理块.中断嵌套==0)
    {
#如果   实时任务==1
      如果(系统任务块[系统管理块.运行号].任务类型==实时任务)
           {就绪表清除(系统管理块.运行号);}
#如果结束         
      系统任务块[系统管理块.运行号].任务状态=等待中断;   //改变状态,
      如果(系统管理块.时间片>0)
           { 系统管理块.时间片=0;}           //时间片清 0 ,
      任务调度();             //进行任务调度,
     }
  中断=允许中断;
}
//==========================================
//函名    :       让等待中断的任务进入运行
//传入参数:       1到(任务总数-1)
//返回值  :       无
//==========================================
无返回值  任务中断关( 整数8  任务号)
{
  如果(系统管理块.系统状态==服务模式)      
     { 返回;}
  如果((任务号==0)||(任务号 > (任务总数-1)))        //限制任务号,
     { 返回;}
  中断=禁止中断;
  如果(系统管理块.中断嵌套>0)                     //只能在中断中,
   {
     如果(系统任务块[任务号].任务状态==等待中断)    //任务是等待中断,
       {
#如果 实时任务==0
    优先运行表登记(任务号);
#如果结束
#如果 实时任务==1
       如果(系统任务块[任务号].任务类型==实时任务)
         {就绪表登记(任务号);}
       否则             
         {优先运行表登记( 任务号 );}            //在优先运行队列中登记,
#如果结束         
        }
    }
  中断=允许中断;
}
#如果   实时任务 > 0
//==========================================
//函名    :       当前任务申请实时运行
//传入参数:       1到(任务总数-1)
//返回值  :       运行号
//==========================================
无返回值   任务实时运行开( 整数8 任务号 )
{
 如果((任务号==0)||(任务号 > 8 ))  //限制任务号,
     { 返回;}  
 如果(系统管理块.中断嵌套!=0)
     { 返回;}
 中断=禁止中断;
 如果(系统任务块[任务号].任务类型 != 实时任务 )
   {   
     系统任务块[任务号].任务类型=实时任务 ;      //变更为实时任务
     实时就绪表登记(任务号);              //在实时就绪表中登记    
    }
 中断=允许中断; 
}
//==========================================
//函名    :       任务放弃实时运行
//传入参数:       到(任务总数-1)
//返回值  :       运行号
//==========================================
无返回值   任务实时运行关(整数8 任务号)
{
  如果((任务号==0)||(任务号 > 8))             //限制任务号,
        { 返回;}  
  如果(系统管理块.中断嵌套!=0)
        {返回;}
  中断=禁止中断;
  如果(系统任务块[任务号].任务类型!=普通任务)
   {
     系统任务块[任务号].任务类型=普通任务 ;     //变更为普通任务
     实时就绪表清除(任务号);             //在实时就绪表中清除
    }
  中断=允许中断;
}
#如果结束

 

 

转载于:https://my.oschina.net/896822132/blog/175419

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的医院后台管理系统实现了病房管理、病例管理、处方管理、字典管理、公告信息管理、患者管理、药品管理、医生管理、预约医生管理、住院管理管理管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让医院后台管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值