All pastes #2076384 Raw Edit

Untitled

public text v1 · immutable
#2076384 ·published 2011-06-07 20:29 UTC
rendered paste body
sock_desc = scoket(AF_INET,SOCK_DGRAM,0);

bind(sock_desc,(struct sockaddr *)&server,sizeof(server));

listen(scok_desc,20);

new_sock = accept(sock_desc,(struct sockaddr *)&client,&len,0);

connect(sock_desc,(struct sockaddr *)&to,sizeof(to));

send(sock_desc,array,sizeof(array),0);

recv(sock_desc,array,sizeof(array),0);

sendto(sock_desc,array,sizeof(array),0,(struct sockaddr *)&to,&len);

recvfrom(sock_desc,array,sizeof(array),0,(struct sockaddr *)&from,sizeof(from));

setsockopt(sock_desc,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(int));



qid=msgget((key_t)1234,0666|IPC_CREAT);

msgsnd(qid,&buf,512,0);

msgrcv(qid,&buf,512,0,0);

msgctl(qid,IPC_RMID,NULL);


int pfd[2];
pipe(pfd);
wite into 1
read from 0
wait(NULL)


int sid = shmget((key_t)1234,35,0666|IPC_CREAT);
char *shm = shmat(sid,NULL,0);
int flag = shmdt(shm);



#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<netdb.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<sys/shm.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include<sys/stat.h>
#include<netinet/in.h>
#include<fcntl.h>
#include<sys/statvfs.h>



statvfs(Path,&Data)
n=((float)Data.f_bsize/(1024.0*1024.0));
k=((float)Data.f_blocks*n);
l=((float)Data.f_bfree*n);
a=k-l;
printf("\nDisk %s",Path);
printf("\nBlock size in MB:%f",n);
printf("\nBlock size in bytes:%lu",Data.f_bsize);
printf("\nTotal size in bytes:%lu",Data.f_blocks*Data.f_bsize);
printf("\nTotal size in MB:%f",k);
printf("\nTotal free blocks in MB:%f",l);
printf("\nFree blocks in bytes:%lu",Data.f_bfree*Data.f_bsize);
printf("\nUsed blocks in MB:%f",a);
printf("\nUsed blocks in bytes:%lu\n",(Data.f_blocks*Data.f_bsize)-(Data.f_bfree*Data.f_bsize));


Finger
-----------------------

1) rpcgen finger.x
	4 new files will be created
2) cc server fingerserver.c filename.srv filename.xdr -o
3) cc client fingerclient.c filename.clnt filename.xdr -o


rpcgen -C myfinger.x

cc -c client.c -o client.o
cc -c myfinger_clnt.c -o myfinger_clnt.o
cc -c myfinger_xdr.c -o myfinger_xdr.o
cc -o client client.o myfinger_clnt.o myfinger_xdr.o -lnsl

cc -c server.c -o server.o
cc -c myfinger_svc.c -o myfinger_svc.o
cc -c myfinger_xdr.c -o myfinger_xdr.o
cc -o server server.o myfinger_svc.o myfinger_xdr.o -lnsl



Banker: Safety Algorithm [126] 

STEP 1: initialize
  Work := Available;
  for i = 1,2,...,n 
    Finish[i] = false
STEP 2: find i such that both
  a. Finish[i] is false
  b. Need_i <= Work
  if no such i, goto STEP 4
STEP 3: 
  Work := Work + Allocation_i
  Finish[i] = true
  goto STEP 2
STEP 4:
  if Finish[i] = true for all i, system is in safe state


Banker: Resource-Request Algorithm [128] 

STEP 0: P_i makes Request_i for resources, say (1,0,2)
STEP 1: if Request_i <= Need_i 
          goto STEP 2 
        else ERROR
STEP 2: if Request_i <= Available 
          goto STEP 3 
        else suspend P_i
STEP 3: pretend to allocate requested resources
          Available := Available - Request_i
          Allocation_i := Allocation_i + Request_i;
          Need_i := Need_i - Request_i
STEP 4: if pretend state is SAFE
          then do a real allocation and P_i proceeds
        else
          restore the original state and suspend P_i