自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

编程的本质是数学问题

学源码是最快的学习方法

  • 博客(19)
  • 收藏
  • 关注

原创 Linux环境Nginx安装与调试以及PHP安装

linux版本:64位CentOS 6.8Nginx版本:nginx1.17.7php版本:php5.6.40说明:本博不定时更新为新版本1.编译安装Nginx官网:http://wiki.nginx.org/Install下载:http://nginx.org/en/download.html安装GCC安装nginx需要gcc,如果因为需要安装grpc...

2013-01-26 17:22:43 16171

原创 Linux查看进程内存状况

查看全部进程通过top或ps -ef | grep '进程名' 得到进程的PID。该命令可以提供进程状态、文件句柄数、内存使用情况等信息。#pa aux先查看进程nginx的工作进程是5757 pmap命令可以显示一个或多个进程所使用的内存数量。你可以使用这个工具来了解服务器上的某个进程分配了多少内存,输出进程内存的状况,可以用来分析线程堆栈。#pmap 进

2013-01-26 15:33:46 6429

原创 Linux查看多核CPU利用率

1.top使用权限:所有使用者使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]说明:即时显示process的动态d :改变显示的更新速度,或是在交谈式指令列( interactive command)按sq :没有任何延迟的显示速度,如果使用者是有superuser的权限,则top将会以最高的优先序执行c :切换显示模式,

2013-01-26 14:53:29 40471

原创 为什么栈和堆的生长方向不一样

栈的生长方向8051的栈是向高地址增长,INTEL的8031、8032、8048、8051系列使用向高地址增长的堆栈;但同样是INTEL,在x86系列中全部使用向低地址增长的堆栈。其他公司的CPU中除ARM的结构提供向高地址增长的堆栈选项外,多数都是使用向低地址增长的堆栈。 历史原因在没有MMU的时代,为了最大的利用内存空间,堆和栈被设计为从两端相向生长。那么哪一个向上,哪一个向下

2013-01-22 22:39:51 4872 1

原创 Linux环境程序栈溢出原理

当在缓冲区中输入过多的数据时,缓冲区溢出就会发生,C语言提供了多种方法,可以使在缓冲区中输入的数据比预期的多。局部变量可以被分配到栈上。这就意味着在栈的某个地方有一个固定大小的缓冲区。而栈是向下增长的,而且一些重要的信息被存储在栈中,那么当向栈分配的缓冲区中存储的数据比它所能容纳的数据多时,将会发生溢出,并将过剩的数据溢出到堆栈上的相邻空间里。  代码zhan.c#in

2013-01-20 21:06:46 1376

原创 汇编包含C代码

反汇编的时候带上C代码便于观察 比较三元表达式和if else的差异a1.c#include int main(void) { int a=1;int b=2;int c=0;a = (b>c)?1:0;return 0;}a2.c#include int main(void) { int a=1;

2013-01-15 18:42:13 778

原创 linux平台的链接与加载

