小编Sur*_*ala的帖子

页大小和页表条目大小有什么区别

我无法理解页面大小和页表条目大小之间的区别。

根据我的理解,Page size 用于将 Page 表等分。称为 Pages 和相同大小的块用于将主内存划分为帧。

页面大小 = 帧大小。

对不起,绘画技巧不佳。这是我对页表的可视化

在此处输入图片说明

其中页表条目大小是每个页面条目占用的大小。所以,

页表条目大小 = 页大小。

但是页表条目大小是通过帧号中的位数来计算的。

谁能解释一下页面大小与页表条目大小的区别?为什么页表条目大小是根据帧中的位数而不是页来计算的?

请帮助我想象页表与上述所有组件的精确程度

hardware operating-system memory-management page-tables

7
推荐指数
1
解决办法
7599
查看次数

为什么 32 位和 64 位地址有两种不同的长度?

当我在 64 位机器上运行此代码时:

?#?include ?<stdio.h>
int main() 
{ 
    int a[10]; 
    printf("%p",&a);
    return 0;  
}
Run Code Online (Sandbox Code Playgroud)

它输出:

0x7fffe9ebf984 (14 digits)
Run Code Online (Sandbox Code Playgroud)

在一本教科书中,我发现了这个:

我的电脑的内存地址是 32 位的,用八位十六进制数字表示。

我的问题是:

为什么 32 位和 64 位地址有两种不同的长度?

32 位地址如何用 8 位数字表示,64 位数字如何用 14 位数字表示?

c memory

2
推荐指数
2
解决办法
4426
查看次数

整数类型的指针大小与int*的大小

我开始阅读指针,同时修补它们.我偶然发现了这个:

#include<stdio.h>
int main()
{
    int *p,a;
    a=sizeof(*p);
    printf("%d",a);
}
Run Code Online (Sandbox Code Playgroud)

它输出:4

然后在sizeof(*p)我用它取代它的地方sizeof(int*) 输出8.

P是整数类型的指针,int*也是同一个东西(我的假设是正确的吗?).那么为什么它会打印两个不同的值.我在64位gcc编译器上这样做.

c pointers

2
推荐指数
2
解决办法
8881
查看次数

PathLike 对象中的 __fspath__() 函数

我正在尝试实现一个 PathLike 对象并使用 fspath 命令从fspath函数中检索 o/p 。

我期望的是,如果 PathLike 对象被传递给 fspath 函数,它应该返回fspath的值(这里它应该以字节为单位返回路径)。但是,它仍然在 str 中返回。

import os,pathlib
class imp(os.PathLike):
 def __init__(self,path):
  self.path=path
 def __fspath__(path):
  return bytes(path)
re=imp('/etc/')
print(os.fspath(re.path))

Output: '/etc/'

Expected output : b '/etc/'
Run Code Online (Sandbox Code Playgroud)

你能告诉我我哪里出错了,我应该如何更改代码以使其按预期工作?

python filesystems parsing path

2
推荐指数
1
解决办法
1266
查看次数