存档

文章标签 ‘Linux’

程序(进程)在内存中的组织-由ld_brk_point以及brk函数谈起

2012年4月9日 没有评论 41,269 views

今天调龙芯模拟器,发现里面有个ld_brk_point,一直不知道是啥东西,后来搜了下,发现就是malloc函数申请空间的起始地址。改值可以通过brk()以及sbrk函数设置。为了说清楚这个问题,有必要先了解下Linux下程序运行时(进程)在内存中的组织。

linux Flexible Address Space Layout

linux Flexible Address Space Layout

阅读全文…

推荐几个Linux命令行下性能监控小工具

2011年11月22日 8 条评论 21,613 views

在Linux中,CPU,内存等系统状态可以通过top命令查看,或者用图形界面的工具,如gnome-system-monitor。但是,有时候,想知道更详细的信息,比如说进程树之类的,网络具体使用之类的,这些工具就无能为力了,在本文中,将介绍几种Linux下的性能监控小工具,也许可以满足这些的要求(由于这些工具使用简单,不多介绍,主要上图):

htop

这是一个比top更好的top工具,它比原始的top 多了更直觉的互动式设定和操作方式, 以及提供了彩色字体区分结果。 程序本身有用到ncurses 函式库作开发.我最喜欢看得就是它的程序树状图(F5调出),上图:

htop截图

htop 截图

阅读全文…

分类: 贝壳 标签: , , , , ,

Linux(ubuntu)下开发并添加内核模块

2011年11月15日 没有评论 11,674 views

首先,大致有以下一些地方需要用到Linux内核编程:

  • 驱动开发,linux下的大部分驱动都是以内核模块的形式执行的。
  • 使用了一些特权指令的程序,比如wrmsr这些指令,这些指令需要在ring0下执行,一般这种程序也是以内核模块的形式执行。

下面简要介绍一下,一个Hello world的内核模块开发并且添加的过程(其实网上很多教程,但是发现都是针对比较老的内核,有些已经不适用了,因此,在此处,我在罗唆一下,也当是个备忘)。

  1. 首先需要安装开发库和头文件。
    $:sudo apt-get install linux-kernel-devel
    $:sudo apt-get install linux-headers-`uname -r`
  2. 写个hello_kernel.c(我保留了我代码中的获取cpuID的代码,所以严格不算helloword了),下面代码中printk是内核中的printf,打印的信息回打到内核log中,可以通过dmesg或者cat /var/log/kern.log查看。module_init以及module_exit分别为内核进入以及退出的函数。
    #include <linux/module.h>
    //#include <linux/config.h>//这个头文件在老的内核中有,新的内核已经没有了,因此注释调
    #include <linux/init.h>
    
    void bcopy(unsigned char *src,unsigned char *des,int count)
    {
    	int i=0;
    	for (i=0;i<count;i++)
    	{
    	  printk("src[%d]=%x\n",i,src[i]);
    	  des[i]=src[count-i];
    	}
    
    } 阅读全文...

Linux下查看并设置CPU频率

2011年11月5日 4 条评论 13,399 views

在Linux下,可通过cpufreq-info,cpufreq-info,cpufreq-selector等命令来查看以及设置CPU的频率。
这些命令加载了内核的acpi_cpufreq模块,可通过以下命令查看是否加载。

lsmod | grep "acpi_cpufreq"

其中cpufreq-info的输出示例信息如下:

analyzing CPU 7:
  driver: acpi-cpufreq
  CPUs which need to switch frequency at the same time: 7
  hardware limits: 1.20 GHz - 2.13 GHz
  available frequency steps: 2.13 GHz, 2.00 GHz, 1.87 GHz, 1.73 GHz, 1.60 GHz, 1.47 GHz, 1.33 GHz, 1.20 GHz
  available cpufreq governors: ondemand, userspace, performance
  current policy: frequency should be within 1.20 GHz and 2.13 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 1.20 GHz.

上面给除了当前CPU的频率范围,频率的策略,以及整个CPU可是设置的频率。
其中governor就是CPU频率的策略,上面列出的CPU有三种策略,onemand(表示系统可以通过动态调整频率,降低功耗,具体的调整策略和内核的功耗管理算法有关),userspace(表示用户可以自己设定cpu的频率),performance(表示CPU总是在最高主频下工作)。

可通过cpufreq-set以及cpufreq-selector来设置CPU的频率以及策略。
cpufreq-set的用法如下:

Usage: cpufreq-set [options]
Options:
  -c CPU, --cpu CPU        number of CPU where cpufreq settings shall be modified
  -d FREQ, --min FREQ      new minimum CPU frequency the governor may select
  -u FREQ, --max FREQ      new maximum CPU frequency the governor may select
  -g GOV, --governor GOV   new cpufreq governor
  -f FREQ, --freq FREQ     specific frequency to be set. Requires userspace
                           governor to be available and loaded
  -h, --help           Prints out this screen

cpufreq-selector的用法如下:

Usage: cpufreq-set [options]
Options:
  -c CPU, --cpu CPU        number of CPU where cpufreq settings shall be modified
  -d FREQ, --min FREQ      new minimum CPU frequency the governor may select
  -u FREQ, --max FREQ      new maximum CPU frequency the governor may select
  -g GOV, --governor GOV   new cpufreq governor
  -f FREQ, --freq FREQ     specific frequency to be set. Requires userspace
                           governor to be available and loaded
  -h, --help           Prints out this screen
分类: 技术相关 标签: , , ,

龙芯3A笔记本原型机曝光

2011年5月13日 34 条评论 22,210 views

下面的图片是什么?Mac?No,那是龙芯3A的笔记本原型机。

今天在实验室里看到了龙芯3A的笔记本原型机,貌似这东西现在全世界据说只有两台。一台在龙梦,一台在实验室。

我顺手拍了几张照,在这里分享下剩余的几张,手机挫,拍的效果很差(本来感觉可能不能公开分享,但是既然明天要在中科院的科技活动周展出,我想分享应该也没事吧)


系统用的是国产共创linux,UI其实还不错
 
龙芯3A笔记本原型机用MPlayer本播放龙芯的高清宣传片,还挺流畅的

无觅相关文章插件,快速提升流量