linux程序与进程内存结构】的更多相关文章

1.可执行文件结构: 1)代码区:包含操作码和操作对象.常量数据(const声明).立即数,代码区是共享的, 只提供只读. 2)全局/静态数据区:包含被初始化的全局数据和初始化静态数据. 3)未初始化数据区(BBS):包含未初始化的全局数据和未初始化静态数据. 2.进程结构: 1)代码区:加载可执行程序代码段,由加载器完成. 2)全局数据区:加载可执行文件数据段,数据生存周期为整个程序运行过程. 3)未初始化数据区:加载未初始化数据,数据生存周期为整个程序运行过程. 4)栈区:由编译器自动分配,…
以nginx 为例1.toptop -b -n 1 |grep nginx|awk '{print "VIRT:"$5,"RES:"$6,"cpu:"$9"%","mem:"$10"%"}' 或者简单的top -p 进程id. 2. ps aux | grep nginxVSZ -- 虚拟地址空间大小  --> 与top 的 VIRT 对应RSS -- 实际物理内存大小  --&g…
动态查看一个进程的内存使用 1.top命令 top -d 1 -p pid [,pid ...] //设置为delay 1s,默认是delay 3s 如果想根据内存使用量进行排序,可以shift + m(Sort by memory usage) 静态查看一个进程的内存使用 1.pmap命令 pmap pid 2.ps命令 ps aux|grep process_name 3.查看/proc/process_id/文件夹下的status文件 Name: php State: R (running…
1. top命令--动态查看一个进程的内存使用top -d 1 -p pid [,pid ...]  //设置为delay 1s,默认是delay 3s  如果想根据内存使用量进行排序,可以shift + m(Sort by memory usage) 内容解释: PID:进程的ID USER:进程所有者 PR:进程的优先级别,越小越优先被执行 NInice:值 VIRT:进程占用的虚拟内存 RES:进程占用的物理内存 SHR:进程使用的共享内存 S:进程的状态.S表示休眠,R表示正在运行,Z表…
查看进程命令 ps  ps -elf|grep init|grep -v grep 查看init进程ID号:ps aux |grep init |grep -v grep; ps aux 会把系统所有的进程列出来. top 动态显示系统命令.按T 只看内存和交换分区,以及恢复.只看M tasks和CPU.显示多个CPU情况 1 htop 安装 yum -y install htop. 没有的话 先安装软件仓库:rpm -ivh http://repository.it4i.cz/mirrors/…
1.先用ps查询进程号 ps -aux|grep 进程名字 2.查看更详细的内存占比 cat /proc/3664/status 返回结果:(其中VmRSS为进程所占用的内存)…
01 课程回顾 1.指针数组 注意: 对于数组来说,在使用sizeof的时候a和&a[0]是不一样的, 虽然以%x打印出来他们都是地址 2.值传递 int a; fun(a); int *****p; fun(p); // 这个也是值传递,把p的值传过去了 所以是值传递,并没有取地址 3.栈区和字符常量区 a[i] 等价于 *(a+i) 4.局部变量的问题: 5.strcpy虽然第一个参数是指针,但是内部实现是像指针所指向的内存拷贝内容: 6.char *p1 = “hello mike”; 记…
本文内容: 1.进程的结构 2.程序转化为进程的过程 3.进程的创建 4.进程的结束 背景知识: 1.进程是计算机中处于运行的程序的实体 2.进程是线程的容器 3.程序本身只是指令,数据以及组织形式的描述,进程才是程序真正的运行实例 4.多个进程可以与同一个程序关联,而每个进程则是以同步或者异步的方式独立运行 一.Linux的进程结构 Linux进程结构由三部分组成:代码段,数据段,堆栈段 代码段:存放程序代码,如果多个进程运行同一个程序则他们使用同一个代码段 数据段:存放程序的全局变量,常量,…
在实际工作中有时需要程序打印出某个进程的内存占用情况以作参考, 下面介绍一种通过Linux下的伪文件系统/proc 计算某进程内存占用的程序实现方法. 首先, 为什么会有所谓的 伪文件 呢. Linux系统的文件类型大致可分为三类: 普通文件, 目录文件和伪文件. 伪文件不是用来存储数据的, 因此这些文件不占用磁盘空间, 只是存在于内存中. /proc 让你可以与内核内部数据进行交互, 获取有关进程的有用信息. 下面主要介绍一下 /proc 下面的四个文件: /proc/stat, /proc/…
内核版本:linux-2.6.11 Linux在加载一个可执行程序的时候做了种种复杂的工作,内存分配是其中非常重要的一环,作为一个linux程序员必然会想要知道这个过程到底是怎么样的,内核源码会告诉你这一切. 线性区 一个可执行程序,是经过编译器处理后的遵守一定规则的数据.符号表和指令序列的组合,当linux加载一个可执行程序的时候,会为其创建一个新的进程,其对应的进程描述符task_struct中会保存许多资源的描述符,其中的mm_struct就是这个进程的内存描述符,用来管理该进程拥有的所有…