Proc 文件系统信息
2011年03月30日
Proc 文件系统信息
关键字:proc,maps,status,sysfs,smaps
说在前面的,下面的东西是我从网上收集整理的,另外还加了些别人没有的,新的内核支持输出更多的内容的到proc中。
不得不说的是,按照最近的内核驱动架构,很多驱动和硬件相关的信息都输出到sysfs去了,proc里的东西比较凌乱,但个人感觉系统进程相关的信息还是在这里
/proc//maps
查看进程的虚拟地址空间是如何使用的。
该文件有6列,分别为:
地址:库在进程里地址范围
权限:虚拟内存的权限,r=读,w=写,x=,s=共享,p=私有;
偏移量:库在进程里地址范围
设备:映像文件的主设备号和次设备号;
节点:映像文件的节点号;
路径: 映像文件的路径
每项都与一个vm_area_struct结构成员对应,
范例:
应用程序的正文段(权限为r-xp)从0x08048000到0x08049000,大小为4096;数据段从0x08049000到0x0804a000,大小为1KB。该应用程序使用了两个库:lib和libc。Libc 的正文段从0x00391000到0x004b4000,大小为1164KB;数据段从0x004b5000到0x004b8000,大小为12KB.
Ld 的正文段从00378000到0038d000,大小为84KB;数据段从0x0038e000到0x0038f000,大小为4KB。该应用程序所使用的库所占的虚拟空间的大小从0x4b8000到0x378000,大小为1280KB,其实真正大小为VmLib(1251KB);因为是按页分配,每页大小为4KB。
[root@localhost ~]# cat /proc/7114/maps
08047000-080dc000 r-xp 00000000 03:06 884901 /bin/bash
080dc000-080e3000 rwxp 00094000 03:06 884901 /bin/bash
080e3000-08129000 rwxp 080e3000 00:00 0 [heap]
4d575000-4d58a000 r-xp 00000000 03:06 736549 /lib/ld-2.3.4.so
4d58a000-4d58b000 r-xp 00015000 03:06 736549 /lib/ld-2.3.4.so
4d58b000-4d58c000 rwxp 00016000 03:06 736549 /lib/ld-2.3.4.so
4d58e000-4d6b1000 r-xp 00000000 03:06 736550 /lib/tls/libc-2.3.4.so
4d6b1000-4d6b2000 r-xp 00123000 03:06 736550 /lib/tls/libc-2.3.4.so
4d6b2000-4d6b5000 rwxp 00124000 03:06 736550 /lib/tls/libc-2.3.4.so
4d6b5000-4d6b7000 rwxp 4d6b5000 00:00 0
4d6de000-4d6e0000 r-xp 00000000 03:06 736552 /lib/libdl-2.3.4.so
4d6e0000-4d6e2000 rwxp 00001000 03:06 736552 /lib/libdl-2.3.4.so
4d807000-4d80a000 r-xp 00000000 03:06 736567 /lib/libtermcap.so.2.0.8
4d80a000-4d80b000 rwxp 00002000 03:06 736567 /lib/libtermcap.so.2.0.8
b7bf2000-b7c1e000 r-xp 00000000 03:06 881337 /usr/lib/gconv/GB18030.so
b7c1e000-b7c20000 rwxp 0002b000 03:06 881337 /usr/lib/gconv/GB18030.so
b7c20000-b7c26000 r-xs 00000000 03:06 881502 /usr/lib/gconv/gconv-modules.cache
b7c26000-b7d2f000 r-xp 02197000 03:06 852489 /usr/lib/locale/locale-archive
b7d2f000-b7f2f000 r-xp 00000000 03:06 852489 /usr/lib/locale/locale-archive
b7f2f000-b7f38000 r-xp 00000000 03:06 734450 /lib/libnss_files-2.3.4.so
b7f38000-b7f3a000 rwxp 00008000 03:06 734450 /lib/libnss_files-2.3.4.so
b7f3a000-b7f3c000 rwxp b7f3a000 00:00 0
b7f51000-b7f52000 rwxp b7f51000 00:00 0
bfc3d000-bfc52000 rw-p bfc3d000 00:00 0 [stack]
ffffe000-fffff000 ---p 00000000 00:00 0 [vdso]
[root@localhost ~]#
参数 解释
address: 0085d000-00872000 虚拟内存区域的起始和终止地址文件所占的地址空间
perms:rw-p 权限:r=read, w=write, x=execute, s=shared, p=private(copy on write)
offset: 00000000 虚拟内存区域在被映射文件中的偏移量
dev: 03:08 文件的主设备号和次设备号
inode: 设备的节点号,0表示没有节点与内存相对应
name: /lib/ld-2.3.4.so 被映射文件的文件名
各共享库的代码段,存放着二进制可执行的机器指令,是由kernel把该库ELF文件的代码段map到虚存空间;
各共享库的数据段,存放着程序执行所需的全局变量,是由kernel把ELF文件的数据段map到虚存空间;
用户代码段,存放着二进制形式的可执行的机器指令,是由kernel把ELF文件的代码段map到虚存空间;
用户数据段之上是代码段,存放着程序执行所需的全局变量,是由kernel把ELF文件的数据段map到虚存空间;
用户数据段之下是堆(heap),当且仅当malloc调用时存在,是由kernel把匿名内存map到虚存空间,堆则在程序中没有调用malloc的情况下不存在;
用户数据段之下是栈(stack),作为进程的临时数据区,是由kernel把匿名内存map到虚存空间,栈空间的增长方向是从高地址到低地址。
[root@localhost ~]# ldd /bin/bash
linux-gate.so.1 => (0xffffe000)
libtermcap.so.2 => /lib/libtermcap.so.2 (0x4d807000)
libdl.so.2 => /lib/libdl.so.2 (0x4d6de000)
libc.so.6 => /lib/tls/libc.so.6 (0x4d58e000)
/lib/ld-linux.so.2 (0x4d575000)
[root@localhost ~]#
这个所谓的"linux-gate.so.1"的内容就是内核映射的代码,系统中其实并不存在这样一个链接库文件,它的名字是由ldd自己起的,了0xffffe400这里的一段代码,这里就是内核为我们映射的系统调用入口代码。Mapped是该应用程序的虚拟空间的大小,这里的值比用top 或ps都大了4KB,就是最后0xffffe400-0xffffffff的代码;shared 给出共享的虚拟空间部分。
2 /proc//stat
包含了所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。
[root@localhost ~]# cat /proc/6873/stat
6873 (a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 0 41958 31 0 0 25 0 3 0 5882654 1409024 56 4294967295 134512640 134513720 3215579040 0 2097798 0 0 0 0 0 0 0 17 0 0 0 [root@localhost ~]#
每个参数意思为:
参数 解释
pid=6873 进程(包括轻量级进程,即线程)号
comm=a.out 应用程序或命令的名字
task_state=R 任务的状态,R:runnign, S:sleeping (TASK_INTERRUPTIBLE), D:disk sleep (TASK_UNINTERRUPTIBLE), T: stopped, T:tracing stop,Z:zombie, X:dead
ppid=6723 父进程ID
pgid=6873 线程组号
sid=6723 c该任务所在的会话组ID
tty_nr=34819(pts/3) 该任务的tty终端的设备号,INT(34817/256)=主设备号,(34817-主设备号)=次设备号
tty_pgrp=6873 终端的进程组号,当前运行在该任务所在终端的前台任务(包括shell 应用程序)的PID。
task->flags=8388608 进程标志位,查看该任务的特性
min_flt=77 该任务不需要从硬盘拷数据而发生的缺页(次缺页)的次数
cmin_flt=0 累计的该任务的所有的waited-for进程曾经发生的次缺页的次数目
maj_flt=0 该任务需要从硬盘拷数据而发生的缺页(主缺页)的次数
cmaj_flt=0 累计的该任务的所有的waited-for进程曾经发生的主缺页的次数目
utime=1587 该任务在用户态运行的时间,单位为jiffies
stime=1 该任务在核心态运行的时间,单位为jiffies
cutime=0 累计的该任务的所有的waited-for进程曾经在用户态运行的时间,单位为jiffies
cstime=0 累计的该任务的所有的waited-for进程曾经在核心态运行的时间,单位为jiffies
priority=25 任务的动态优先级
nice=0 任务的静态优先级
num_threads=3 该任务所在的线程组里线程的个数
it_real_value=0 由于计时间隔导致的下一个 SIGALRM 发送进程的时延,以 jiffy 为单位.
start_time=5882654 该任务启动的时间,单位为jiffies
vsize=1409024(page) 该任务的虚拟地址空间大小
rss=56(page) 该任务当前驻留物理地址空间的大小
Number of pages the process has in real memory,minu 3 for administrative purpose.
这些页可能用于代码,数据和栈。
rlim=4294967295(bytes) 该任务能驻留物理地址空间的最大值
start_code=134512640 该任务在虚拟地址空间的代码段的起始地址
end_code=134513720 该任务在虚拟地址空间的代码段的结束地址
start_stack=3215579040 该任务在虚拟地址空间的栈的结束地址
kstkesp=0 esp(32 位堆栈指针) 的当前值, 与在进程的内核堆栈页得到的一致.
kstkeip=2097798 指向将要执行的指令的指针, EIP(32 位指令指针)的当前值.
pendingsig=0 待处理信号的位图,记录发送给进程的普通信号
block_sig=0 阻塞信号的位图
sigign=0 忽略的信号的位图
sigcatch=082985 被俘获的信号的位图
wchan=0 如果该进程是睡眠状态,该值给出调度的调用点
nswap 被swapped的页数,当前没用
cnswap 所有子进程被swapped的页数的和,当前没用
exit_signal=17 该进程结束时,向父进程所发送的信号
task_cpu(task)=0 运行在哪个CPU上
task_rt_priority=0 实时进程的相对优先级别
task_policy=0 进程的调度策略,0=非实时进程,1=FIFO实时进程;2=RR实时进程
3 /proc//status
包含了所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。
[root@localhost ~]# cat /proc/self/status
Name: cat
State: R (running)
SleepAVG: 88%
Tgid: 5783
Pid: 5783
PPid: 5742
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256
Groups: 0 1 2 3 4 6 10
VmSize: 6588 kB
VmLck: 0 kB
VmRSS: 400 kB
VmData: 144 kB
VmStk: 2040 kB
VmExe: 14 kB
VmLib: 1250 kB
StaBrk: 0804e000 kB
Brk: 088df000 kB
StaStk: bfe03270 kB
ExecLim: 0804c000
Threads: 1
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff
输出解释
参数 解释
Name 应用程序或命令的名字
State 任务的状态,运行/睡眠/僵死/
SleepAVG 任务的平均等待时间(以nanosecond为单位),交互式任务因为休眠次数多、时间长,它们的 sleep_avg 也会相应地更大一些,所以计算出来的优先级也会相应高一些。
Tgid 线程组号
Pid 任务ID
Ppid 父进程ID
TracerPid 接收跟踪该进程信息的进程的ID号
Uid Uid euid suid fsuid
Gid Gid egid sgid fsgid
FDSize 文件描述符的最大个数,file->fds
Groups
VmSize(KB) 任务虚拟地址空间的大小 (total_vm-reserved_vm),其中total_vm为进程的地址空间的大小,reserved_vm:进程在预留或特殊的内存间的物理页
VmLck(KB) 任务已经锁住的物理内存的大小。锁住的物理内存不能交换到硬盘 (locked_vm)
VmRSS(KB) 应用程序正在使用的物理内存的大小,就是用ps命令的参数rss的值 (rss)
VmData(KB) 程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据; (total_vm-shared_vm-stack_vm)
VmStk(KB) 任务在用户态的栈的大小 (stack_vm)
VmExe(KB) 程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库 (end_code-start_code)
VmLib(KB) 被映像到任务的虚拟内存空间的库的大小 (exec_lib)
VmPTE 该进程的所有页表的大小,单位:kb
Threads 共享使用该信号描述符的任务的个数,在POSIX多线程序应用程序中,线程组中的所有线程使用同一个信号描述符。
SigQ 待处理信号的个数
SigPnd 屏蔽位,存储了该线程的待处理信号
ShdPnd 屏蔽位,存储了该线程组的待处理信号
SigBlk 存放被阻塞的信号
SigIgn 存放被忽略的信号
SigCgt 存放被俘获到的信号
CapInh Inheritable,能被当前进程执行的程序的继承的能力
CapPrm Permitted,进程能够使用的能力,可以包含CapEff中没有的能力,这些能力是被进程自己临时放弃的,CapEff是CapPrm的一个子集,进程放弃没有必要的能力有利于提高安全性
CapEff Effective,进程的有效能力
范例 1
可以看出该应用程序的正文段(1KB)很小,说明代码很少,是依靠库(1251KB)来执行。栈(138KB)适中,说明没有太多许多嵌套函数或特别多的临时变量。VmLck为0说明进程没有锁住任何页。VmRSS表示当前进程使用的物理内存为2956KB。当进程开始使用已经申请的但还没有用的内存时,VmRSS的值开始增大,但是VmSize保持不变。
[root@localhost 1]# cat /proc/4668/status
Name: gam_server
State: S (sleeping)
SleepAVG: 88%
Tgid: 31999
Pid: 31999
PPid: 1
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256
Groups: 0 1 2 3 4 6 10
VmSize: 2136 kB
VmLck: 0 kB
VmRSS: 920 kB
VmData: 148 kB
VmStk: 88 kB
VmExe: 44 kB
VmLib: 1820 kB
VmPTE: 20 kB
Threads: 1
SigQ: 1/2047
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001006
SigCgt: 0000000210000800
CapInh: 0000000000000000
CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff
[root@localhost 31999]#
4 /proc//statm
包含了所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。
[root@localhost ~]# cat /proc/self/statm
654 57 44 0 0 334 0
输出解释
CPU 以及CPU0。。。的每行的每个参数意思(以第一行为例)为:
参数 解释 /proc//status
Size (pages) 任务虚拟地址空间的大小 VmSize/4
Resident(pages) 应用程序正在使用的物理内存的大小 VmRSS/4
Shared(pages) 共享页数 0
Trs(pages) 程序所拥有的可执行虚拟内存的大小 VmExe/4
Lrs(pages) 被映像到任务的虚拟内存空间的库的大小 VmLib/4
Drs(pages) 程序数据段和用户态的栈的大小 (VmData+ VmStk )4
dt(pages) 0
5.2.6.18之后似乎开始支持更多的内容,如smaps,大致你可以认为这是一个maps的详细化版本
例子:
# cat /proc/1293/smaps
00111000-00112000 rwxp 00111000 00:00 0
Size: 4 kB
Rss: 4 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 4 kB
0050e000-0050f000 rwxp 0050e000 00:00 0
Size: 4 kB
Rss: 0 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
0051a000-0051b000 r-xp 0051a000 00:00 0 [vdso]
Size: 4 kB
Rss: 4 kB
Shared_Clean: 4 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
0051b000-00534000 r-xp 00000000 fd:00 194898 /lib/ld-2.4.so
Size: 100 kB
Rss: 0 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
00534000-00535000 r-xp 00018000 fd:00 194898 /lib/ld-2.4.so
Size: 4 kB
Rss: 0 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
00535000-00536000 rwxp 00019000 fd:00 194898 /lib/ld-2.4.so
Size: 4 kB
Rss: 0 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
00538000-00665000 r-xp 00000000 fd:00 194905 /lib/libc-2.4.so
Size: 1204 kB
Rss: 212 kB
Shared_Clean: 204 kB
Shared_Dirty: 0 kB
Private_Clean: 8 kB
Private_Dirty: 0 kB
00665000-00667000 r-xp 0012d000 fd:00 194905 /lib/libc-2.4.so
Size: 8 kB
Rss: 8 kB
Shared_Clean: 4 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 4 kB
00667000-00668000 rwxp 0012f000 fd:00 194905 /lib/libc-2.4.so
Size: 4 kB
Rss: 4 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 4 kB
00668000-0066b000 rwxp 00668000 00:00 0
Size: 12 kB
Rss: 8 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 8 kB
08047000-08062000 r-xp 00000000 fd:00 292327 /usr/sbin/vmware-guestd
Size: 108 kB
Rss: 64 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 64 kB
Private_Dirty: 0 kB
08062000-08063000 rwxp 0001a000 fd:00 292327 /usr/sbin/vmware-guestd
Size: 4 kB
Rss: 4 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 4 kB
08063000-08068000 rwxp 08063000 00:00 0
Size: 20 kB
Rss: 12 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 12 kB
08385000-08886000 rwxp 08385000 00:00 0 [heap]
Size: 5124 kB
Rss: 5080 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 5080 kB
bfeb2000-bfec7000 rwxp bfeb2000 00:00 0 [stack]
Size: 84 kB
Rss: 12 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 12 kB
size:该模块所占虚存总数,进程使用的地址空间, 如果进程映射了100M的内存, 进程的地址空间将报告为100M内存. 事实上, 这个大小不是一个程序实际使用的内存数.
Rss:"Resident Set Size",驻留内存数,即物理内存的使用量,举一个例子: 如果你有一个程序使用了100K内存, 操作系统交换出40K内存, 那么RSS为60K. RSS还包括了与其它进程共享的内存区域. 这些区域通常用于libc库等.
SHARE: RSS中与其它进程共享的内存部分大小.dirty,clean 是指是否有过修改(从fs/proc的代码来看是检查每个物理页的标志位,检查是否修改过)
VMSIZE: 一个进程占用的总的地址空间大小. 它包括了没有映射到内存中的页面.
Private RSS: 映射到内存中的页面, 这些页面仅由进程单独使用. 这也是我们最关心地方: 进程实际占用的内存数.从
上面我们看到从smaps看不太方便, 推荐使用Ben Maurer写的perl脚本:
############################################
#!/usr/bin/perl
# Copyright Ben Maurer
# you can distribute this under the MIT/X11 License
use Linux::Smaps;
my $pid=shift @ARGV;
unless ($pid) {
print "./smem.pl \n";
exit 1;
}
my $map=Linux::Smaps->new($pid);
my @VMAs = $map->vmas;
format STDOUT =
VMSIZE: @######## kb
$map->size
RSS: @######## kb total
$map->rss
@######## kb shared
$map->shared_clean + $map->shared_dirty
@######## kb private clean
$map->private_clean
@######## kb private dirty
$map->private_dirty
.
write;
printPrivateMappings ();
printSharedMappings ();
sub sharedMappings () {
return grep { ($_->shared_clean + $_->shared_dirty) > 0 } @VMAs;
}
sub privateMappings () {
return grep { ($_->private_clean + $_->private_dirty) > 0 } @VMAs;
}
sub printPrivateMappings ()
{
$TYPE = "PRIVATE MAPPINGS";
$^ = 'SECTION_HEADER';
$~ = 'SECTION_ITEM';
$- = 0;
$= = 100000000;
foreach $vma (sort {-($a->private_dirty $b->private_dirty)}
privateMappings ()) {
$size = $vma->size;
$dirty = $vma->private_dirty;
$clean = $vma->private_clean;
$file = $vma->file_name;
write;
}
}
sub printSharedMappings ()
{
$TYPE = "SHARED MAPPINGS";
$^ = 'SECTION_HEADER';
$~ = 'SECTION_ITEM';
$- = 0;
$= = 100000000;
foreach $vma (sort {-(($a->shared_clean + $a->shared_dirty)
($b->shared_clean + $b->shared_dirty))}
sharedMappings ()) {
$size = $vma->size;
$dirty = $vma->shared_dirty;
$clean = $vma->shared_clean;
$file = $vma->file_name;
write;
}
}
format SECTION_HEADER =
@>>>>>>>>> @>>>>>>>>>> @>>>>>>>>> @内存数.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/human3000/archive/2008/01/20/ 2054709.aspx
发表评论
-
uboot讲解
2012-01-20 08:21 699uboot讲解 2010年09月15日 实验:p167 ... -
C语言深度剖析总结(一)
2012-01-20 08:21 648C语言深度剖析总结(一) ... -
第二章 Android内核和驱动程序(转)
2012-01-20 08:21 751第二章 Android内核和驱 ... -
java线程安全总结
2012-01-20 08:19 429java线程安全总结 2010年11月11日 转载自:h ... -
zz:OpenGL实用开源代码列表
2012-01-19 13:34 690zz:OpenGL实用开源代码列 ... -
2011-7-27
2012-01-19 13:34 6202011-7-27 2011年07月27日 CS1.6完 ... -
【装机至尊】《中关村GHOSTXPSP3纯净装机自选DVD特别版V201011A》(海量驱动)
2012-01-19 13:34 557【装机至尊】《中关村G ... -
工作站电脑配件详解(仅以45纳米双路四核至强及NV Quadro FX图形卡为例,还有价格):
2012-01-19 13:34 817工作站电脑配件详解(仅以45纳米双路四核至强及NV Quadr ... -
苹果4代电池不耐用iphone论坛!入手IPHONE必看!
2012-01-17 03:23 808苹果4代电池不耐用iphone ... -
笔记本电脑死机 笔记本老是死机 蓝屏死机
2012-01-17 03:23 549笔记本电脑死机 笔记本 ... -
9 种可重复使用的并行数据结构和算法
2012-01-17 03:23 4699 种可重复使用的并行数据结构和算法 2011年10月16日 ... -
as3面试题
2012-01-17 03:23 610as3面试题 2011年09月13日 ... -
2011-11-1
2012-01-17 03:23 4332011-11-1 2011年11月01日 第一篇:一 ... -
我与三抗情
2012-01-16 01:57 425我与三抗情 2009年08月08日 07 ... -
坏蛋是怎样炼成的5
2012-01-16 01:57 1009坏蛋是怎样炼成的5 2009 ... -
java读取文件输出流出现的问题
2012-01-11 01:57 591java读取文件输出流出现的问题 2011年08月01日 ... -
GT-Grid 1.0 基础教程(十)
2012-01-11 01:56 479GT-Grid 1.0 基础教程(十) 2011年08月01 ... -
autocomplete自动匹配
2012-01-11 01:56 574autocomplete自动匹配 2011年08月01日 ... -
Oracle Express 修改字符集,升级APEX
2012-01-11 01:56 639Oracle Express 修改字符集,升级APEX 20 ... -
java多线程及线程池小结-atomti-iteye技术网站
2012-01-11 01:56 510java多线程及线程池小结 ...
相关推荐
proc 文件系统 proc 文件系统 proc 文件系统 proc 文件系统 proc 文件系统
使用 proc 文件系统来访问 Linux 内核的内容使用 proc 文件系统来访问 Linux 内核的内容使用 proc 文件系统来访问 Linux 内核的内容使用 proc 文件系统来访问 Linux 内核的内容使用 proc 文件系统来访问 Linux 内核...
linux proc文件系统简介 linux proc文件系统简介
linux Proc 文件系统 内核对Proc 文件系统的函数
主要内容是:详细讲解linux的proc文件系统
通过读取/proc文件,获得系统信息 监控系统状态,显示系统中若干部件的使用情况。 用GTK库的图形界面显示系统监控状态。
linux下读取/proc获得系统信息 监控系统状态,显示系统中若干部件的使用情况。 用GTK库实现图形界面显示系统监控状态
linux proc文件系统详解 资源收集
这是在Linux操作系统的Proc虚拟文件系统下建立文件并管理文件的内容,是我们的一个课程设计。我们建立了三个文件用于饭店系统管理。一个是菜单,一个是会员还有一个根目录。本程序适用于初学者学习proc文件系统。
在linux下,如何使用proc文件系统与内核态进行通信,介绍proc程序的一般写法。
调用了linux内核提供的操作proc文件系统接口的函数,一个小例子。
实验八-proc文件系统的实现,一、问题回答 1.如果要求你在psinfo之外再实现另一个结点,具体内容自选,那么你会实现一个给出什么信息的结点?为什么? 答:我会给出CPU的当前信息。因为CPU的信息也是一个重要的...
Linux操作系统内核实验--proc文件系统实验: 问题A: 提取 1、cpu类型 2、内核版本 问题B: 1、启动以来经历的时间,以dd:hh:mm:ss报告 问题C: 1、cpu执行用户态、系统态、空闲态所用时间 2、多少次磁盘请求 3、多少...
哈工大软件学院操作系统实验7——Proc文件系统实现 上传的文件夹中包含了提交的代码和实验报告哦
关于proc文件系统的实现。这个是07级哈尔滨工业大学操作系统实验的辛勤劳动,下面的压缩包中包含源代码,及实验报告,最好自己搭建平台,本人在电脑中又装了 linux,希望给感兴趣的人看看,呵呵,如果是工大的学弟...
实验要求: 掌握虚拟文件系统的实现原理 实践文件、目录、索引节点等概念 操作系统的一个实验题目
最初开发 /proc 文件系统是为了提供有关系统中进程的信息。但是由于这个文件系统非常有用,因此内核中的很多元素也开始使用它来报告信息,或启用动态运行时配置。 /proc 文件系统包含了一些目录(用作组织信息的...
Linux下Proc文件系统的编程剖析.pdf
proc文件系统讲解,非常详细。 1 收集系统信息 1.0 proc文件系统概览 1.1 进程相关信息子目录 1.2 内核数据 1.3 IDE接口信息 /proc/ide 1.4 网络统计信息 /proc/net 1.5 SCSI接口信息 /proc/scsi 1.6 并行端口信息 /...