代码改变世界

随笔分类 -  Linux操作系统

linux源码分析(五)-start_kernel

2016-10-28 16:45 by 轩脉刃, 3129 阅读, 收藏, 编辑
摘要: 前置:这里使用的linux版本是4.8,x86体系。 local_irq_disable(); 这个函数是做了关闭中断操作。和后面的local_irq_enable相对应。说明启动的下面函数是不允许被中断抢占的。这个函数追下去会发现下面的代码: 这个写法是linux的内联汇编写法。在C语言中写汇编语 阅读全文

linux源码分析(四)-start_kernel-cgroup

2016-10-27 10:51 by 轩脉刃, 7478 阅读, 收藏, 编辑
摘要: 前置:这里使用的linux版本是4.8,x86体系。 聊这个函数就需要先了解cgroup。 cgroup概念 这个函数就是初始化cgroup所需要的参数的。cgroup最初是在2006年由google的一名工程师提出的,目的是把一些共同目标的进程放在一个组里面,而这个组里面的进程能共享指定数额的资源 阅读全文

linux源码分析(三)-start_kernel

2016-10-26 11:01 by 轩脉刃, 10748 阅读, 收藏, 编辑
摘要: 前置:这里使用的linux版本是4.8,x86体系。 start_kernel是过了引导阶段,进入到了内核启动阶段的入口。函数在init/main.c中。 set_task_stack_end_magic(&init_task); 这个函数是设置操作系统的第一个进程init。 这个init_task 阅读全文

linux源码分析(二)-启动过程

2016-10-25 13:01 by 轩脉刃, 6083 阅读, 收藏, 编辑
摘要: 前置:这里使用的linux版本是4.8,x86体系。 这篇是 http://home.ustc.edu.cn/~boj/courses/linux_kernel/1_boot.html 的学习笔记。 linux的启动过程有点像是小鱼吃大鱼,最后吃成一个胖子。 计算机中的PC寄存器是用来指示下个执行程 阅读全文

linux源码分析(一)

2016-10-24 10:29 by 轩脉刃, 22227 阅读, 收藏, 编辑
摘要: 前置:这里使用的linux版本是4.8,x86体系。 其实linux的内核启动的入口文件还是非常好找的,init/main.c。 static 和 extern 首先理解的是static和extern的区别: 这个代码说的是kernel_init函数的定义在这个文件中,extern说明init_IR 阅读全文

TCP的阻塞和重传机制

2016-07-18 11:48 by 轩脉刃, 13720 阅读, 收藏, 编辑
摘要: TCP的阻塞和重传机制 网络拥堵 现在网络上大部分的网络请求都是以TCP的方式进行传输的了。网络链路是固定的,各种链路情况也是不一样的。网络拥堵一直是TCP协议设计和使用的时候尽力要避免的。比如,从TCP协议的网络包协议设计来看,TCP使用一发一答的ACK的网络包确认方式,而不是使用NAK这种会增加 阅读全文

TCP的定时器

2016-07-11 10:00 by 轩脉刃, 2372 阅读, 收藏, 编辑
摘要: TCP的定时器 在TCP协议中有的时候需要定期或者按照某个算法对某个事件进行触发,那么这个时候,TCP协议是使用定时器进行实现的。在TCP中,会有四种定时器: 重传定时器 坚持定时器 保活定时器 2MSL定时器 这四个定时器都有各自的具体作用。 重传定时器 TCP是可靠的,因此,它对于发出去的信息, 阅读全文

大话keepalive

2016-04-05 10:23 by 轩脉刃, 11479 阅读, 收藏, 编辑
摘要: 大话keepalive 我们说到keepalive的时候,需要先明确一点,这个keepalive说的是tcp的还是http的。 tcp的keepalive是侧重在保持客户端和服务端的连接,一方会不定期发送心跳包给另一方,当一方端掉的时候,没有断掉的定时发送几次心跳包,如果间隔发送几次,对方都返回的是 阅读全文

也说说TIME_WAIT状态

2016-03-28 09:46 by 轩脉刃, 18858 阅读, 收藏, 编辑
摘要: 也说说TIME_WAIT状态 一个朋友问到,自己用go写了一个简单的HTTP服务端程序,为什么压测的时候服务端会出现一段时间的TIME_WAIT超高的情况,导致压测的效果不好呢? 记得老王有两篇文章专门说这个,当时粗粗看了一遍,正好碰上这个问题,又翻出来细细搂了。 第一个要弄懂的,是TIME_WAI 阅读全文

内存那些事

2015-10-16 12:09 by 轩脉刃, 2029 阅读, 收藏, 编辑
摘要: 内存那些事 linux中的free m可以查看当前的内存使用情况 [yejianfeng@iZ23fsd ~]$ free m total used free shared buffers cached Mem: 7869 7737 132 0 489 4419 /+ buffers/... 阅读全文

shell的历史

