Open24

LINUX, OSの知見

nakashi94nakashi94

OSとはコンピュータのハードウェアリソースを管理して、プログラムが動作する環境を提供するソフトウェア(カーネル)と定義

nakashi94nakashi94

カーネルは一番ハードウェアに近いソフトウェア

Unix オペレーティングシステムのアーキテクチャ

ユーザー⇆シェル⇄カーネル の関係

nakashi94nakashi94

コンピュータアーキテクチャとcpuファミリは同義

  • x86アーキテクチャ:x64, x86_64はIntel64bit、x86はIntel32bit
  • ARMアーキテクチャ
nakashi94nakashi94

カーネルの主なコンポーネントは以下の5つ

  • プロセス管理
  • メモリ管理
  • ネットワーク
  • ファイルシステム
  • デバイスドライバ
nakashi94nakashi94

セッションにはセッションID(SID)
プロセスグループにはプロセスグループID(PGID)
プロセスにはプロセスID(PID)

スレッド、タスク

nakashi94nakashi94

プロセスの状態は以下の5つのうちのいずれかに該当する。

  • 作成
  • 実行待機
  • 待ち状態
  • 実行中
  • 終了
nakashi94nakashi94

仮想メモリ:実際にシステムに搭載されている物理メモリ以上のメモリを持っているように見せる機能

nakashi94nakashi94

物理メモリと仮想メモリは共にページと呼ばれる固定長のチャンク(塊)に分割されている。1ページは4KB(ただし、環境によって異なる?)

nakashi94nakashi94

KernelNewbies : カーネル初心者向けのサイト。カーネルのchangelogの情報やパッチ投稿、カーネルハッキングについてなど、より実践的な案内がある。

nakashi94nakashi94

CLIの観点からLinuxと対話する方法は以下の2つ

  • 手動でターミナルから操作
  • シェルスクリプト実行
nakashi94nakashi94

infocmpコマンドでターミナルでサポートされている出力を表示することができる

nakashi94nakashi94

現在の環境でどのシェルを使用しているかを確認するコマンドは以下の3つ

  • file -h /bin/sh
  • echo $0
  • echo $SHELL
nakashi94nakashi94

ビルトイン関数、外部関数

which {ビルトイン関数}で何も返ってこない
which {外部関数(外部プログラム)}でその実行ファイルの場所がわかる
type {コマンド}でそのコマンドがビルトインか外部かわかる

nakashi94nakashi94

マルチスレッドプログラミングでは複数のスレッドが同時にデータにアクセスしないようでロックをかける必要がある。偶発的なバグに遭遇し、デバッグが困難である。