Programming Self-Study Notebook

勉強したことを忘れないように! 思い出せるように!!

Linuxの基本的なコト(Linuxカーネルまわり)

f:id:overworker:20200617233306p:plain:h250

Linuxカーネル(kernel)

  • OSのコアとなる部分のこと

    • OSとしてハードウェアやアプリケーションソフトを制御するための基本的機能を実装したソフトウェア
  • Linuxカーネル以外(=ユーザーランド)からは直接デバイスを制御することができない。

主な機能

  • プロセス管理
    • プログラムのファイルに書かれた内容を読み込み、メモリ上に展開する。
    • メモリ上のプログラムを実行する(実行されたプログラムをプロセスという。)
    • Linuxカーネルはプロセスに対しPID(プロセスID)という識別子をつけて管理する。
    • プロセスの実行のために必要となるCPUを効率よく割り当てる。
  • メモリ管理
    • プログラム/データを物理メモリに効率良く割り当てる
    • 実行が終わったプロセスが使っていたメモリ領域を解放する
    • メモリの物理的な容量を超えるプログラム/データを展開するときは、ハードディスクのような補助記憶装置に仮想メモリ領域(スワップを作る
  • バイス制御
  • ファイルシステム

Linuxディストリビューション

主な構成

Linuxカーネル以外の部分をユーザーランドと言う

シェル(Shell)

  • ユーザーランドとLinuxカーネルの間のインファーフェース
    • ユーザーからの命令をコマンドで受け、それをLinuxカーネルに伝える。

シェルの機能

  • アプリケーションの起動/停止/再起動
  • 環境変数の管理
  • コマンド履歴の管理(コマンドヒストリ)
  • コマンド実行結果の表示やファイル出力

シェルスクリプト

  • シェルで実行したい命令をまとめてテキストファイルに記述したもの。
    • 条件分岐や繰り返し処理も行うことができる。

イメージ

f:id:overworker:20200618004848p:plain:h500