Commit 6a89792c authored by Ravi's avatar Ravi

Second Chance Updated

parent 7395ad80
......@@ -2,4 +2,6 @@
*.out
ClientData/clientResponses.txt
obj/*
build/*
ServerData/*
checklist
\ No newline at end of file
PUT 0 0
PUT 4 4
PUT 1 1
GET 1
PUT 4 4
PUT 2 2
PUT 4 4
PUT 3 3
PUT 4 4
PUT 2 2
PUT 4 4
PUT 0 0
PUT 4 4
PUT 1 1
PUT 4 4
PUT 2 2
PUT 4 4
PUT 3 3
PUT 4 4
\ No newline at end of file
......@@ -83,3 +83,246 @@ Success
1 1
Success
1 1
Success
1 1
Success
1 1
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
Success
......@@ -13,127 +13,19 @@
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
</Set>
<Set Id="1">
<CacheEntry isReferenced="​​false"isValid="​false">
<Key>1</Key>
<Value>1</Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​true">
<Key>2</Key>
<Value>2</Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​true">
<Key>3</Key>
<Value>3</Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
</Set>
<Set Id="2">
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
</Set>
<Set Id="3">
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
<CacheEntry isReferenced="​​false"isValid="​true">
<Key>4</Key>
<Value>4</Value>
</CacheEntry>
<CacheEntry isReferenced="​​false"isValid="​false">
<Key></Key>
<Value></Value>
<CacheEntry isReferenced="​​false"isValid="​true">
<Key>2</Key>
<Value>2</Value>
</CacheEntry>
</Set>
</KVCache>
\ No newline at end of file
0,0
1,1
2,2
3,3
4,(null)
5,5
6,6
7,7
8,8
9,9
4,4
......@@ -30,6 +30,7 @@ struct data **kvc;
int *lastVisited;
int setValue( int len )
{
return len%sets;
......@@ -73,7 +74,7 @@ int isPresent( int set , char key[]){
int i;
for( i =0 ; i<nway ; i++)
{
if(!strcmp(kvc[set][i].key , key) && kvc[set][i].chance != -1)
if(!strcmp(kvc[set][i].key , key) && kvc[set][i].isfree == 0 )
{
return i;
......@@ -88,40 +89,47 @@ void findSlot(int set , char key[] , char value[])
// printf("(%d)\n", lastVisited[set] );
int i, j =0;
// int counter = 10 ;
for(i= ((lastVisited[set]+1)%nway); j<nway ; j++ )
{
i = ( i + j ) % nway;
if( kvc[set][i].chance == 0 )
for(i = 0 ; i < nway ; i++)
{
if(kvc[set][i].isfree == 1)
{
lastVisited[set] = i ;
// kvc[set][i].chance = 0;
kvc[set][i].chance = 0;
strcpy (kvc[set][i].key , key);
strcpy (kvc[set][i].value , value);
kvc[set][i].isfree = 0;
// printf("success %s \t %s\n", kvc[set][i].key , kvc[set][i].value );
// printf("%d\t%dsuccess\n", );
return;
}
}
}
for(int t = ((lastVisited[set]+1)%nway); j<nway ; j++ )
{
i = ( t + j ) % nway;
if( kvc[set][i].chance == 0 )
{
lastVisited[set] = i ;
kvc[set][i].chance = 0;
strcpy (kvc[set][i].key , key);
strcpy (kvc[set][i].value , value);
kvc[set][i].isfree = 0;
return;
}
else{
kvc[set][i].chance = 0;
}
}
}
void updateCache(int set ,int pos ,char value[])
{
memset(kvc[set][pos].value , 0 , sizeof(kvc[set][pos].value));
strcpy (kvc[set][pos].value , value );
kvc[set][pos].isReferenced = 0;
//printf("updated %s \t %s\n", kvc[set][pos].key , kvc[set][pos].value );
kvc[set][pos].chance = 1;
}
......@@ -139,7 +147,6 @@ int putData(char key[] , char value[])
findSlot(set , key , value);
}
writeRecordToFile(key , value);
pthread_mutex_unlock(&(setLock[set].work_mutex));
......@@ -154,16 +161,13 @@ char * getData( char key[]){
for( i =0 ; i<nway ; i++)
{
if(!strcmp(kvc[set][i].key , key) && kvc[set][i].chance != -1 && kvc[set][i].isfree ==0)
if(!strcmp(kvc[set][i].key , key) && kvc[set][i].isfree ==0)
{
// printf("\nCache Hit");
kvc[set][i].chance = 1;
kvc[set][i].isReferenced = 1;
pthread_mutex_unlock(&(setLock[set].work_mutex));
// printf("GOT IT");
return kvc[set][i].value;
return kvc[set][i].value;
}
}
// printf("\ncache miss");
......
int sets = 4;
int nway = 8;
int sets = 2;
int nway = 3;
......@@ -111,7 +111,7 @@ void main (int argc, char *argv[])
fds[0].fd = listen_sd;
fds[0].events = POLLIN;
timeout = (300 * 100);
timeout = (50 * 100);
do
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment