头像

xuanxuanxuan


访客:2504

离线:1天前



os内存管理—关于驻留集

概念:os驻留集是指在请求分页存储管理器中,给进程分配的物理块大小集合。
驻留集太小:内存基本不中,频繁缺页,即需要频繁把进程从外存调进内存,我
们知道io操作非常耗性能。
驻留集太大:会导致多道程序并发度降低,资源利用率低。

主要是对驻留集太大–>多道程序并发度降低???

个人理解:驻留集就是一个进程实际在主存中的占用大小(反正就一堆物理块),
要是一个进程给分太多,总的主存就那
一点就没法子给别的进程分空间了,降低多道程序的并发度。

胡言乱语几句

CPU数据交换是通过高速缓冲存储器(cache),cache数据交换是通过内存,内存是跟磁盘进行数据交换,这也就是一个
CPU获取磁盘数据的过程,我们也知道磁盘IO性能也是很低下的,也就可以理解马爸爸的钉钉崩溃,12306年年崩溃~

快表(TLB)和cache区别

这俩玩意简直神似,反正我觉得就设计上完全一个概念。
主要谈谈区别
快表:放的是页面在内存中的位置信息
cache:放的是CPU要访问的内存数据


活动打卡代码 AcWing 1476. 数叶子结点

#include<iostream>
#include<cstring>
using namespace std;
const int N=110;
int h[N],e[N],ne[N],idx;
int cnt[N],depthm;

int n,m;
void add(int a,int b)
{
    e[idx]=b,ne[idx]=h[a],h[a]=idx++;  //头插法
}
void dfs(int u,int depth)
{
    if(h[u]==-1)
    {
        cnt[depth]++;
        depthm=max(depth,depthm);
        return;
    }
    for(int i=h[u];~i;i=ne[i])
    {
        dfs(e[i],depth+1);
    }
}

int main()
{

    memset(h,-1,sizeof h);   //按字节初始化
    cin>>n>>m;
    for(int i=0;i<m;i++)
    {
        int id,k;
        cin>>id>>k;
        while(k--)
        {
            int son;
            cin>>son;
            add(id,son);
        }
    }
    dfs(1,0);
    cout<<cnt[0];                    //pat格式很严格,不能有行末空格
    for(int i=1;i<=depthm;i++)
    {
        cout<<' '<<cnt[i];
    }
}


活动打卡代码 AcWing 826. 单链表

#include<iostream>
using namespace std;
const int N=100100;
int head,idx,e[N],ne[N];

void init()
{
    head=-1;
    idx=0;
}

void head_insert(int x)
{
    e[idx]=x;
    ne[idx]=head;
    head=idx;
    idx++;
}

void k_insert(int k,int x)
{
    e[idx]=x;
    ne[idx]=ne[k];
    ne[k]=idx;
    idx++;

}

void del(int k)
{

    ne[k]=ne[ne[k]];
}
int main()
{
    init();
    int n;
    cin>>n;

    while(n--)
    {
        char op;

        cin>>op;

        if(op=='H')
        {
            int x;
            cin>>x;
            head_insert(x);
        }else if(op=='I')
        {
            int k,x;
            cin>>k>>x;
            k_insert(k-1,x);
        }else if(op=='D')
        {
            int k;
            cin>>k;
            if(!k) head=ne[head];
            del(k-1);
        }
    }
    for(int i=head;i!=-1;i=ne[i])
    {
        cout<<e[i]<<' ';
    }
}


活动打卡代码 AcWing 1524. 最长回文子串

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    string str;
    getline(cin, str);

    int res = 0;
    for (int i = 0; i < str.size(); i ++ )
    {
        int l = i - 1, r = i + 1;
        while (l >= 0 && r < str.size() && str[l] == str[r]) l --, r ++ ;
        res = max(res, r - l - 1);

        l = i, r = i + 1;
        while (l >= 0 && r < str.size() && str[l] == str[r]) l --, r ++ ;
        res = max(res, r - l - 1);
    }

    cout << res << endl;

    return 0;
}




活动打卡代码 AcWing 1473. A + B 格式

xuanxuanxuan
1个月前
#include<iostream>
using namespace std;
int main()
{
    int x,y;
    cin>>x>>y;
    int t=x+y;
    string s=to_string(t);
    string res;
    int len=s.size();
    for(int i=0;i<len;i++)
    {
        cout<<s[i];
        if(s[i]=='-')continue;
        if((i+1)%3==len%3&&i!=len-1) cout<<',';
    }
    cout<<res;
    return 0;
}



xuanxuanxuan
1个月前
#include<iostream>
using namespace std;
int res[100010];

int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int count=0;
        cin>>res[i];
        while(res[i]){
        res[i]-=res[i]&(-res[i]);
        count++;
        }
        cout<<count<<' ';

    }
}



xuanxuanxuan
2个月前
#include<iostream>
#include<cstring>
char a[85],b[85];
using namespace std;
int main()
{
    fgets(a,85,stdin);
    fgets(b,85,stdin);

    if(a[strlen(a)-1]=='\n') a[strlen(a)-1]=0;
    if(b[strlen(b)-1]=='\n') b[strlen(b)-1]=0;

    for(int i=0;a[i];i++)
    {
        if(a[i]>='A'&&a[i]<='Z')
        a[i]=a[i]^32;
    }

    for(int i=0;b[i];i++)
    {
        if(b[i]>='A'&&b[i]<='Z')
        b[i]=b[i]^32;
    }
    int t=strcmp(a,b);
    if(t==0) puts("=");
    else if(t<0) puts("<");
    else puts(">");

}


活动打卡代码 AcWing 762. 字符串匹配

xuanxuanxuan
2个月前
#include<iostream>
#include<cstring>
char a[110],b[110];
using namespace std;
int main()
{
    double x;
    cin>>x;
    cin>>a>>b;
    int len=strlen(a);
    double k=0;
    for(int i=0;i<len;i++)
    {
        if(a[i]==b[i]) k++;
    }
    if(k/len>=x) puts("yes");
    else puts("no");

    return 0;
}



xuanxuanxuan
2个月前
#include<iostream>
#include<cstring>
using namespace std;
char res[100010];
int cnt[26];
int main()
{
    cin>>res;
    int len=strlen(res);
    for(int i=0;i<len;i++) cnt[res[i]-'a']++;
    for(int i=0;i<len;i++)
    {
        if(cnt[res[i]-'a']==1)
        {
            cout<<res[i];
            return 0;
        }
    }
    puts("no");
    return 0;

}


活动打卡代码 AcWing 773. 字符串插入

xuanxuanxuan
3个月前
#include<iostream>
using namespace std;
int main()
{
    string a,b;
    while(cin>>a>>b)
    {
        int p=0;
        for(int i=0;i<a.size();i++)
        {
            if(a[i]>a[p]) p=i;
        }
        cout<<a.substr(0,p+1)<<b<<a.substr(p+1)<<endl;
    }
}