Linux Kernelの双方向リスト"list_head" 徹底解説

まずは双方向リストについて解説する。 Linuxkernel内部ではlist_headというデータ構造が用意されており、これが様々な場面で使用される。 このデータ構造はnextとprevの二つのメンバを持ち、データ構造に前後の概念を導入したいときに使用される。 双方向リ…

Linux Kernel "task_struct" 徹底解説

task_structについて プロセスに関する情報はtask_struct構造体に格納される。 プロセスディスクリプタとも呼ばれる。 プロセスの情報は具体的には以下のようなものがあげれる。 プロセスの属性 CPU上で実行されているか あるいは何かしらの事象を待って止め…

Linuxファイルシステムの基本「シンボリックリンク」「iノード」

Unixファイル管理関連 ファイルの種類 Unixで使用するファイルはいずれかの種類になる。 通常ファイル ディレクトリ シンボリックリンク(後述) デバイスファイル(ブロック型デバイスファイル, キャラクタ型デバイスファイル) HDD, SSD:/dev/sda, /dev/sdb,…

Linuxの「dev」とか「sda」って何?

伝統的なデバイス名 ブロックデバイスの伝統的な名前 HDD, SSD:/dev/sda, /dev/sdb, /dev/sdc... NVMe SSD: dev/nvm0n1, dev/nvm0n2 VMの仮想デバイス:dev/vda, dev/vdb, dev/vdc... 注意点 ブロックデバイスを一覧表示するコマンド ブロックデバイスを一覧…

procって何?「Linux用語解説」

procfsについて procfsとは 通常/proc以下にマウントされるファイルシステム プロセスの情報が格納される ファイルシステムであり、catやlsで参照できるがメモリ内部にある。(通常のファイルシステムはハードディスクにある) 中身を見てみる まずはecho $$…

Linuxの「cgroups」って何?

cgroups概要 cgroupはリソースごとにコントローラーが存在し、コントローラーはcgroupfsという特別なファイルシステムを介して使います。 このファイルシステムは、ストレージデバイス上に存在するわけではなく、メモリ上にだけ存在します。 Ubuntu20.04では…

Linuxでソースコードをバイナリ化する「xxdコマンドの使い方」

コンピューターは1と0で動く...とは? プログラミングをするとき、人間から見て半端な数字が多い。 8bit 16GB, 32GB 32bitcpu, 64bitcpu →切りのいい数字じゃダメなんか? これらの数字はすべて2のn乗。 理論 素子のon/offがたくさんある。 データは何らかの…

Linuxで出てくる「x86」「AMD」「ARM」「RISC-V」とは何か?

linuxとCPUアーキテクチャ Linuxが人気である理由は、多数の異なる CPU アーキテクチャ上で実行されることがおそらく理由の 1 つです。 Linux カーネルには、汎用コードとドライバーに加えて、それぞれのCPUアーキテクチャ固有のコンポーネントが含まれてい…

Linuxのターミナルで使用できるショートカットキー一覧

そもそもターミナルとは? テキストベースのLinuxのユーザーインターフェースを提供するプログラムです。 現在はアプリとして使用され、xterm、rxvt、gnomeなどがあります。 ターミナルのショートカットキー ターミナルは基本的な文字入力と出力に加えてエス…

推しの話

推しの話 この子です。 このペンギンは「Tux」(タックス)君です。 技術者の方は嫌というほど見たことがあると思いますが「Linux」というOSのロゴになってます。 多分Windowsのexcelのイルカと同じポジション Linuxカーネルがバージョン2になる時に、ロゴの…

プロセスディスクリプタとは何か?【Linux kernelソース読解】

まずは双方向リストについて解説する。 Linuxkernel内部ではlist_headというデータ構造が用意されており、これが様々な場面で使用される。 このデータ構造はnextとprevの二つのメンバを持ち、データ構造に前後の概念を導入したいときに使用される。 双方向リ…

Linuxカーネルのプロセスについて知りたかったことすべて【Linuxカーネルを読む準備】

Linuxカーネルのプロセス ユーザープロセスについて ユーザープロセスとは文字通り、ユーザーの操作が元となり発生するプロセスのことです。 ユーザーモードとカーネルモードを切り替えるための特別な命令がCPUには用意されています。 そして、プログラムは…

Unixファイル管理関連概要説明【Linuxカーネルを読む準備】

Unixファイル管理関連 ファイルの種類 Unixで使用するファイルはいずれかの種類になる。 通常ファイル ディレクトリ シンボリックリンク(後述) デバイスファイル(ブロック型デバイスファイル, キャラクタ型デバイスファイル) HDD, SSD:/dev/sda, /dev/sdb,…

「詳細 LINUXカーネル」を読む前に読む用語集【Linuxカーネルを読む準備】

カーネル すべてのPCにはオペレーティングシステムが存在します。その中でも中心となるプログラムがカーネルであり、 これはすべてのアプリケーションの基礎となるプログラムであり、システム起動時にRAMに読み込まれます。 反対に、カーネルではないシステ…

Linuxのxxdコマンドの扱い方

コンピューターは1と0で動く...とは? プログラミングをするとき、人間から見て半端な数字が多い。 8bit 16GB, 32GB 32bitcpu, 64bitcpu →切りのいい数字じゃダメなんか? これらの数字はすべて2のn乗。 理論 素子のon/offがたくさんある。 データは何らかの…

LinuxでCPUの情報を/sys/devices/system/cpuから操作する

CPU

LinuxコマンドでCPUの情報を得る 今後、procという言葉がたくさん出てくる。 これが出てきたら、プロセスやCPUに関連した /proc/cpuinfo まずはcpuの情報が書かれたファイルを見る。 less /proc/cpuinfo processor :CPUの単位。8コア存在するのであれば、0~7…

なぜLinux Kernelが必要なのか?

参考:https://www.youtube.com/watch?v=8YGNg38-6jM カーネルが無いシステムとは カーネルが無いシステムとは、次のようなシステムをイメージすると良い。 ハードウェアの上に、直接アプリが一つあるとき。 アプリからハードウェアにアクセスする構造だが、…