Linuxカーネルバージョン:32ビットと64ビット
1. 概要
このチュートリアルでは、コンピュータアーキテクチャについて少し詳しく説明します。 32ビットまたは64ビットのLinuxカーネルを使用しているかどうかを確認する方法と、CPUでサポートされているカーネルを確認する方法をいくつか紹介します。
2. コンピュータアーキテクチャ
私たちのコンピュータアーキテクチャでは、3つの主要コンポーネントを区別できます。
- 指図書
- メモリアドレス指定
- OSサポート
これらは、32ビットアーキテクチャと64ビットアーキテクチャのどちらを使用しているかによって影響を受けます。
CPUが64ビット命令セットを実装すると言うとき、プロセッサは最大64ビットの値を直接処理できることを意味します。これには通常、レジスタ、基本演算、および浮動小数点命令が含まれます。
メモリアドレス指定について説明する場合、これは最大64ビットのアドレスを使用してRAM内のデータを検索できることを意味します。これが、32ビットマシンが4GBを超えるRAMを処理できない理由です。 。 実際には、現在でも、64ビットプロセッサは最大48ビットアドレスしかサポートしていません(256 TBのRAMを使用できます)。
CPUが64ビット命令とメモリアドレス指定をサポートしている場合でも、これらの機能をサポートするOSが必要です。
3. プロセッサーのサポート
最初のステップは、CPUコアの機能を決定することです。
これを実現するために、 / proc /cpuinfoファイルの内容を確認します。 このファイルは、Linuxカーネルによって検出されたCPUに関するすべての情報を提供します。このファイルの詳細については、procのマニュアルページを参照してください。
lscpuを含むほとんどのツールは、このファイルによって提供されるデータを使用して、システム上にあるものをきれいに表現します。
プロセッサは、 flags エントリの下に、 lm (ロングモード)フラグを介して情報を表示します。 使用可能なさまざまなフラグの完全なリストについては、Linuxカーネルソースからcpufeaturesヘッダーファイルを確認できます。
grep を使用して、 / proc / cpuinfoでflags の最初の一致を見つけます(すべてのCPUコアに複数の一致が存在します)。 結果を2番目のgrepにパイプして、lmフラグを見つけられるようにします。
$ grep -m 1 flags /proc/cpuinfo | grep -o " lm "
lm
これは、64ビットプロセッサが存在することを示しています。 32ビットプロセッサが存在する場合、何も印刷されません。
4. カーネルバージョン
現在実行中のカーネルを照会する最も一般的な方法は、unameコマンドを使用することです。このコマンドは、64ビットカーネルの場合は x86_64 、またはi686のいずれかの値を返します。 32ビットカーネルの場合:
$ uname -m
x86_64
カーネルが64ビットをサポートしているかどうかを確認するもう1つの一般的な方法は、getconfコマンドを使用することです。
$ getconf LONG_BIT
64
5. 結論
このチュートリアルでは、CPUと実行中のカーネルに関する情報を取得するための複数の方法を見てきました。