搞过内核开发的人都知道,内核调试是个脑力活,也是个体力活,因为底层的内核开发和应用程序开发有着较大的差别。应用程序的开发在操作系统之上,有许多优 秀的IDE供我们选择,从而能够非常方便进行调试;而内核级的开发则不一样,操作系统的内核调试器除完成一般的调试功能外,还必须工作在内核中。在 Linux中,内核调试方法有多种,可以在内核中插入printk()函数来调试分析,可以使用/proc文件系统对内核进行分析,也可以使用kgdb进 行内核源代码级的调试。本文将介绍如何使用VirtualBox 3.0.12 + RHEL 5 + KGDB的方式调试Linux内核(在一台主机运行RHEL 5,用VirtualBox 3.0.12虚拟两个RHEL 5代替两台机器,并在两台虚拟机上配置KGDB来进行内核的调试)。
kgdb提供了一种使用gdb调试Linux内核的机制。使用kgdb调试内核需要准备两台机器,一台作为开发机(用来远程查看内核信息并调试内核),另一台作为目标机(跑有要调试的内核), 并通过串口将它们连接起来。在2.6.26以前的Linux内核中使用kgdb需要打上补丁,而在2.6.26及以后的内核里已经加入了对kgdb的支 持。当kgdb内核调试环境搭好后,目标机上运行的是打了kgdb补丁的Linux内核,而开发机上运行gdb,gdb通过串口与要调试的内核进行通信, 对目标机上的内核进行控制,从而实现远程对内核的调试。
首先从http://www.virtualbox.org下 载for RHEL5的VirtualBox,目前的最新版本是VirtualBox 3.0.12。装上VirtualBox后,就可以虚拟出两个RHEL 5虚拟机来代替两台机器了。当然我们也可以使用VirtualBox的clone功能,如果第一台虚拟机的文件名为rhel1.vdi,可使用命令VBoxManage clonevdi rhel1.vdi rhel2.vdi命令迅速克隆出另一台虚拟机。我们将一台虚拟机用作目标机,另一台用作开发机。
我 们可以利用主机的命名管道来完成两台虚拟机间的通信。一台虚拟机在主机中创建命名管道并将其串口与管道相连,另外一台虚拟机也将自己的串口连接到主机的命 名管道上,这样就实现了两个虚拟机串口的连接。两台虚拟机都使用自己的COM1端口,主机的命名管道同为/tmp/vbox,在配置时由一台虚拟机创建, 另一台则不创建。我们可使用以下的方式来测试两虚拟机的串口是否连接成功:
(1)首先启动创建管道的虚拟机,再启动另一台虚拟机,然后使用命令stty ispeed 115200 ospeed 115200 -F /dev/ttyS0将各自COM1端口的输入输出波特率都设为115200。
(2)在其中一台虚拟机v1终 ... (全文...)



  Xenoprof是HP公司针对OProfile工具开发的一个接口,它使得OProfile能够适用于基于Xen的虚拟环境,从而能够对内核、应用程序等的性能信息进行监控,在官网http://xenoprof.sourceforge.net/上有详细的介绍。之前我在《OpenSolaris, Fedora and Xen 之 Fedora 10上Xen 3.3.1的安装与配置》一文中写了关于Xen 3.3.1的安装过程,本文我将介绍如何在RHEL 5上安装Xenoprof。
  安装好Xen后,进入Dom0,如果你还未安装Xenoprof,键入opcontrol --reset命令,会有以下错误信息,而正常情况下是没有任何提示信息的。
  [root@v6 oprofile-0.9.3]# opcontrol --reset
  FATAL: Module oprofile not found.
  FATAL: Module oprofile not found.
  Kernel doesn't support oprofile
  具体安装过程如下:
  1. 从http://oprofile.sourceforge.net/上下载oprofile-0.9.3(虽然目前的最新版是0.9.5,但目前Xenoprof只支持到oprofile 0.9.3);
  2. 从Xenoprof官方网站http://xenoprof.sourceforge.net/上下载oprofile-0.9.3-xen-r2.patch
  3. tar xzvf oprofile-0.9.3.tar.gz解压oprofile,并将oprofile-0.9.3-xen.r2.patch复制进oprofile-0.9.3文件夹,然后执行patch -p1 <  oprofile-0.9.3-xen-r2.patch 打补丁;
   4. 执行./configure --with-kernel-support命令进行编译前的配置(可能提示没有liberty library,需要yum install binutils-devel,同时需要gcc-c++编译器,可通过挂载CentOS或RHEL镜像进行安装);
  5. 配置好以后,/make/make install即可完成OProfile的安装(打过补丁的OProfile);
  6. 接下来就是对Xen的重新编译了,具体编译过程在《OpenSolaris, Fedora and Xen 之 Fedora 10上Xen 3.3.1的安装与配置》 一文里作了详细介绍,在这里就不再赘述。不过在编译前,需要修改一下配置文件,进入Xen源代码目录使用命令make linux-2.6-xen-config CONFIGMODE=menuconfig,进入图形界面后需要将instrumentation support中的OProfile选中(一共两个选项,选择第一个选项以及第一个选项下的子选项即可),保存并退出,然 ... (全文...)






 进程在操作系统中是一个非常重要的概念,应用程序被加载到内存后叫进程,也就是一个程序的一次动态执行。每个进程对应一道特定的程序,程序是静态的,而进程是动态的,进程描述程序的执行过程并且可以作为共享资源的基本单位。要想理解操作系统的各种机制原理,有必要对进程概念有深入透彻的理解。 本文重点介绍了Minix、Linux2.6及Solaris10的进程模型,并对三种操作系统的进程模型进行了比较。

1 操作系统原理中的进程模型

1.1进程的概念

进程的定义很多,本文将进程描叙为一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。进程具有动态性、独立性、并发性和结构化等特征。动态性是指进程具有动态的地址空间,地址空间的大小和内容都是动态变化的。地址空间的内容包括代码(指令执行和处理器状态的改变)、 ... (全文...)



装上最华丽的Linux操作系统openSUSE 11.0了,目前我的笔记本是Windows XPOpenSolarisUbuntuopenSUSE共存的局面。

openSUSE 11.0截图

华丽的openSUSE 11.0桌面

一直想体验传说中的openSUSE 11.0,之前曾在OpenSolaris里使用VirtualBox安装过,但效果并不理想,特别是分辨率等效果不能达到最佳状态,而且在响应速度上也不能让人满意。过去曾经因为安装Ubuntu不能覆盖OpenSolarisGrub而导致整个硬盘的分区表被破坏,而电脑上已经装上了OpenSolaris,为了不丢失硬盘数据,我一直特别谨慎,没有再安装其他系统。昨天猛然发现OpenSolaris里竟然没有(全文...)



对于大多数电脑用户来说,Windows操作系统仍然是其首选。而如果要使用OpenSolarisLinux等其它优秀的操作系统,可以在Windows上使用虚拟机,也可以直接在硬盘上安装多系统。使用虚拟机最大的瓶颈就是性能,而性能正是IT领域最关心的问题。所以,对于一个IT人士,在自己的电脑上同时安装多系统是有必要的。本文主要介绍了如何在硬盘上同时安装OpenSolaris 2008.05Ubuntu 8.10Windows XP三系统,由于水平有限,说得不当之处请谅解。

(全文...)