2015-05-21 12:17 by 轩脉刃, 2511 阅读, 收藏, 编辑
摘要: # shell的历史# shell概况人想要和操作系统进行交互,传送指令给操作系统,就需要使用到shell。宏义的shell是人与机器交互的页面,它分为两种,一种是有界面的,比如GUI,另外一种是没有界面的,完全是指令操作的(CLI)。我们一般说的shell指的就是命令行界面。## Bourne s... 阅读全文

说说常用的服务器操作

2014-07-02 11:14 by 轩脉刃, 2335 阅读, 收藏, 编辑
摘要: 想写写自己日常常用的服务器操作,但是想到这个题目还是有点大的。鸟哥两本linux私房菜的书才说完了所有的服务器操作命令,这里一次性列出来也不现实。差不多这里就写写一些比较常用的命令吧。 ps aux|grep XXX 这个是最常用的命令了,查看一个进程的状态啥的。还能看到端口号,运行时间等。如果需要批量关掉这些进程,也可以延生使用管道: ps aux|grep XXX|awk '{pr... 阅读全文

如何添加自定义脚本到开机自启动

2014-06-25 21:19 by 轩脉刃, 6393 阅读, 收藏, 编辑
摘要: 我的机器有个coreseek服务,但是没加到开启启动中去,导致机房一旦重启了机器,我的服务便不能使用了。所以我需要把coreseek的searchd加到自启动服务中去。写一个脚本auto_coreseek.sh:#!/bin/sh#chkconfig:2345 80 90#description:a... 阅读全文

你不一定懂的cpu显示信息

2013-10-23 11:48 by 轩脉刃, 54257 阅读, 收藏, 编辑
摘要: 在使用top命令的时候会看到这么一行: 里面的各个值分别是什么意思呢? 今天被问到这个问题,发现答的不是很清楚。果然啊,天天用最多的top命令都还没摸透。。。惭愧。。。于是就查了些资料: 官方解释 Cpu(s)表示的是cpu信息。各个值的意思是: us: user cpu time (or) % CPU time spent in user space sy: system cpu... 阅读全文

制作火焰图(纯笔记)

2013-10-17 13:55 by 轩脉刃, 3198 阅读, 收藏, 编辑
摘要: 安装systemtap 按照官网说的安装:http://sourceware.org/systemtap/wiki/SystemTapOnCentOS 我的操作系统是centos uname -rm: 2.6.18-164.el5xen x86_64 yum install systemtap wget http://debuginfo.centos.org/5/x86_64/kern... 阅读全文

《精通Linux内核必会的75个绝技》知识杂记

2013-10-16 18:17 by 轩脉刃, 1630 阅读, 收藏, 编辑
摘要: http://www.ibm.com/developerworks/cn/linux/l-cn-utrace/ utrace是为运行态的进程提供trace和debug支持。 utrace能做如下事情: 1 跟踪目标进程的各种事件 2 Debugger能控制调试程序,让目标暂停或者单步执行 3 对目标进程地址空间的访问能力 可以使用nuttcp来确认两机之间的吞吐量 在一台机器上使用n... 阅读全文

lnmp_auto:自动化安装lnmp环境脚本

2013-10-12 09:38 by 轩脉刃, 1965 阅读, 收藏, 编辑
摘要: 朋友找我在一台机器上帮忙安装下discuz。想着搭建过好几次的lnmp了,但是还没有使用过“一键安装”的自动化脚本,去网上有搜索出来,但是运行的时候发现用root运行别人的脚本还是真危险的事情,于是明白这不是个轮子,而是个井,每个程序员有必要自己挖一口的了。所以想着自己写个自动化安装lnmp的脚本lnmp_auto。 源代码在github上:https://github.com/jianfeng... 阅读全文

希望早几年知道的5个Unix命令

2013-09-17 08:20 by 轩脉刃, 2619 阅读, 收藏, 编辑
摘要: 原文: http://spin.atomicobject.com/2013/09/09/5-unix-commands/ 希望早几年知道的5个Unix命令 使用*nix系统已经有一段时间了。但是还是有一些命令是被我一直忽略的,现在我希望我能早几年发现这些命令。 1 man ascii 这个命令会打印出八进制,十六进制和十进制的ascii码表。难以置信我是一个月之前才知道这个命令的。我总是... 阅读全文

Linux内核知识

2013-09-05 09:04 by 轩脉刃, 3916 阅读, 收藏, 编辑
摘要: 版本 linus树 Linux内核最初创始人--Linus Torvalds管理一个Linus树,linus树也称为主线(mainline)。一般指的upstream,“上游”,也指这个linus树或者各种开发树。 linus树是以2.6.x这样的三个数字来表示。比如Linux 2.6.18-164.el5xen 的linus树中的内核版本就是2.6.18 stable树 这个是针对某个... 阅读全文

Linux的Cgroup

2013-09-03 13:45 by 轩脉刃, 41118 阅读, 收藏, 编辑
摘要: 为什么要有cgroup Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源。也就是能完成一组容器的概念,在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等。于是就出现了cgroup的概念,cgroup就是controller group,最初由google的工程师提出,后来被整合进Linux内核中。 Cgroup是将任意进程进行分组化管理的Linux内核功... 阅读全文