原文是上下两篇链接与加载(上) — 静态链接链接与加载(下) — 动态链接为观看方便,现在合并起来。 一.静态链接示例程序我们先看一个简单的示例程序,代码如下:/*main.c*/int u = 333;int sum(int, int);int main(int argc, char* argv[]){ sum(argc, 1);

2013-01-14 22:44:04 1244

原创 Linux环境下的堆栈--调试C程序

完整的调试过程,跟踪堆栈变化,32位下。注意64位和此不同。 a.c代码:#include int main() { AFunc(5,6); return 0;} int BFunc(int i,int j){ int m = 1; int n = 2; m = i; n = j; return m;

2013-01-13 15:07:36 2465

原创 Win32 环境下的堆栈

原文已经找不到,作者应该是:http://blog.csdn.net/slimak   但是没有找到此文,其中丢了2幅图简介在Win32环境下利用调试器调试应用程序的时候经常要和堆栈(Stack)打交道,尤其是在需要手工遍历堆栈(Manually Walking Stack)的时候我们需要对堆栈的工作过程有一个比较清晰的了解.接下来的这些文字将通过一个例子程序详细的讲解堆栈的工作过程.

2013-01-12 11:19:26 2395

原创 哈希函数原理及实现

《Self-Service Linux》http://book.douban.com/subject/2666819/ 机械工业出版社:计算机科学丛书电子工业出版社:国外计算机科学教材系列清华大学出版社:世界著名计算机教材精选国外经典教材·计算机科学与技术 国外计算机科学经典教材高等教育出版社:国外优秀信息科学与技术系列教学用书  中国电力出版社:国外经典计算机

2013-01-11 10:54:47 1921

转载 内存地址转换与分段

原文标题:Memory Translation and Segmentation原文地址:http://duartes.org/gustavo/blog/翻译地址:http://blog.csdn.net/drshenlei/article/details/4261909本文是Intel兼容计算机(x86)的内存与保护系列文章的第一篇,延续了启动引导系列文章的主题,进一步分析操作系

2013-01-08 16:35:56 1014

转载 Linux内存寻址

一.内存地址分类以及MMU介绍对于程序员来说,可以简单的把内存地址理解为一种访问存储单元的内容的一种方式。而对于80x86系列微处理器来说,我们需要区分三种地址:(1)逻辑地址这种地址通常使用在机器语言里用于指定操作数或机器指令的地址。该类地址在著名的80x86分段体系架构中得到了很好体现,因此DOS程序员和windows程序员都不得不把他们的程序分成一段一段的(如代码段、数据段、堆栈

2013-01-08 16:27:39 585

原创 C语言数据类型所占空间大小

C语言数据类型所占空间大小 /** datasize.c -- print the size of common data items* This runs with any Linux kernel (not any Unix, because of )** Copyright (C) 2001 Alessandro Rubini and Jonathan Corbet

2013-01-07 22:56:41 2101

原创 .data和.text段合并

a.c#include extern int share;int main(void) { int a=100;swap(&a,&share);} b.cint share=1;void swap(int *a,int *b){*a^=*b^=*a^=*b;}编译#gcc -c a.c b.c 链接#ld

2013-01-05 22:55:39 954

原创 objdump与readelf

objdump和readelf都可以用来查看二进制文件的一些内部信息. 区别在于objdump借助BFD而更加通用一些, 可以应付不同文件格式, readelf则并不借助BFD, 而是直接读取ELF格式文件的信息, 按readelf手册页上所说, 得到的信息也略细致一些. 几个功能对比. 1. 反汇编代码查看源代码被翻译成的汇编代码, 大概有3种方法, 1) 通过编译器

2013-01-04 22:36:16 1469

原创 readelf和ldd分析elf文件

1. elf 文件格式linux系统中,gcc编译器编译出的object文件、可执行文件都属于elf文件。elf文件由三个部分组成:elf header、program headers|section headers、sections|program segments。如果是executable文件,则section部分是不需要的;如果是loadable文件,则program se

2013-01-04 21:52:39 6628

原创 objdump查看目标文件构成

objdumpobjdump是用查看目标文件或者可执行的目标文件的构成的GCC工具反汇编#objdump -d cpuid2对于其中的反汇编代码左边是机器指令的字节,右边是反汇编结果。显然,所有的符号都被替换成地址了, 注意没有加$的数表示内存地址,而不表示立即数。objdump -x obj 以某种分类信息的形式把目标文件的数据组织(被分为几大

2013-01-04 21:43:47 3074

翻译 程序在内存中运行的奥秘

简介当丰富多彩的应用程序在计算机上运行,为你每天的工作和生活带来便利时,你是否知道它们是如何在计算机中工作呢?本文用形象的图表与生动的解释,揭示了程序在计算机中运行的奥秘。内存管理是操作系统的核心功能,无论对于开发者还是系统管理员内存管理的重要性都是不言而喻的。我会在接下来的几篇文章通过计算机的实际运行过程谈谈内存管理,当然在必要的时候我也会从底层原理去阐释这个问题。我们提到的概念

2013-01-03 12:54:21 807

原创 关于text段、data段和bss段

根据APUE,程序分为下面的段:.text, data (initialized), bss, stack, heap。data/bss/text:text段在内存中被映射为只读,但.data和.bss是可写的。bss是英文Block Started by Symbol的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,在程序载入时由内核清0。BSS段属于静态内存分配。它的

2013-01-01 10:05:37 12791

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除