google.com, pub-4617457846989927, DIRECT, f08c47fec0942fa0 Learn to enjoy every minute of your life.Only I can change my life.: Sys pro program for CPU scheduling : Priority algo. - Non premptive

Saturday, January 26, 2019

Sys pro program for CPU scheduling : Priority algo. - Non premptive


PPRIIORITY.C



/* CPU scheduling : Priority algo. - Non premptive ................... */
// jobQ maintained as ascending order priority Q (1st job-highest priority)
#include<stdlib.h>
#include<stdio.h>
#define newnode (struct node *)malloc(sizeof(struct node))
struct node
{ int jobno,time,proty;  // priority
  struct node *next;
}*JOBQ=NULL;

int job=0;

void erase()
{ struct node *S;
  while(JOBQ!=NULL) { S=JOBQ;  JOBQ=JOBQ->next;  free(S);  }
  job=0;
}

struct node *Append(struct node *F)
{ struct node *s,*t,*s1=NULL;
  t=newnode;        t->next=NULL;
  t->jobno=++job;   t->time=0;

  do  // validation check for job time
  {  printf("\nJOB %d - CPU burst : ",job);
     fflush(stdin); scanf("%d",&t->time);
     if(t->time<=0) printf("\nJob time should be > 0");
  }while(t->time<=0);

  do  // validation check for priority range 1-5
  {  printf("\t Priority : ",job);
     fflush(stdin);  scanf("%d",&t->proty);
     if(t->proty<1 || t->proty >5) printf("\nPriority range is 1(H) to 5(L) ");
  }while(t->proty<1 || t->proty >5);

  if(F==NULL)  F=t;    // JOBQ empty, so this is 1st job
  else    // priority wise insert (acsending oreder priority)
  {  for(s=F; s!=NULL; s1=s, s=s->next)  // find position
     { if(t->proty < s->proty) break;
     }
     t->next=s;  // insert before s
     if(s1==NULL) F=t;  // added before 1st node
     else s1->next=t; // inbetween position
  }
  return F;
}

void CreateJOBQ()
{ struct node *S;   int i,n;
  printf("\nHow many jobs? "); scanf("%d",&n);
  if(n<=0) { printf("\nError : No. of Jobs should be > 0."); return; }

  if(JOBQ!=NULL) erase(JOBQ);

  for(i=1;i<=n;i++)  JOBQ=Append(JOBQ);
}

void DisplayJOBQ()  // sorted on priority
{struct node *T;
  if(JOBQ==NULL) printf("\nJOB Q is Empty!");
  else
  { printf("\n JOB  Time  Priority");
    for(T=JOBQ;T!=NULL;T=T->next) printf("\n J%d : %3d %4d",T->jobno,T->time,T->proty);
  }
}

void delFstNode() // deletes 1st job(highest priority) from JOBQ
{struct node *t;
   t=JOBQ; JOBQ=JOBQ->next;
   free(t);
}

void ExecuteJOBQ()  // Shortest Job First
{ struct node *T,*S=NULL,*t1;  int time=0; char choice;

  if(JOBQ==NULL) { printf("\nJOB Q is Empty!"); return; }

  printf("\nclock CPU   JOBQ ");
  printf("\n%3d  -idle-",time);
  for(T=JOBQ; T!=NULL; T=T->next) printf(" J%d(%d) ",T->jobno,T->time);  // print JOBQ

  while(JOBQ!=NULL)
  {
    printf("\n%3d  J%d(%d) |--",time,JOBQ->jobno,JOBQ->time); // cpu allocated
    time+=JOBQ->time; // increment clock
    delFstNode();  // job finished
    for(T=JOBQ; T!=NULL; T=T->next) printf(" J%d(%d:%d) ",T->jobno,T->proty,T->time);  // print JOBQ

    printf(" --|  Add New Job(y/n)? ");  choice=getche();
    if(choice=='y' || choice=='Y')  JOBQ=Append(JOBQ);
  }
  printf("\n%3d  -idle-",time);
}

char menu()
{ char choice='a';
  clrscr();
  printf("\n< Priority : NonPreemptive > ");
  printf("\nC: Create \nD: Display \nE: Execute \nX: exit");
  printf("\nEnter your choice : ");  choice=getche();
  return toupper(choice);
}

