[分数可追加]把伪代码改成C/C++代码,操作系统内存管理的伪代码

http://wenku.baidu.com/link?url=mbQq-dJSAyyWBT82WX9VfCS2glykQyyZ9DqB557Fk4ywYTL3ZJyy4uw_bp779lQ7YC_GAhcAaeh5yDH4epV78pm2Y-tvSvT3r1uUb2ddHZ3

伪代码如下{也可看上述文库的文档}:
GetMemSta(); //输出当前内存情况
printf("================================================.\n") ;
……; //使用内存分配来获得128MB块
……; //尝试向刚申请的内存空间内写入0
GetMemSta(); //输出当前内存情况
……; //释放刚刚申请的128MB块
GetMemSta(); //输出当前内存情况
printf("================================================.\n") ;
……; //使用虚拟分配以获得物理128MB块
……; //尝试向刚申请的内存空间内写入0
GetMemSta(); //输出当前内存情况
……; //释放刚刚申请的128MB块
GetMemSta(); //输出当前内存情况
printf("================================================.\n") ;
……; //使用虚拟分配以获得虚拟512MB块
……; //尝试向刚申请的内存空间内写入0
GetMemSta(); //输出当前内存情况
……; //释放刚刚申请的虚拟512MB块
GetMemSta(); //输出当前内存情况
printf("================================================.\n") ;
……; //使用虚拟分配调配获得虚拟512MB块,再为其调配128MB物理存储
……; //尝试向刚申请的128MB内存空间内写入0
GetMemSta(); //输出当前内存情况
……; //释放刚刚申请的虚拟512MB块
GetMemSta(); //输出当前内存情况

class storehouse{
    int mutex;
    int count;
    int max;
    void save(){
        int changed=false;
                while(changed==false){
                   changed=true;
                   enter(mutex);
                    if(count<max)count++;
                    else changed=false;
                leave(mutex);
                sleep(0);
            }
    }
    void sell(){
       int changed=false;
               while(changed==false){
                  changed=true;
                  enter(mutex);
                   if(count>0)count--;
                   else changed=false;
               leave(mutex);
               sleep(0);
           }
    }
 
}
class Producer{
    produect(storehouse& store){
        store.save();
    }
}
class consumer{
    consum(storehouse& store){
        store.sell();
    }
 
}
 
int main(){
    storehouse store1;
    vector<Producer> products;
    vector<consumer> consums;
    vector<std:thread> allthread;
  while(products.size()||consums.size()){
    if(products.size()) allthread.push_back(std::thread t(&Producer,products.pop_back()));
    if(consums.size())allthread.push_back(std::thread(&consums.sell(),consums.pop_back()));
}
 for(auto athread:allthread)athread.join();
    
}

温馨提示:答案为网友推荐,仅供参考
相似回答