KDOC 128: 『Goならわかるシステムプログラミング』

この文書のステータス

  • 作成
    • 2024-03-24 貴島
  • レビュー
    • 2024-04-27 貴島

概要

Goならわかるシステムプログラミングはその名の通りGoで、Cを使わずにシステムプログラミングを解説した本。

メモ

あまりメモしてない。

  • システムコールで引数が数値なのはレジスタで渡せるのが数値だけだから
  • 返り値もレジスタで返ってくるので数値
  • ソケットが他のプロセス間通信と違うのは、アドレスとポート番号がわかればローカルのコンピュータ内だけではなく外部のコンピュータとも通信が行える点
  • ソケットの3種類…TCP, UDP, Unixドメインソケット
  • cat example.go | echo パイプでつなげられたコマンドをまとめてプロセスグループという。プロセスグループに対するIDがコマンドの代表のプロセスIDとなる
  • 同じターミナルから起動したアプリケーションであれば同じセッショングループ
  • すべてのプロセスは、3つの入出力データを持つ。
    • 入力: コマンドライン引数
    • 入力: 環境変数
    • 出力: 終了コード
  • プログラムから見たスレッドは、メモリにロードされたプログラムの現在の実行状態を持つ仮想CPU。仮想CPUのそれぞれにスタックメモリが割り当てられている
  • OSやCPUから見たスレッドは時間が凍結されたプログラムの実行状態
  • OSの仕事は凍結状態のプログラムの実行状態を復元して各スレッドを順番に短時間ずつ処理を再開させること
  • スレッドがCPUコアに対してマッピングされるのに対して、goroutineはOSのスレッドにマッピングされる
  • goroutineはOSスレッドの1~2MBと比べると初期スタックメモリのサイズが小さく(2KB)、起動処理が軽い

関連