void main()
{
  while(1)
  { switch(menu())
    { case 'X' : erase(); exit(0);  // release memory allocated to JOBQ
      case 'C' : CreateJOBQ();  break;
      case 'D' : DisplayJOBQ(); break;
      case 'E' : ExecuteJOBQ(); break;
      default  : printf("\7 Invalid Choice!");
    }
    printf("\npress any key to continue...");    getch();
  }
}









ASMB2.C

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>

struct symtab
{
    char name[10];
    int used,declared,addr,length,value;
}s[10];

int symtab_cnt;

int check_if_valid_opode(char tok[]);

int search_into_symtab(char *st)
{
    int i;
    for(i=0;i<symtab_cnt;i++)
        if(strcmpi(st,s[i].name)==0)
            return i;
    return -1;
}


char optab[][10]={"stop","add","sub","mult","mover","movem","comp","bc",
             "div","read","print"};
char regtab[][6]={"areg,","breg,","creg,","dreg,"};
char oprtab[][6]={"le,","lt,","eq,","gt,","ge,","any,"};
char adtab[][6]={"start","end","ltorg","origin"};

int optab_cnt=11;
int regtab_cnt=4;
int oprtab_cnt=6;
int adtab_cnt=4;



void display()
{
    int m;
    for(m=0;m<symtab_cnt;m++)
        if(s[m].used == 1 && s[m].declared == 0)
            printf("\nSymb %s used but not defined",s[m].name);
        else if(s[m].used == 0 && s[m].declared == 1)
            printf("\nSymb %s defined but not used",s[m].name);
    getch();
}



main(int argc,char *argv[])
{

    FILE *fp;
    char *w[4],*error[15];
    char str[80],line[80];
    int notok,i,p=0,k,j,cnt=0,h;
    clrscr();
    fp=fopen(argv[1],"r");
    if(fp==NULL)
    {
        printf("\nFile can not be opened...");
        getch();
        exit(1);
    }

    for(i=0;i<4;i++)           //Allocating memory to token variables
        w[i]=(char *)malloc(10);

    cnt=0;
    while(fgets(str,80,fp))
    {
        cnt++;
        printf("%d : %s",cnt,str);
        notok=sscanf(str,"%s%s%s%s",w[0],w[1],w[2],w[3]);
        switch(notok)
        {

            case 2:k=check_if_valid_opcode(w[0]);
                if(k==9||k==10)
                {
                    h=search_into_symtab(w[1]);
                    if(h==-1)
                    {
                        strcpy(s[symtab_cnt].name,w[1]);
                        s[symtab_cnt++].used=1;
                    }
                    continue;
                }
                break;

            case 3:k=check_if_valid_opcode(w[0]);.

                if(k>=1&&k<=8)
                {
                    h=search_into_symtab(w[2]);
                    if(h==-1)
                    {
                        strcpy(s[symtab_cnt].name,w[2]);
                        s[symtab_cnt++].used=1;
                    }
                    continue;
                }

                if(strcmpi(w[1],"ds")==0 || strcmpi(w[1],"dc")==0)
                {
                    h=search_into_symtab(w[0]);
                    if(h==-1)
                    {
                        strcpy(s[symtab_cnt].name,w[0]);
                        s[symtab_cnt++].declared=1;
                    }
                    else
                    {
                        if(s[h].declared==0)
                        {
                            s[h].declared=1;
                        }
                        else
                            printf("Multiple declaration");
                    }
                }
                break;

            case 4:h=search_into_symtab(w[0]);
                if(h==-1)
                {
                    strcpy(s[symtab_cnt].name,w[0]);
                    s[symtab_cnt++].declared=1;
                }
                break;
        }

    }
    display();

    getch();

}


int check_if_valid_opcode(char tok[])
{
    int i;
    for(i=0;i<optab_cnt;i++)
        if((strcmpi(tok,optab[i]))==0)
            return i;
    return -1;
}








हिम्मत

 अंधेरे में एक करोड का हीरा गिर गया था, उसे ढूंढने के लिए पाँच रूपएं की मोमबत्ती ने सहयोग किया। अभी बताओ वह पाँच रूपएं की एक छोटी सी मोमबत्त...