ablog

不器用で落着きのない技術者のメモ

BSS って何の略?

100MB 分のデータ領域(バッファ)を確保して、sleep するプログラムです。なお、バッファの領域を確保しただけだと bss に割り当てられてしまい実メモリを消費しないので、起動直後にそこに 100MB 分データの書き込みを行っています。

Linux のプロセスが Copy on Write で共有しているメモリのサイズを調べる - naoyaのはてなダイアリー

BSS って何の略か気になって調べてみたら、

Program Size

Compilers translate a program's executable statements into CPU instructions, and declarations of static data are translated into machine-specific data specifications. To create an executable file, the system linker aggregates the instructions and the data into distinct segments. All of the instructions go into one segment traditionally called text. Unfortunately, that name conveys the impression that the segment contains source code, which it does not. Meanwhile, the data are arranged in two segments. One is called data, for the initialized static data and literal constants, and the other, bss, for the uninitialized static data. Bss once stood for "block started from symbol," which was a mainframe assembly language instruction, but the term carries no meaning today.

http://www.ualberta.ca/CNS/RESEARCH/LinuxClusters/mem.html

メインフレームアセンブラ言語の命令 "block started from symbol" に由来するらしい。

BSS って何かというと、

プログラムのコード部分とデータ部分を分離して配置するのが一般的で、前者をテキストセグメント、後者をデータセグメントと呼ぶ。データセグメントと隣接してヒープ領域が配置されることが多く、これをUNIX系システムではBSSと呼ぶ。各セグメントはマッピングしているオブジェクトが何であるか、その領域へのアクセス権などを属性情報として保持する。

wikipedia:仮想記憶 より

ということらしい。