zoukankan      html  css  js  c++  java
  • 页面调度

    百度机试题

    [编程题] 页面调度算法

    在计算机中,页式虚拟存储器实现的一个难点是设计页面调度(置换)算法。其中一种实现方式是FIFO算法。
    FIFO算法根据页面进入内存的时间先后选择淘汰页面,先进入内存的页面先淘汰,后进入内存的后淘汰。
    假设Cache的大小为2,有5个页面请求,分别为 2 1 2 3 1,则Cache的状态转换为:(2)->(2,1)->(2,1)->(1,3)->(1,3),其中第1,2,4次缺页,总缺页次数为3。
    现在给出Cache的大小n和m个页面请求,请算出缺页数。


    输入描述:

    输入包含多组测试数据。
    对于每组测试数据,第一行是整数n,第二行是整数m。
    然后有m个整数,代表请求页编号。
    保证:
    2<=n<=20,1<=m<=100,1<=页编号<=200.



    输出描述:

    对于每组数据,输出一个整数,代表缺页数


    输入例子:
      2
      5
      2
      1
      2
      3
      1
      

    输出例子:
      3
    #include<iostream>
    #include<set>
    #include<queue>
    using namespace std;
    int main(){
        int size;
        while (cin >> size){
            set<int> s;
            queue<int> q;
            int m;
            cin >> m;
            int miss = 0;
            for (int i = 0; i<m; ++i){
                int page;
                cin >> page;
                if (s.find(page) == s.end()){//如果缺页
                    miss++;//缺页次数
                    if (s.size()<size){//如果内存没有满
                        s.insert(page);//插入该页面到set
                        q.push(page);//插入该页面到queue
                    }
                    else{//如果内存已满
                        s.insert(page);//插入该页面到set
                        q.push(page);//插入该页面到queue
                        int ele = q.front();
                        s.erase(ele);//从set中删除队头页面
                        q.pop();//从queue中弹出队头页面
                    }
                }
            }
            cout << miss << endl;
        }
        return 0;
    }
  • 相关阅读:
    [转]The Machine SID Duplication Myth (and Why Sysprep Matters)
    The Machine SID Duplication Myth (and Why Sysprep Matters)
    [转]Shell(Bash) mysql数据库操作
    [转]GNU Sourcehighlight 语法高亮代码
    [原]DRBD双主模式问题
    mpstat
    DRBD试用
    drbd双主模式问题
    虚IP的添加和删除
    为什么5%的技术人员开发效率是其他95%的20倍?
  • 原文地址:https://www.cnblogs.com/learning-c/p/5722492.html
Copyright © 2011-2022 走看看