您现在的位置是:首页 > 编程 > 

页表、地址重定位、地址保护的名词解释

2025-07-22 14:40:59
页表、地址重定位、地址保护的名词解释 页表、地址重定位、地址保护的名词解释页表:我的解答: 页表是一种特殊的数据结构,放在系统空间的页表区,存放逻辑页与物理页帧的对应关系。 每一个进程都拥有一个自己的页表,PCB表中有指针指向页表。老师的解答: 反映程序的逻辑页号和内存的物理块号映射关系的表。地址重定位:我的解答: 地址重定位指把目标程序中的逻辑地址转换成主存空间的物理地址。 其计算方法为:

页表、地址重定位、地址保护的名词解释

页表、地址重定位、地址保护的名词解释

页表:

我的解答: 页表是一种特殊的数据结构,放在系统空间的页表区,存放逻辑页与物理页帧的对应关系。 每一个进程都拥有一个自己的页表,PCB表中有指针指向页表。

老师的解答: 反映程序的逻辑页号和内存的物理块号映射关系的表。

地址重定位:

我的解答: 地址重定位指把目标程序中的逻辑地址转换成主存空间的物理地址。 其计算方法为:物理地址(PA)= 块号×页长+页内地址。

老师的解答: 把用户空间的逻辑地址转换成实际主存空间的物理地址的过程。

地址保护:

我的解答: 保护模式同实模式的根本区别是进程内存受保护与否。可寻址空间的区别只是这一原因的果。实模式将整个物理内存看成分段的区域,程序代码和数据位于不同区域,系统程序和用户程序没有区别对待,而且每一个指针都是指向"实在"的物理地址。这样一来,用户程序的一个指针如果指向了系统程序区域或其他用户程序区域,并改变了值,那么对于这个被修改的系统程序或用户程序,其后果就很可能是灾难性的。为了克服这种低劣的内存管理方式,处理器厂商开发出保护模式。这样,物理内存地址不能直接被程序访问,程序内部的地址(虚拟地址)要由操作系统转化为物理地址去访问。

老师的解答: 对用户程序、操作系统等地址空间的管理,防止程序间的代码保护。

每天一道算法题

最长连续不重复子序列

给定一个长度为 n 的整数序列,请出最长的不包含重复的数的连续区间,输出它的长度。

输入格式 第一行包含整数 n。

第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。

输出格式 共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。

数据范围 1≤n≤105 输入样例: 5 1 2 2 5 输出样例:

提交代码

代码语言:javascript代码运行次数:0运行复制
#include<bits/stdc++.h>
using namespace std;
ct int  = 100010;

int a[], s[];
int n, res;

int main()
{
    cin >> n;
    for (int i = 0; i < n; ++ i) cin >> a[i];
    for (int i = 0, j = 0; i < n; ++ i)
    {
        s[a[i]] ++; // 记录下a[i]出现的次数
        while(s[a[i]] > 1)   // 一点碰见两个重复的元素后
        {  
            s[a[j]] --;  // 这里要主要的一点是这个算法是没有回溯的
                         // 不要被for循环里面的条件误导以为会回溯、
                         // 现在遇到两个相同的元素了
                         // !!! 现在是这个算法最厉害的地方 
                         // 这个j代表的是 j可以到达最左的地方 所以在j左边的
                         // 元素的个数就需要都-- 这点很妙
                         // 每次求的是 j到i之间的符合条件的最大值
            j ++;        // 然后j++
        }
        res = max(res, i - j + 1);  // 这个res的含义是 在i这个位置、
        // 可以达到的符合题目条件的最大长度
    }
    cout << res;
    return 0;
}
代码语言:javascript代码运行次数:0运行复制
import java.io.*;
import java.util.*;

public class Main
{
    public static void main(String[] args) throws IOException{
        Scanner in = new Scanner(System.in);
        int n = ();
        int [] a = new int [n + 10];
        int [] s = new int [n + 10];
        int res = 0;
        for (int i = 0; i < n; ++ i) a[i] = ();
        for (int i = 0, j = 0; i < n; ++ i)
        {
            s[a[i]] ++;
            while(s[a[i]] > 1)
            {
                s[a[j]] --;
                j ++;
            }
            res = (res, i - j + 1);
        }
        println(res);
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:202-02-2,如有侵权请联系 cloudcommunity@tencent 删除系统指针程序内存算法

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1145933.html

相关标签:无
上传时间: 2025-07-19 13:22:55
留言与评论(共有 19 条评论)
本站网友 在美
6分钟前 发表
res; int main() { cin >> n; for (int i = 0; i < n; ++ i) cin >> a[i]; for (int i = 0
本站网友 一枝一叶一世界
2分钟前 发表
输入格式 第一行包含整数 n
本站网友 互联
12分钟前 发表
地址重定位
本站网友 英威达
4分钟前 发表
j = 0; i < n; ++ i) { s[a[i]] ++; // 记录下a[i]出现的次数 while(s[a[i]] > 1) // 一点碰见两个重复的元素后 { s[a[j]] --; // 这里要主要的一点是这个算法是没有回溯的 // 不要被for循环里面的条件误导以为会回溯
本站网友 屠戮之刃哪里爆
24分钟前 发表
// 现在遇到两个相同的元素了 // !!! 现在是这个算法最厉害的地方 // 这个j代表的是 j可以到达最左的地方 所以在j左边的 // 元素的个数就需要都-- 这点很妙 // 每次求的是 j到i之间的符合条件的最大值 j ++; // 然后j++ } res = max(res
本站网友 young样
4分钟前 发表
请出最长的不包含重复的数的连续区间
本站网友 random函数
23分钟前 发表
每天一道算法题最长连续不重复子序列给定一个长度为 n 的整数序列
本站网友 康欣胶囊
19分钟前 发表
s[]; int n
本站网友 崔宝印
11分钟前 发表
其计算方法为:物理地址(PA)= 块号×页长+页内地址
本站网友 太原房屋出租信息
26分钟前 发表
i - j + 1); // 这个res的含义是 在i这个位置
本站网友 感染2013
22分钟前 发表
为了克服这种低劣的内存管理方式
本站网友 上海消费
21分钟前 发表
j = 0; i < n; ++ i) { s[a[i]] ++; while(s[a[i]] > 1) { s[a[j]] --; j ++; } res = (res
本站网友 牙齿美白秘方
30分钟前 发表
放在系统空间的页表区
本站网友 油漆工的徒弟叫啥
17分钟前 发表
为了克服这种低劣的内存管理方式
本站网友 最大的货轮
2分钟前 发表
操作系统等地址空间的管理
本站网友 海西新闻
9分钟前 发表
那么对于这个被修改的系统程序或用户程序
本站网友 女生殖
3分钟前 发表
并改变了值
本站网友 美国聊天室
4分钟前 发表
用户程序的一个指针如果指向了系统程序区域或其他用户程序区域