Engineer Culture 看了一篇为什么要工程师文化-博客,深有感触,觉得对作为程序员的自己有很强的警示作用 从程序员说起成为一名计算机学院的学生以来,我并没有把自己当做一个工程师,而是目标成为一个程序员,而程序员在我的印象中,有下面几个特点: 思维缜密 虽然累但是挣钱多 沉默寡言,不善攀谈 这也符合大部分对于程序员的刻板印象,但是这样就够了吗?直到我仔细读完了上面那篇文章,才有了更进一步的领悟。 作为一名工科的学生, 2022-02-20 life thinking
netfilter 1. netfilter 简介1.1 什么是 netfilter如今的 netfilter 遍布 Linux network system 的各个角落,我们首先来回顾一下其发展历史。 早些的 Linux 版本中,也存在用来进行 ip 过滤、管理等操作的框架,不论是 ipchains 还是 ipfwadm(ip firewall admin),功能都比较局限。直到 netfilter 出现,作为一个 2022-02-15 linux network netfilter nf_hook
bridge 1. Overlook1.1 什么是 bridge即使你之前没有听说过 bridge 这种新奇玩意,但凡是学过计算机网络的同学,对交换机(switch)总有所耳闻吧。 通常所说的交换机工作在 OSI 参考模型的数据链路层,使用 MAC 地址转发数据,通过学习得到 MAC 地址到目标端口的映射表,依据这张表决定转发的下一个设备,并且有广播和单播等多种能力。 bridge 是 Linux 软件模拟出来 2022-02-15 linux network docker bridge
veth 1. veth 是什么veth ,又名虚拟网络设备对,主要是用于解决不同网络命名空间之间的通信。 说起网络名称空间(network namespace),大家应该都不陌生,这是 Linux 用来隔离容器网络环境的一项技术,主要隔离的资源有: iptables 路由规则表 网络设备列表 虽然不同 namespace 之间是隔离的,但也有办法让它们之间完成通信,veth 就是其中的一种比较常见的解 2022-02-13 linux network namespace veth
do_execve 源码解析 大家都知道,Linux 下面的可执行文件格式为 elf ,全称是 executable linkable format,中文名为“可执行可链接文件”,这种文件是以二进制的方式存储的,我们也可以将其称为二进制对象(binary object)。 以 gcc 为例,最终需要将很多 ‘.c’ 文件编译为一个 elf 格式的可执行文件,最终才能在 Linux 上运行,那么问题来了,Linux 是如何识别 2022-02-12 linux execve
wsl 开发环境配置 1. WSL2 安装1.1 安装和启动 wsl首先使用管理员权限(windows + R)打开 powershell/cmd/windows terminal,输入下面的指令,也就是打开 windows subsystem for linux 的功能 123dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsyst 2022-02-12 linux arch configuration
Linux vDSO 机制 1. 什么是 vDSO众所周知,操作系统为我们管理硬件资源,并以系统调用的方式对用户进程提供 API,但是 syscall 很慢,涉及陷入内核以及上下文切换。对于少量频繁调用的系统调用(比如获取当期系统时间)来说,是否可以某种安全的方式开放到用户空间,让用户直接访问而不需要经过 syscall 呢? vDSO 就是用来解决这个问题的。 vDSO 全程为 virtual dynamic shared 2022-02-10 linux vsyscall vDSO
x86 APIC 1. 什么是 APICAPIC 的全程是 Advanced Programmable Interrupt Controller,高级可编程中断控制器,我们今天主要讨论 x86 平台上的 APIC。 主要关注两点: 怎么高级了 什么是可编程 在这之前,首先认识一下 Interrupt 是什么 2. APIC details2.1 中断,陷阱,异常说起中断,大家经常将其和异常混淆,我觉得这里有必要 2022-01-21 linux interrupt