科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基于Linux操作系统内核汉化大揭秘 (1)

基于Linux操作系统内核汉化大揭秘 (1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在阐述基于Linux核心的汉字显示的技术细节之前,有必要介绍一下原有Linux的工作机制。这里主要涉及到两部分的知识,这是Linux下终端和帧缓冲的实现。

作者:赛迪网技术社区 来源:赛迪网技术社区 2007年10月22日

关键字: 揭秘 汉化 内核 Linux

  • 评论
  • 分享微博
  • 分享邮件
 

在阐述基于Linux核心的汉字显示的技术细节之前,有必要介绍一下原有Linux的工作机制。这里主要涉及到两部分的知识,这是Linux下终端和帧缓冲的实现。

控制台(console)

通常我们在Linux下看到的控制台(console)是由几个设备构成的。分别是/dev/ttyN(其中tty0就是/dev/console, tty1、tty2就是不同的虚拟终端(virtual console))。通常使用热键Alt+Fn来在这些虚拟终端之间进行切换。这些tty设备对应于 linux/drivers/char/console.c和lvt.c。其中console.c负责绘制屏幕上的字符,vt.c负责管理不同的虚拟终端,并且负责提供console.c需要绘制的内容。Vt.c把不同虚拟终端下的需要交给console.c绘制的内容,放到不同的缓存中去。Vt.c管理者这样一个缓冲区的数组,并且负责在这些缓存之间切换,并指定哪一个缓冲区是被激活的。你所看到的虚拟终端就对应着被激活的缓冲区。Console.c 同时也负责接收终端的输入,然后把接收到的输入的信息放到缓冲区。

帧缓冲(framebuffer)

Framebuffer是把显存抽象后的一个种设备,可以通过这个设备的读写直接对显存进行操作。这种操作是抽象的、统一的。用户不必关心物理显存的位置、换页机制等等具体细节,这些都是由Framebuffer设备驱动程序来完成的。

Framebuffer对应的源文件在linux/drivers/video/目录下。总的抽象设备文作为fbcon.c,在这个目录下还有与各种显卡驱动程序相关的源文件。

在使用帧缓冲时,Linux是将显卡置于图形模式下的。我们以一个简单的例子来说明字符显示的过程。我们假设是在虚拟终端1(/dev/tty1)下迁行如下的简单程序:

main () 

{ 

puts(”hello,world. 

”); 

}

pputs函数向缺省输出文件(/dev/tty)发出“写”的系统调用write(2)。系统调用到Linux核心对应的核心函数->—— console.c中的con_write( ), con_write( )最终会调用do_con_write(),在do_con_write()中负责把”hello,world.”这个字符串放到tty1对应的缓冲区中去。Do_con_write()还负责处理控制字符和光标的位置。让我们来看一下do_con-write()这个函数的声明:

Static int do_con_write(struct 

Tty_struct * tty, int 

from_user, const unsigned 

char *buf, int count )

其中tty是指向tty_struct结构的指针,这个结构里存放着关于这个tty的所有信息(请参照linux/include/linux/tty.h)。tty_srtuct结构中定义了?p> 用(或高层)tty的属性(例如宽度和高度等)。

在do_con_write()函数中用到了tty_struct结构中的driver_data变量。Driver_data是一个 vt_vt_stuct指针。在vt_struct结构中包含这个tty的序列号(我们正使用tty1,所以这个序号为1)。Vt_struct结构中有一个vc结构的数组vc_cons,这个数组就是各虚拟终端的私有数据。

Static int do_write(struct 

Tty_struct * tty, int 

From_user,const unsigned char 

*buf, int conut) 

{ 

struct vt_struct *vt = (struct 

vt_struct *)tty_>driver_data; 

//我们用到了driver_data变量 

………… 

currcons = vt->_num; 

//在这里的vc_nums就是1 

………… 

}
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章