Exemplo n.º 1
0
int main(int argc, char* argv[]){
    char buffer[BUFFER_SIZE];
    int index, pages;
    int requests = 0;
    int faults = 0;
    
    if(argc < 1){
        printf("Too many arguments. Please look at documentation to compile.\n");
        return 0;
    }

    sscanf(argv[1], "%d", &pages);

    List* list = create(pages);

    FILE* fp = fopen("out.txt", "w");
    assert(fp != NULL);
    
    while(fgets(buffer, sizeof(buffer), stdin) != NULL) {

        if(!isdigit((int)buffer[0]))
            continue;

        sscanf(buffer, "%d", &index);

        requests++;
        if(findNode(list, index) != NULL){
            setNodeRef(list, index, requests);
        }
        else{
            if(listFull(list)){
                replaceNode(list, findMinNode(list), index);
                setNodeRef(list, index, requests);
            }
            else{
                insertNode(list, index, 0 ,0);
                setNodeRef(list, index, requests);
            }
            faults++;
            assert(fprintf(fp, "%d \n", index) >= 0);
        }
    } // while
    fclose(fp);
    free(list); 
    printf("Number of page requests: %d \nNumber of page faults: %d \n", requests, faults);
    return 1;
}
Exemplo n.º 2
0
static void insertSession(SessionList     *list, 
                          SubscriberNumber number,
                          ServerId         serverId)
{
   SessionElement *e;
   if( listFull(list) ) return;

   e = &list->list[list->writeIndex];

   strcpy(e->subscriberNumber, number);
   e->serverId = serverId;

   list->writeIndex = (list->writeIndex + 1) % SESSION_LIST_LENGTH;
   list->numberInList++;

   if( list->numberInList > maxsize )
     maxsize = list->numberInList;
}