标签: kernel

为Microsoft Windows编写内核的基本要求是什么

作为程序员,我应该学习如何编写像微软Windows一样的内核

我知道c和c ++,但是我应该怎么做才能编写内核,因此有必要了解linux内核编程的基础知识

如何成为linux和windows内核编程方面的专家

linux windows kernel

-1
推荐指数
1
解决办法
305
查看次数

如何在内核代码中扩展__FILE__和__LINE__?

我正在阅读Linux设备驱动程序,并注意到您可以使用printk打印当前行和文件.这是如何实现的?Linux如何跟踪包含printk语句的行?我还没有在用户空间中编写的"普通C代码"中看到类似的功能.

这是LDD3的一个例子:

printk(KERN_DEBUG "Here I am: %s:%i\n", __FILE__, __LINE__);
Run Code Online (Sandbox Code Playgroud)

编辑:正如piokuc所说,这些实际上是标准的宏.GCC文档在这里描述它们:http://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html

__CODE__为每一行设置并由预处理器替换为当前行,__CODE__为每个文件设置.

c linux kernel

-1
推荐指数
1
解决办法
2357
查看次数

C如何区分字节长字符和2字节长字符?

我有这个示例代码:

#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>

int main(void){
    printf("%li\n",sizeof(char));
    char mytext[20];
    read(1,mytext,3);
    printf("%s",mytext);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

第一次运行:

koray@koray-VirtualBox:~$ ./a.out 
1
pp
pp
koray@koray-VirtualBox:~$ 
Run Code Online (Sandbox Code Playgroud)

好吧,我认为这是所有预期的,因为p是ASCII中定义的1字节长字符,我正在读取3个字节.(2 p和换行符)在终端中,我再次看到2个字符.

现在让我们尝试一个2字节长的字符:

koray@koray-VirtualBox:~$ ./a.out 
1
?
?
Run Code Online (Sandbox Code Playgroud)

我不明白的是,当我将字符'ğ'发送到mytext变量指向的内存时,16位被写入该区域.由于'ğ'是utf-8中的11000100:10011110,因此写入这些字节.

我的问题是,当打印回标准时,C(或者我应该说内核?)知道它应该读取2个字节并解释为1个字符而不是2个1字节字符?

c linux io bash kernel

-1
推荐指数
1
解决办法
170
查看次数

哪种寻址方式用于访问磁盘?

我正在学习OS开发,我处于初级水平.我创建了一个简单的启动加载器 要访问磁盘上的其他文件(比如HDD或USB驱动器),我应该使用哪种寻址模式?(CHS或LBA或INT 13h扩展).

哪种寻址方式非常有效(手段,可以用于大多数驱动器)?

谢谢

x86 assembly kernel disk-access bootloader

-1
推荐指数
1
解决办法
136
查看次数

如何通过bash检查最新的内核版本

如何通过 bash 查看最新的内核版本?是否有任何命令可以从https://www.kernel.org/检查最新内核?

linux bash kernel

-3
推荐指数
1
解决办法
1575
查看次数

如何通过编程语言实现多处理?

我正在尝试开发一个简单的操作系统.到目前为止,我开发的所有程序都可以在一个处理器中运行.但是当我通过一个名为多处理系统的概念时,几乎所有的最新系统都基于这个概念,我有很多疑问.

首先,如何创建可在多处理器系统中运行的程序.它是硬件导向还是程序员特定的?

其次,我学习了并行编程语言,这在多处理系统中很有用,其中Java是一个但C不是.那么在C(Windows)中开发的操作系统如何才能实现多处理?

谢谢.

c assembly operating-system kernel multiprocessing

-3
推荐指数
2
解决办法
1216
查看次数

为什么内核代码比用户代码快?

为什么内核代码比用户代码运行得更快?我听说用户代码可以用C语言编写,内核代码也可以用C语言编写,例如Windows。那么在内核模式下更快执行的原因是什么?

performance kernel

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

获取所有运行进程的列表(使用processName + ProcessPath + ProcessTitle)

我想要做的是:

获取所有运行进程的列表:( processName没有.exe)ProcessFullFilePath ProcessMainWindowTitle类似于:

process1 c:\p1.exe TheprocessTitle
..............
Run Code Online (Sandbox Code Playgroud)



非常重要: 我需要工作代码,不会出现任何异常(try catch)




我的代码:
我曾经TLHelp32获得名称列表:

var handler: THandle;
    data: TProcessEntry32;

  function GetName: string;
  var i:byte;
  begin
     Result := '';
     i := 0;
     while data.szExeFile[i] <> '' do
     begin
        Result := Result + data.szExeFile[i];
        Inc(i);
     end;
   end;
begin
    Application.ShowMainForm := False;
    handler := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
  if Process32First(handler, data) then
  begin
   ShowMessage(GetName());
    while Process32Next(handler, data) do
       ShowMessage(GetName());
   end;
Run Code Online (Sandbox Code Playgroud)



这还不够, 我需要:名称路径标题

delphi kernel process user32

-8
推荐指数
1
解决办法
6752
查看次数