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 / cpuinfoflags の最初の一致を見つけます(すべての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と実行中のカーネルに関する情報を取得するための複数の方法を見てきました。