HHP Blog

Thinking will not overcome fear but action will.

Linux内核调试 之 qemu+gdb

前言 关于QEMU qemu是一个广泛使用的开源计算机模拟器和虚拟机。 当作为模拟器时,可以在一种架构(如x86 PC)下运行另一种架构(如ARM)下的操作系统和程序。通过使用动态翻译,它可以获得非常好的性能。 作为虚拟机时,qemu可以使用其他虚拟机管理程序( KVM)来使用CPU扩展进行虚拟化,通过在主机CPU上直接执行客户机代码来获得接近于宿主机的性能。 关于内核调试 目前...

HTTP的历史和未来

前言 http是目前互联网应用层使用最广泛的协议,无论你是用浏览器打开一个网页,还是使用手机app来看电影玩游戏,绝大部分都是使用的http协议来传输数据。本文将带大家一块来了解一下http的发展历史和未来的发展方向。 HTTP 1.0 最早的http协议标准可以追溯到1996年五月,但实际上,早在1990年,http协议就开始在互联网里大规模的使用了,只是直到1996年五月,才将ht...

深入浅出Nginx 负载均衡算法篇

前言 Nginx是一个高性能HTTP和反向代理web服务器。相比较于Apache,Nginx有轻量级、抗并发(Nginx 处理请求是异步非阻塞的,而Apache 则是阻塞型的,在高并发下Nginx 能保持低资源低消耗高性能、高度模块化的设计,编写模块相对简单的优点。所以现在使用Nginx的人越来越多了。 负载均衡(load balance)是处理高并发的一个常用手段,是一种将流量分配到不...

符号表的一些事一些情

前言 做操作系统相关的开发,肯定都会接触到目标文件和可执行文件等等的分析,今天就和大家交流一下linux下elf文件的符号和符号表的知识以及在工程实践中会有什么应用。 正文 符号表是什么? 我们知道,在编译的四个阶段中,最后一步链接的本质就是将不同的目标文件糅合到一块,生成最终可执行的二进制文件。而目标文件的互相糅合,实质上就是目标文件之间对地址的引用,就是对函数和变量的地址的引用。...

https、TLS握手和密码学

前言 http和https是我们上网经常会看到的字眼,但http和https到底是什么,有什么不同,又有什么联系?本人因为工作需要,也因为自己的兴趣,一直有接触和研究密码学的知识。今天就借本文说一下自己的见解。 正文 预备知识: 密码学 密码学三大原则:安全性、不可否认性、消息完整性。 我的理解密码学就是加密和解密两个过程。加密就是用密钥通过加密算法加密你的明文信息,解密就是用密...

linux进程装载和内存管理

背景 操作系统的内存管理是整个操作系统中的核心的部分。然而其实在我们的日常工作中,一般是不会接触到这块地方的,因为这块东西已经比较稳定,日常工作中是不会有需求要去改动这块地方的。虽然我们并不需要完全弄透其中的细节,但是如果对其有一个全面而感性的认识,会让我们在工作中事半功倍。 正文 看本文前,大家需要对ELF文件有一个大概的了解。 进程虚拟地址空间 首先我们要搞清楚虚拟地址空间的概...

linux系统调用

深入理解linux系统调用

前言 系统调用一词,懂点操作系统的人肯定都听过。而搞操作系统开发的人,对这个词更不陌生,因为在开发中我们总会直接或者间接的使用到系统调用。但是,如果有人问,到底什么是系统调用?它的机制又是怎样的?我相信,不是每一个操作系统开发工程师都能很好的解释清楚。我之前对这个问题也是完全模糊的,但最近对这个问题很感兴趣,于是自己研究了一番。下面我一步步和大家去探讨一下这个的问题,进行理论分析和实践验证...

linux内核模块的交叉编译和加载

前言 本文的重点不是去讲解如何去编写一个内核模块,而是编写好一个内核模块应该怎么(交叉)编译和加载进内核。 背景 本人在编译和加载内核模块的时候踩过不少坑。当中很多坑都是在交叉编译的时候遇到的。所以借此文记录一下,也可供以后查看。 首先,我编写一个叫globalfifo的模块,下面是我的c源码: #include <linux/module.h> #includ...

linux内核入门

linux源码安装地址 https://mirrors.edge.kernel.org/pub/linux/kernel/ linux编译内核过程 下载源码tar包 解压 最好预留15G以上磁盘空间 运行make defconfig生成一份默认配置文件.config(在当前目录下) 使用/boot/目录下的之前可用的config文件覆盖.config文件的内容(选...

linux--性能调优

perf + flame graph分析程序性能 1、$perf record -F 99 -g -p processnum,这里-F是采集频率,-g是告诉perf record额外记录函数的调用关 系,-p后面加进程号。 ​ 结束执行后,在当前目录下会生成采样数据perf.data. 2、用perf script工具对perf.data进行解析 ​ $ perf script -i...