[译]All About Thread-Local Storage

线程本地存储(TLS)提供了一种为不同线程分配不同对象的机制。它是GCC扩展__thread、C11 _Thread_local和C++11 thread_local的通常实现,它们允许使用声明的名称来指代与当前线程相关的实体。本文将详细描述ELF平台上的线程本地存储,并触及其他相关话题,如:线程特定数据键和Windows/MacOS TLS。

阅读更多

线程

与进程近似,线程是允许应用程序并发执行多个任务的一种机制。如下图所示,一个进程可以包含多个线程。同一个程序的所有线程均会独立地执行相同的程序,且会共享统一份全局内存区域,包括初始化数据段(initialized data)、未初始化数据段(uninitialized data)以及堆内存段(heap segment)。

阅读更多

多线程编程

进程与线程

进程是资源(CPU、内存等)分配的基本单位,具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是独立运行和独立调度的基本单位(CPU上真正运行的是线程)。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

阅读更多

何为并发

计算机领域的并发指的是在单个系统里同时执行多个独立的任务,而非顺序的进行一些活动。

阅读更多

【译】Linux系统中的 ELF 文件的理解与分析

世界上一些真正的工匠精神,我们认为是理所当然的。其中之一就是 Linux 上常用的工具,比如psls。尽管这些命令可能被认为是简单的,但当看清其本质时,却有更多的东西。这就是ELF或可执行和可链接格式的作用。一个用得很多的文件格式,但真正了解的人却寥寥无几。让我们通过这个介绍教程来了解一下吧!

阅读更多

Huge Page

Ⅰ. Check Huge Page

  1. Linux 内核支持多种 page size。

    架构 HugePage Size
    arm64 4K, 2M and 1G (or 64K and 512M if one builds their own kernel with CONFIG_ARM64_64K_PAGES=y)
    x86 4K and 4M (2M in PAE mode,1GB if architecturally supported)
    amd64 2MB, 1GB
    ia64 4K, 8K, 64K, 256K, 1M, 4M, 16M, 256M
    ppc64 4K, 16M
阅读更多

SystemTap学习记录

SystemTap 工具

SystemTap 允许用户在不重新编译代码的情况下利用静态追踪、动态追踪工具,比如在任何地方动态插入printk,或者改变内核的关键数据结构(guru模式)。所有的操作都要以root用户模式下进行。

阅读更多