用于创建进程的 fork 和 execve 函数
Linux 中创建进程有两个目的:
- 将一个程序分为多个进程进行处理
- 创建另一个新的进程
为了达到上面两个目的,Linux 提供了 fork 和 execve 函数来创建进程。
brpc 引入 m:n 的线程模型,固定的内核线程调度运行大量的 bthread 以避免内核线程上下文切换带来的开销。bthread 类似协程,即用户态线程,bthread 的切换不会陷入内核,不会进行一系列内存同步等耗时操作,因此 bthread 的切换在 100-200ns,相比内核线程的微秒级别有着数量级的提升。
bthread 中借用 boost 实现协程间的切换,下面的 x86_64 测试用例简单的将嵌汇编和 C++ 代码融合到了一起,测试下协程切换栈的过程。aarch64 测试用例只需要把嵌汇编代码换了就行,都是原封不动的抄的 boost 里协程实现的 make_fcontext 和 jump_fcontext 两个 S 文件。
记录在树莓派上安装 Ubuntu 并配置的过程:通过树莓派镜像工具和 SD 读卡器将 Ubuntu 系统镜像烧录到 SD 卡,再将 SD 卡插到树莓派卡槽,通电即可运行,插入网线后通过 ssh 登录树莓派 Ubuntu 进行配置。
boost 协程上下文切换 make_arm64_aapcs_elf_gas.S 和 jump_arm64_aapcs_elf_gas.S 以及 make_x86_64_aapcs_elf_gas.S 和 jump_x86_64_aapcs_elf_gas.S 汇编源码分析
日常工作中,在 Linux 环境下会遇到各种格式的压缩包,不同格式的压缩包需要用不同的工具和命令解压。格式种类比较多,命令也难记,所以这里梳理汇总一下,方便以后查阅。