Showing posts with label programs. Show all posts
Showing posts with label programs. Show all posts

Saturday, August 9, 2014

Creating, writing to and reading from shared memory program

This is an operating systems program to implement creating, writing to and reading from a shared memory. If you have any doubts please let me know.

#include<sys/mman.h>                                                                                                                                                                                                                           
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
main()
{
    int fd;
    char mamname[20];
    printf(“\nEnter the shared memory name: “);
   scanf(“%s”,memname);
   fd=shm_open(memname,O_CREAT,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
   ftruncate(fd,100);
   if(fd>0)
   printf(“\nSUCCESS”);
   else
   printf(“\nFAIL”);
}



#include<sys/mman.h>                                                                                                                                                                                                                            
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
main()
{
    int fd,i;
    char mamname[20];
    unsigned char *ptr;
    printf(“\nEnter the shared memory name: “);
   scanf(“%s”,memname);
   fd=shm_open(memname,O_CREAT,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
   ptr=mmap(NULL,100,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
   for(i=0;*(ptr+i)!=’\0’;i++)
    printf(“%c”,*(ptr+i));
}



#include<sys/mman.h>                                                                                                                                                                                                                            
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
main()
{
    int fd,i;
    char mamname[20],s[100];
    unsigned char *ptr;
    printf(“\nEnter the shared memory name: “);
   scanf(“%s”,memname);
   fd=shm_open(memname,O_CREAT,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
   ptr=mmap(NULL,100,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
   if(fd>0)
   {
    printf(“\nEnter data:”);
   gets(s);
   for(i=0;s[i]!=’\0’;i++)
    *(ptr+i)=s[i];
}


Shell programs for prime and palindrome

Shell scripting programs to implement whether a number is prime as well as a program to check for a palindrome. If you have any doubts please let me know 

PRIME
#!/bin/bash
echo " enter a number"
read n
i=2
flag=0
while((i<=$n/2))
do
((c = n % i))
if ((c==0))
then
flag=1
fi
((i=i+1))
done
if ((flag==0))
then
echo "prime"
else
echo "composite"
fi



PALINDROME
echo “enter a string to be entered:”
read str
echo
len=`echo $str | wc –c`
len= ((len-1))
i=1
j= ((len/2))
while((i<j))
do
k=`echo $str | cut –c $i`
l=`echo $str | cut –c $len`
if((k!=l))
then
flag=1;
fi
((i=i+1))
((len=len-1))
Done
If((flag==0))
then
Echo “palindrome”
Else
Echo “ not palindrome”

fi    

Program for Best Fit, Worst Fit and First Fit

This is a program for the implementation of Best fit, Worst Fit, and First Fit for the operating systems lab. If you have any doubts please let me know.

#include<stdio.h>
#include<stdlib.h>
int i,j,n,x,ch,size,ch1,ch2,y,pid;
struct alloc1
{
  int id,sa,ea,size;
  struct alloc1 *next;
}*start=NULL,*ptr=NULL,*newn=NULL;

struct free1
{
  int stadd,eadd,size1;
  struct free1 *next;
}*start1=NULL,*newn1=NULL,*ptr2=NULL,*preptr2=NULL;

void displayfree(struct free1 *temp)
{
printf("\n\nFree Space\n");
temp=start1;
while(temp!=NULL)
    {
    printf("%d",temp->stadd);
    printf(" - %d\n",temp->eadd);
    temp=temp->next;
    }}

void display(struct alloc1 *temp1)
{
printf("\n\nAllocated\n");
temp1=start;
while(temp1!=NULL)
    {
                        printf("p%d\t",temp1->id);
    printf("%d",temp1->sa);
    printf(" - %d\n",temp1->ea);
    temp1=temp1->next;
    }
}
void init()
{
   newn->sa=ptr2->stadd;
   newn->ea=newn->sa+size-1;
   ptr2->stadd=ptr2->stadd+size;
   ptr2->size1=ptr2->size1-size;
}
void main()
{
    printf("\nEnter the number of processes:\n");
  scanf("%d",&n);
   for(i=0;i<n;i++)
  {
         newn=(struct alloc1 *) malloc(sizeof(struct alloc1));
         printf("\nEnter process id: ");
         scanf("%d",&newn->id);
         printf("\nEnter the start address: ");
         scanf("%d",&newn->sa);
         printf("\nEnter the end address: ");
         scanf("%d",&newn->ea);
         newn->size=(newn->ea-newn->sa)+1;
         if(start==NULL)
        {
            start=newn;
            start->next=NULL;
            ptr=start;
        }
       else
       {
            while(ptr->next!=NULL)
            {
            ptr=ptr->next;
            }
            ptr->next=newn;
            ptr=ptr->next;
            ptr->next=NULL;
       }
}
 printf("\nEnter the details of free space\n");
 do
 {
    newn1=(struct free1 *) malloc(sizeof(struct free1));
   printf("\nEnter the starting address: ");
   scanf("%d",&newn1->stadd);
   printf("\nEnter the ending address: ");
   scanf("%d",&newn1->eadd);
   newn1->size1=(newn1->eadd-newn1->stadd)+1;
    if(start1==NULL)
  {
    start1=newn1;
    start1->next=NULL;
  ptr2=start1;
   }
   else
   {
     while(ptr2->next!=NULL)
       ptr2=ptr2->next;
     ptr2->next=newn1;
     ptr2=ptr2->next;
     ptr2->next=NULL;
  }
  ptr2=start1;
  printf("\nPress 1 to add more...");
  scanf("%d",&ch);
 }while(ch==1);
printf("\n BEFORE FITTING\n");
displayfree(ptr2);
 ptr=start;
display(ptr);
do
{
  printf("\nEnter the size of new process: ");
  scanf("%d",&size);
  printf("\nEnter the process id:");
  scanf("%d",&pid);
 newn=((struct alloc1 *)malloc(sizeof(struct alloc1)));
   newn->next=NULL;  
   newn->size=size;
               newn->id=pid;
     printf("\nMENU:\n1.First fit\n2.Best fit\n3.Worst fit\n4.Exit\n");
     printf("\nEnter your choice:\n");
     scanf("%d",&ch1);
     switch(ch1)
     {
       case 1:
   ptr2=start1;
   if(ptr2->size1==size)
   {
   start1=ptr2->next;
   }
   else
   {
   while(ptr2->size1<size)
   {
    if(ptr2->next==NULL)
     {
        printf("\nInsufficient memory");
  goto lab;
      }
   preptr2=ptr2;
   ptr2=ptr2->next;
   if(ptr->size==size)
   {
   preptr2->next=ptr2->next;
   }}}
   init(); ptr=start;
while(ptr->next!=NULL)
   ptr=ptr->next;
      ptr->next=newn;
   printf("\nFIRST FIT\n");
   display(ptr);
   displayfree(ptr2);
          lab: break;
case 2:
   ptr2=start1;
   x=1000;
   while(ptr2!=NULL)
   {
   if((ptr2->size1>=size)&&(ptr2->size1<=x))
   {
   x=ptr2->size1;
   }
   ptr2=ptr2->next;
  }
  if(x==1000)
  {
   printf("\nInsufficient memory");
  break;
  }
   ptr2=start1;
   while(ptr2->size1!=x)
   {
   preptr2=ptr2;
   ptr2=ptr2->next;
   }
init();
if(x==size)
   preptr2->next=ptr2->next;
   ptr=start;
   while(ptr->next!=NULL)
   ptr=ptr->next;
   ptr->next=newn;
   printf("\nBEST FIT\n");
   display(ptr);
   displayfree(ptr2);
break;
case 3:   
   ptr2=start1;
       y=0;
   while(ptr2!=NULL)
   {
   if((ptr2->size1>=size)&&(ptr2->size1>=y))
   {
   y=ptr2->size1;
   }
   ptr2=ptr2->next;
  }
if(y==0)
   {
   printf("\nInsufficient memory");
  break;
   }
   ptr2=start1;
   while(ptr2->size1!=y)
   {
   preptr2=ptr2;
   ptr2=ptr2->next;
   }
   if(y==size)
   {
   preptr2->next=ptr2->next;
   }
   init(); ptr=start;
   while(ptr->next!=NULL)
   {
   ptr=ptr->next;
   }
   ptr->next=newn;
  printf("\nWORST FIT\n");
   display(ptr);
   displayfree(ptr2);
   break;
case 4:break;
default:break;
}
printf("\npress 1 to add more..");
scanf("%d",&ch2);
}while(ch2==1);
}