
linux
huangyimo
这个作者很懒,什么都没留下…
展开
-
Linux学习(CentOS-7)---磁盘分区(概念、分区方法、分区方案)
1磁盘分区相关的概念1.1什么是磁盘 磁盘就是计算机的外部存储器设备,即将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失。简单地讲,就是一种计算机信息载体,也可以反复地被改写。磁盘有软盘和硬盘之分: 1.1.1软盘(Floppy Disk) 软盘是个人计算机(PC)中最早使用的可移介质。软盘的读写是通过软盘驱动器完成的。软盘驱动器设计能接收可转载 2017-12-18 19:05:51 · 4158 阅读 · 0 评论 -
浅析Linux计算机工作机制
简介: 本文将对 Linux™ 系统计算机的工作机制进行简单概述。文中将为您提供单任务系统如何工作的细节,然后将进一步展示汇编指令在CPU的运行过程,以及由单任务向多任务处理的扩展。♦ gcc用法参考(*表示文件名)– gcc –E –o *.cpp *.c 生成预处理文件– gcc –x cpp-output –S –o *.s *.cpp• gcc –S –o *.s *.c 编译成...转载 2018-04-25 15:31:37 · 310 阅读 · 0 评论 -
浅析Linux计算机进程地址空间与内核装载ELF
简介: 本文基于Linux™系统对进程创建与加载进行分析,文中实现了Linux库函数fork、exec,剖析内核态执行过程,并进一步展示进程创建过程中进程控制块字段变化信息及ELF文件加载过程。 一、初识Linux进程 ...转载 2018-04-25 15:59:56 · 311 阅读 · 0 评论 -
浅析Linux操作系统工作的基础
简介: 本文根据 Linux™ 系统工作基础的分析,对存储程序计算机、堆栈(函数调用堆栈)机制和中断机制进行概述。文中将为您提供操作系统(内核)如何工作的细节,进一步从宏观概述结合关键点进行微观(CS:EIP、EBP/ESP等的变化)分析。 一、存储程序计算机 ...转载 2018-04-25 16:04:04 · 234 阅读 · 0 评论 -
Linux用户态进程的内存管理
相信大家都知道对用户态的内存消耗对象是进程,应用开发者面对的所有代码操作最后的落脚点都是进程,这也是说为什么内存和进程两个知识点的重要性,理解了内存和进程两大法宝,对所有软件开发的理解都会有了全局观(关于进程的知识以后再整理和大家分享)。下面闲话少说,开始本篇的内容——进程的内存消耗和泄漏进程的虚拟地址空间VMA(Virtual Memory Area)在linux操作系统中,每个进程都通过一个t...转载 2018-04-25 16:13:56 · 1227 阅读 · 0 评论 -
物理地址和虚拟地址的分布
CPU拿到内存后就可以向其它人(kernel的其它模块、内核线程、用户空间进程、等等)提供服务,主要包括:以虚拟地址(VA)的形式,为应用程序提供远大于物理内存的虚拟地址空间(Virtual Address Space)每个进程都有独立的虚拟地址空间,不会相互影响,进而可提供非常好的内存保护(memory protection)提供内存映射(Memory Mapping)机制,以便把物理内存、I/...转载 2018-04-25 16:15:51 · 2195 阅读 · 0 评论 -
CPU是如何访问内存的?
内存管理可以说是一个比较难学的模块,之所以比较难学。一是内存管理涉及到硬件的实现原理和软件的复杂算法,二是网上关于内存管理的解释有太多错误的解释。希望可以做个内存管理的系列,从硬件实现到底层内存分配算法,再从内核分配算法到应用程序内存划分,一直到内存和硬盘如何交互等,彻底理解内存管理的整个脉络框架。本节主要讲解硬件原理和分页管理。CPU通过MMU访问内存我们先来看一张图:从图中可以清晰地看出,CP...转载 2018-04-25 16:16:20 · 12936 阅读 · 4 评论 -
Linux内核内存管理算法Buddy和Slab
有了前两节的学习相信读者已经知道CPU所有的操作都是建立在虚拟地址上处理(这里的虚拟地址分为内核态虚拟地址和用户态虚拟地址),CPU看到的内存管理都是对page的管理,接下来我们看一下用来管理page的经典算法--Buddy。Buddy分配算法假设这是一段连续的页框,阴影部分表示已经被使用的页框,现在需要申请一个连续的5个页框。这个时候,在这段内存上不能找到连续的5个空闲的页框,就会去另一段内存上...转载 2018-04-25 16:17:17 · 2297 阅读 · 1 评论 -
linux 操作系统中buffer 和 cache 的作用
Buffer 和 cache (它们都是占用内存)。Buffer: 系统分配但未被使用的buffer 数量。 Buffer 缓冲区: 是块设备的读写缓冲区,buffer 是I/O 缓存,用于内存和硬盘(或其他 I/O设备)之间的数据交换的速度而设计的。 分析:1、通常在写一个非常大的文件,文件会被分成一个个的小 block块-->一直往内存上写-->然后再写入磁盘,, 这个文件非...转载 2018-05-07 16:22:27 · 1111 阅读 · 0 评论 -
Linux SWAP 深度解读
swap、swappiness及kswapd原理,swap分区优先级的妙用。真可谓一文在手,SWAP从此不再忧愁。敬请笑纳。概述本文讨论的 swap基于Linux4.4内核代码 。Linux内存管理是一套非常复杂的系统,而swap只是其中一个很小的处理逻辑。希望本文能让读者了解Linux对swap的使用大概是什么样子。阅读完本文,应该可以帮你解决以下问题:1、 swap到底是干嘛的?2、 swap...转载 2018-05-07 16:49:29 · 33207 阅读 · 3 评论 -
服务器性能指标(一)——负载(Load)分析及问题排查
平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load、cpu、mem、qps、rt等。每个指标都有其独特的意义,很多时候在线上出现问题时,往往会伴随着某些指标的异常。大部分情况下,在问题发生之前,某些指标就会提前有异常显示。对于这些指标的理解和查看、异常解决等,是程序员们重要的必备技能。本文,主要来介绍一下一个比较重要的指标——机器负载(Load),主要涉及负载的定义、查看负载方式、...转载 2018-05-22 10:00:44 · 2173 阅读 · 0 评论 -
Linux(三) 运行级别
一、Linux运行级别0: 关机1: 单用户2: 无网络的多用户3: 命令行模式4: 未用5: GUI(图形桌面 模式)6 : 重启运行级别的切换 init 想要切换的运行级别二、查看运行级别who -r : 显示当前运行级别以及系统当前时间 。[outman02@bogon ~]$ who -rrun-level 5 2017-11-02 17:55123runlevel : 显示前一个运...转载 2018-06-12 20:40:19 · 978 阅读 · 0 评论 -
Linux ./configure --prefix命令
源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install),具体的安装方法一般作者都会给出文档,这里主要讨论配置(configure)。Configure是一个可执行脚本,它有很多选项,使用命令./configure –help输出详细的选项列表,如下:-bash-3.00# ./configure --helpUsage: configure [...转载 2018-06-21 15:12:21 · 1709 阅读 · 0 评论 -
彻底搞懂红黑树(二)
其实关于红黑树,STL源码剖析---红黑树原理详解 已经写得非常好了。但套用新警察故事里的谢霆锋说的一句话:自己查,印象深一点。这里也是一样,在自己写,印象深一点。如果你要看正宗的STL源码剖析---红黑树原理详解,那请你点击这个。这里的是D版的o(╯□╰)o 当然,我也会加一些我自己的理解,因为大神写文章都比较精简,而我这是写给我自己看的,有一点口水话加深点印象。三 红黑树的插入 ...转载 2018-08-20 20:41:47 · 575 阅读 · 0 评论 -
ELF格式与bss段
ELF(Executable Linkable Format)是Linux系统下的一种可执行可链接文件的格式,是COFF格式的变种。在Linux系统中包括了可重定位文件(.o文件),可执行文件(/bin/bash文件),共享目标文件(.so)和核心转储文件(core dump)。ELF文件头(ELF Header):位于ELF文件的头部,包含了描述整个文件的基本属性。代码段(.text):用于存放...转载 2018-04-25 11:44:45 · 656 阅读 · 0 评论 -
Linux上的TIME_WAIT和tcp_fin_timeout
当Linux服务器的TIME_WAIT过多时,通常会想到去修改参数降低TIME_WAIT时长,以减少TIME_WAIT数量,但Linux并没有提供这样的接口,除非重新编译内核。Linux默认的TIME_WAIT时长一般是60秒,定义在内核的include/net/tcp.h文件中:#define TCP_TIMEWAIT_LEN (60*HZ)/* how long to wait to dest...转载 2018-04-25 11:43:52 · 5017 阅读 · 0 评论 -
Linux常用操作指令
常用指令ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent)cd 切转载 2018-01-02 20:12:58 · 194 阅读 · 0 评论 -
Linux tr命令
tr命令可以对来自标准输入的字符进行替换、压缩和删除。tr只能接收来自标准的输入流,不能接收参数。语法tr [OPTION]... SET1 [SET2]注意:SET2是可选项OPTION:不带参数:将SET2中的每个字符替换SET1中的每个字符,字符是顺序替换,如果SET1的字符长度大于SET2,那么将SET1中多出来的字符用SET2中的最转载 2018-01-22 21:41:50 · 7292 阅读 · 0 评论 -
Linux awk命令详解
一. AWK 说明 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。 awk的处理文本和数据的方式:它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行转载 2018-01-22 22:09:44 · 3005 阅读 · 0 评论 -
利用记录型信号量机制: wait(s), signal(s)解决进程同步问题
wait(s) 等价与P操作, signal(s)等价于V操作生产者-消费者问题int in = 0, out = 0;item buffer[n];semaphore mutex = 1, empty = n, full = 0;void procuder() { do { procuder an item nextp; ... wait转载 2018-01-05 21:34:47 · 1766 阅读 · 0 评论 -
线程同步(互斥锁与信号量的作用与区别)
“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这 个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用的”也就是说,信转载 2018-01-05 21:35:34 · 217 阅读 · 0 评论 -
LINUX ulimit命令
linux下默认是不产生core文件的,要用ulimit -c unlimited放开概述系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时,经常使用的一种简单手段。ulimit 是一种 linux 系统的内键功能,它具有一套参数集,用于为由它生成的 shell 进程及其子进程的资源转载 2018-01-24 22:17:43 · 3341 阅读 · 0 评论 -
linux查看和修改PATH环境变量的方法
查看PATH:echo $PATH以添加mongodb server为列修改方法一:export PATH=/usr/local/mongodb/bin:$PATH//配置完后可以通过echo $PATH查看配置结果。生效方法:立即生效有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的path配置用户局限:仅对当前用户 修改方法二:通过修改.bashrc文件:vim ~/...转载 2018-04-11 16:58:11 · 263 阅读 · 0 评论 -
/etc/profile,/etc/bashrc,~/.bash_profile,~/.bashrc
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行并从/etc/profile.d目录的配置文件中搜集shell的设置. /etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执...转载 2018-04-11 20:03:26 · 247 阅读 · 0 评论 -
etc/bashrc和/etc/profile
首先我们来看系统中的这些文件, 一般的系统可能会有/etc/profile/etc/bashrc~/.bashrc~/.profile而如果系统是 ubuntu 或者 debian 的话, 就不会有 /etc/bashrc 而会有 /etc/bash.bashrc 文件.以上这些就是常用 profile 和 bashrc 文件了. 要理解这些文件之前还需要了解 Shell, Shell 的...转载 2018-04-11 20:23:43 · 609 阅读 · 0 评论 -
【vim】模式与模式切换
正文 很多初学者启动vim后,不知道怎么输入字符:按了半天字母,结果屏幕还是空的。vim和记事本或WORD不一样,不是一打开后就可以输入文字,此时它处于正常模式。vim一共有4个模式:正常模式 (Normal-mode) 插入模式 (Insert-mode)命令模式 (Command-mode)可视模式 (Visual-mode) 注意:方向键(上下左右那几个)可以在vim屏幕里跳来跳去。现在知...转载 2018-04-23 16:31:07 · 2640 阅读 · 0 评论 -
【vim】简介与基本配置
正文vim是一款非常强大的文字编辑软件,是各种类UNIX系统标配的文本编辑工具。相信此文的读者对它应该不会陌生,在这里就不做介绍了。回到顶部1.为什么要使用vim在认识vim之前,我用过好多IDE:Visual Studio, Eclipse, C++ Builder,Source Insight, SlickEdit, Qt Creator等等,但我觉得这些东西都有这样那样的不足(Qt Crea...转载 2018-04-23 16:33:30 · 259 阅读 · 0 评论 -
linux 共享内存与nginx共享内存
共享内存的实现分为两个步骤:一、 创建共享内存,使用shmget函数。二、 映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数。创建共享内存int shmget(key_t key ,int size,int shmflg)key标识共享内存的键值:0/IPC_PRIVATE。当key的取值为IPC_PRIVATE,则函数shmget将创建一块新的共享内存;如果key的取...转载 2018-04-23 20:07:22 · 631 阅读 · 0 评论 -
阅读 Linux 内核源码——共享内存
介绍我看的是linux-4.2.3的源码。参考了《边干边学——Linux内核指导》(鬼畜的书名)第16章内容,他们用的是2.6.15的内核源码。现在linux中可以使用共享内存的方式有两种POSIX的shm_open()在/dev/shm/下打开一个文件,用mmap()映射到进程自己的内存地址System V的shmget()得到一个共享内存对象的id,用shmat()映射到进程自己的内存地址PO...转载 2018-04-23 20:13:55 · 502 阅读 · 0 评论 -
LINUX下目标文件的BSS段、数据段、代码段
操作系统:ubuntu 13.04工具:gcc, objdump, readelf参考:《程序员自我修养》代码编译后的机器指令经常被放在代码段里,代码段名为".text";已初始化的全局变量和已初始化的局部静态变量经常放在数据段里,数据段名为".data";未初始化的全局变量和未初始化局部静态变量一般放在“.bss”段里,.bss在文件中不占据空间。字符串常量一般放在“.rodata”段里。通过代...转载 2018-04-25 11:36:27 · 598 阅读 · 0 评论 -
Linux readelf命令的使用
readelf命令是Linux下的分析ELF文件的命令,这个命令在分析ELF文件格式时非常有用,下面以ELF格式可执行文件test为例详细介绍:readelf -h a.out显示a.out的ELF Header的文件头信息。[root@robot ~]# vim main.c[root@robot ~]# gcc main.c[root@robot ~]# readelf -h...转载 2018-09-18 15:35:36 · 580 阅读 · 0 评论