小编Raj*_*ani的帖子

如何在linux内核中使用连续内存?

我发现物理内存分为如下排列(内存交错):

   rank0: [0-512KB] [2048KB-2560KB] [4096KB-4608KB] ...
   rank1: [512KB-1024KB] [2560KB-3072KB] [4608KB-5120KB] ... 
   rank2: [1024KB-1536KB] [3072KB-3584KB] [5120KB-...
   rank3: [1536KB-2048KB] [3584KB-4096KB] ...
Run Code Online (Sandbox Code Playgroud)

Linux内核正在获得这些交叉存储器.因此,linux内核看到的物理内存不是连续的.如果我错了,请纠正我.

我一直在为我的课程工作看linux内核源代码.

在创建sysfs(/ sys/devices/system/memory)时,linux内核会创建这些可用物理内存的特定大小(我的系统上为128 MB)的部分(memory0,memory1,...).使用这些目录中的状态文件,我可以使部分脱机/在线.(Memory Hotplug)

因此,这些部分所代表的物理内存是分散的.因此,如果我使任何部分脱机,将使该分散的内存,它指向不可用.

我想让这些部分引用连续的内存.这样的事情:

   memory0 : 0-128 MB
   memory1 : 128-256 MB
   ....
Run Code Online (Sandbox Code Playgroud)

因此,当我使某个部分脱机时,与该部分相关的连续物理内存将变得不可用.那么,我可以让linux内核看到物理内存是连续的而不是交错的吗?

如果我错了,请纠正我.

谢谢.

memory-management linux-kernel

6
推荐指数
1
解决办法
553
查看次数

java.net.SocketException:sendto failed:Android上的EPIPE(Broken pipe)

我试图从Android中的客户端读取服务器套接字中的数据.

以下是我正在使用的代码片段:

客户端(在JAVA的Android上)

    DataOutputStream dataOutputStream = null;
    DataInputStream dataInputStream = null;
    try {

        if (client.socket == null || !client.socket.isConnected())
            client.createSocket();

        // Get Input/Output stream for socket
        dataOutputStream = new DataOutputStream(client.socket.getOutputStream());
        dataInputStream = new DataInputStream(client.socket.getInputStream());

       // Here RS is simple JAVA class that stores information about payload and response length
        Log.d("Send", "Sending payload for pair " + RS.getc_s_pair() + " " + RS.getResponse_len());

        dataOutputStream.write(UtilsManager.serialize(RS.getPayload()));

        // Notify waiting Queue thread to start processing next packet
        if (RS.getResponse_len() > 0) {
            Log.d("Response", …
Run Code Online (Sandbox Code Playgroud)

python java sockets android socketexception

6
推荐指数
1
解决办法
1万
查看次数

linux内核如何创建sysfs?

我已经开始为我的操作系统课程寻找 linux 内核代码。我对 sys 文件系统 (sysfs) 感兴趣。我有兴趣了解 sysfs 何时以及如何创建?linux内核代码中的哪些文件生成了这个文件系统?

我已经在我的系统上设置了 linux 内核并开始通过代码进行调试。

我参考了这个文档来了解 sysfs 文件系统: [sysfs] : https://www.kernel.org/doc/Documentation/filesystems/sysfs.txt

但是本文档只解释了目录结构、目录的创建和读/写属性。我对内核如何在引导期间创建这些目录更感兴趣。我知道以下方法负责在 sysfs 中创建目录。

   int sysfs_create_file(struct kobject *kobj, struct attribute *attr);
Run Code Online (Sandbox Code Playgroud)

此函数接受 kboject 结构、属性并使用这些在 sysfs 中创建目录。

我知道在启动时,内核会检测内存并在 sys/devices/system/memory 下创建目录。我计划更改此目录结构作为我作业的一部分。那么,能否请您指出负责创建此特定内存目录的文件和方法?

linux operating-system kernel linux-kernel sysfs

5
推荐指数
1
解决办法
4812
查看次数

在Android中读取python pickle数据流

我有这个包含python pickle数据流的文件.我要在Android中阅读此文件的内容.

例如,如果我想在python中读取这个数据流,我只需使用以下代码

queue = pickle.load(open('filename', 'rb'))
Run Code Online (Sandbox Code Playgroud)

我想在Android中实现同样的功能,这样我就可以读取这个pickle流数据并将其存储在某种集合中.

我怎样才能做到这一点?

python android pickle

4
推荐指数
1
解决办法
3945
查看次数