古いデスクトップコンピュータで小さなオペレーティングシステムを構築するにはどうすればよいですか?[閉まっている]


111

オペレーティングシステムの記述が(特に自分で)耐えられないほど複雑であることを知っているので、これは無駄かもしれません。

  • 次のLinuxまたはWindowsをビルドする予定はありません。

  • 私はそれが恐ろしくてバグがあり、うまくいかないことを知っています、しかしそれは大丈夫です。

AssemblyC、および(一部の)C ++で自分ですべてを書きたいと思います

現時点では他のことで忙しくてすぐに時間がないので、これは将来のプロジェクトですが、今すぐ質問するつもりだったので、これについて多くの答えを得ることができ、ビルドして、この種のアプローチの有用なリソースになる(私が見た他のすべては、minixからのビルド、既存のブートローダーの使用、仮想ブートプログラムでのビルドなど)。

モニター、キーボード、マウスを備えた古いデスクトップの1つをセットアップし、空のハードドライブで作業を開始したいと考えています。

独自のブートローダーの記述方法を学びたい(これについては多くのリソースを見つけたが、完全を期すために、いくつかの良いものを追加してください)、独自のUSBドライバー(必要な場合)、CDドライバー(必要な場合) )などすべて、ゼロから。

  • コードをコンピューターに配置するにはどうすればよいですか?フロッピーディスクで行うのが最善ですか。ほとんどのコンピューターはUSBスティックからそれを行うことができますか?

  • どのようなドライバーが必要ですか?それらを構築するための参照を提案できますか?

  • 起動シーケンスの後-それから何ですか?プロテクトモードにするにはどうすればよいですか。

  • オペレーティングシステムを使用せずにメモリを管理するにはどうすればよいですか?必要なアドレスだけを使用しますか?初期化は必要ありませんか?

  • 私は間違いなく何に遭遇しますか?

  • コマンドラインO / SとグラフィカルなO / Sのどちらにすることができますか?

  • グラフィカルO / Sとは何ですか?たとえば、コマンドライン、フォント、画像を上に配置するにはどうすればよいでしょうか。

  • マルチタスク環境のセットアップについてどこで読むことができますか?(つまり、2つのグラフィックのようなコマンドラインを並べて実行します)。

  • ある種のウィンドウシステムをどのように設定しますか?単純なマルチタスクが設定された後、画面にグラフィックスを表示するにはどうすればよいですか?

私を信じて、私はこれが非常に複雑なプロジェクトであることを理解し、私はおそらくそれを完了したり、それについて何かを書いたりすることは決してないでしょう。

これには、私が言及しなかった他の多くの部分があります。何か考えたら、それらも追加してください。

回答ごとに1つの「トピック」を入力してください。たとえば、USBドライバー、リソースのリスト、注意事項などです。

また、別のO / Sまたは既存のコードから構築することはお勧めしません。多くの既存のコード(Linuxカーネル、サンプルリソース、既存のドライバなど)を読み取ることはわかっていますが、最終的にはすべて自分で記述したいと思っています。私は他の何かから構築する必要があることを知っています。SOには他にも多くの質問があり、気が変わってそのルートに進んだ場合に読むことができます。しかし、これはすべてをゼロから行うことに関するものです。

それをグラフィカルにする方法について何か提案はありますか?さまざまなビデオモードとその操作方法など


14
これが私の最大の目標です。私はオペレーティングシステムをひどく書きたいのですが、それを楽しく学習するためだけに...過去数年間、時間を割くことができませんでした。あなたが何かを手伝ってくれる人を探している、またはあなたと物事について話し合っているだけの場合は、schmeling88のgmail.comにメールを送ることができます
Max Schmeling

2
@Maxと@Tomにもバグがありました。私は実際にこの時間にスタートする準備をしています:)
Giovanni Galbo

2
ただ今、グラフィックスについて考えないでください。Unixがグラフィックを直接サポートすることは決してなく、それほど悪くはありません。:-)しかし、基本的に800x600 IIRCを超える簡単でポータブルな方法はありません。
BastienLéonard09年


1
どうして?この質問は古くからあり、もはや活動を生み出していません。誰も気にしない?
カーソンマイヤーズ

回答:


51

まず最初に。読む、読む、読む、読む、読む。独自のOSを実装する前に、OSがどのように機能するかをしっかりと理解する必要があります。

Andrew Tanenbaumのオペレーティングシステムに関する本を入手してください。これは大学の私のOSクラスで使用したものです。

最新のオペレーティングシステムPDF

Amazonの最新のオペレーティングシステム

ばかげたカバーにもかかわらず、それは特に教科書にとっては素晴らしい読み物です。タネンバウムは本当にこの分野の専門家であり、フードの下でOSがどのように機能するかについての彼の説明は明確で理解しやすいものです。この本はほとんどが理論ですが、彼は実装についてさらに論じている本も持っていると思います。まだ読んだことがないのでコメントはできません。

これは、プロセス管理、メモリ管理、ファイルシステム、およびOSカーネルが起動可能な状態にするためにOSカーネルが実行する必要があるすべてのことを実行するのに役立ちます。その時点から、基本的には、サポートする必要のあるハードウェアのデバイスドライバーを作成し、ファイルとデバイスを開く、読み取りと書き込み、プロセス間でメッセージを渡すなどのカーネル呼び出しを行うためのCライブラリ関数の実装を提供することです。 。

x86アセンブリについて読んでください(x86マシン用にこれを設計していると想定しています)。これで、プロセッサの動作モード間の移動に関する多くの質問に答えることができます。

電子工学の知識がある場合は、ドキュメントが豊富な組み込みデバイス用のオペレーティングシステムを作成することから始める方が簡単です。これは、x86 PCよりも一般的にシンプルだからです。私はいつも自分のOSも書きたかったのですが、この開発ボード用のマイクロカーネル組み込みOSをDigilentから書き始めています。ドキュメントが非常に充実しているザイリンクスのソフトコアMicroBlazeプロセッサを実行できます。また、RAM、フラッシュデータストレージ、LED、スイッチ、ボタン、VGA出力なども備えています。シンプルなドライバーを作成するためにいろいろ試してみてください。

組み込みデバイスの利点の1つは、VGAドライバーを長時間書くことを回避できる場合があることです。私の場合、Digilent開発ボードにはUARTが搭載されているため、シリアル出力をコンソールとして効果的に使用して、すべてを起動し、最小限の手間でコマンドラインを起動できます。

対象として選択するものはすべて、すぐに利用でき、十分にテストされたコンパイラーを備えていることを確認してください。あなたはないではないと同時に、OSやコンパイラを書くことにしたいです。


2
+1ですが、私はTanenbaum Minixの本(より実装を目的としています)を好みます。とにかく、彼は最初の試行でOSを作成しません。最初にブートローダーを作成し、次にプロテクトモードに切り替えてから、I / Oを処理します。
BastienLéonard08年

2
組み込みチップ用のOSを作成するための+1。結局のところ、何かユニークなものを作ったと感じるでしょう。それは、同じコアコンセプトを維持しながら、(たとえば)x86用に作成するよりもはるかに単純です。たとえば、TinyOSを見てください(技術的にはOSではありませんが、スケジューラやタスクモジュールなどがあります。)
Kristopher Micinski '16

29

http://www.osdev.org/ および http://www.osdever.net/

OS開発の世界へようこそ。

SOの他のx86ドキュメントリンクも参照してください。 タグウィキ:IntelおよびAMDのマニュアル、コンパイラ/アセンブラのドキュメント、およびさまざまなガイド。

ブートローダーをシングルステップで実行してレジスターを調べることができるため、デバッグにはBOCHSまたはその他の仮想環境の使用も推奨されます。




6
これらは有用なリソースであることは承知していますが、説明なしのリンクのセットではなく、コンテキストを提供した方が、将来の読者にとってより役立つと思います。
icktoofay 2014年

@icktoofay質問が多すぎて適切に答えられないと思います。
user253751

15

私は少なくとも最初はボフスで作業することをお勧めしますまたは他の仮想マシンします。これは、どこにでも持ち運べるので、デバッグが簡単である(ハードウェアの正確な状態を確認できる)ためです。彼らはあなたとまったく同じ「ハードウェア」を使用できるので、デバッグの外部支援が必要です。

私が持っている最も有用なアドバイスは、できるだけ早くCコードを実行できる状態にすることです。つまり、起動し、記述子テーブルを設定し、コンパイルされたCを実行しても安全な状態に自分自身を導きます。正常な状態で作業を続けたい場合は、すべてのカーネルがCにある必要はありません。アセンブリは、一部の場所では必要ですが、面倒でデバッグしにくい傾向があります。


私は今の周りを再生するためにBochsのに見ていきますが、私は最終的にちょうどいくつかのPC上でこれを構築することにしたい
カーソンマイヤーズ

BOCHSで機能する場合、通常は実際のPCで、BIOSのモジュロの違いで機能します。ほとんどのバグはおそらくBOCHSと実際のハードウェアに影響を与えるものですが、違いは、コードがBOCHSの無限ループに陥ったときに、BOCHSの組み込みデバッガーを使用して、場所と単一のステップを見つけることができることです。方法/理由を説明します。実際のハードウェアでは、デバッグプリントを追加するだけで済みます。デバッガを使用すると、何時間も何日も頭を悩ませる必要がなくなります。
Peter Cordes 2017年

14

オペレーティングシステムが実行できる必要のある最低レベルは、システムのハードウェアを何らかの方法で駆動し、何らかの方法で "ユーザーコード"の実行をロードすることです。PCから始める場合は、PCから何らかのデバイスからロードできるコードを記述する必要があります。古いPCのファームウェアにはBIOSがあり、ハードウェアが初期化を実行する方法(少なくともビデオ、キーボード、および何らかの形式のストレージまたはブートローダー)を決定します。(2017年10月の更新:新しいPCにはEFIまたはUEFIファームウェアが搭載されています...これは主に見た目の違いです。この説明では同じ目的を果たします)。

ターゲットシステムでBIOSまたはその他のファームウェアを使用する方法の詳細を学ぶことから始めます。つまり、BIOSがロードして実行できるプログラムの作成方法を学びます。それは最終的にブートローダーに変わります。小さなものから始めましょう。"Hello、Linus"をファームウェアブートプロセスから直接印刷するプログラムを入手するだけです(フロッピーまたはUSBサムドライブを使用するとよいでしょう...または、必要に応じてハードドライブで)。

そこから、非常に単純なシリアルドライバーを作成することをお勧めします。ブートローダーを更新してシリアルポートを初期化し、そこからダウンロードを開始します。次に、プルしたコードを実行できます。そこから、別のブロックのセットに書き込むことができるブートストラップを少し書きます(ファイルシステムはまだ実装していません...パーティションテーブルの解析さえしていません。そのため、最初はディスク上のブロックの生の範囲を処理します)。

その時点で、ブートローダーはシリアルコードを介して新しいコードをプルし、パーティションにダンプできるはずです(そうです、ある種のパーティションテーブル処理を実装します...標準のPCの規則に準拠しているかどうかは、この時点で自由です)、それを実行します。

そこから、はるかに洗練された機能に取り組むことができるはずです。このベースから、新しい「カーネル」を作成してコンパイルできます。テストベッドを再起動して、新しいカーネルをデプロイします。

(ブートローダーは、ダウンロードをスキップして既存のイメージを起動するコマンドとしてシリアルハンドシェイクライン上のBREAKなどの信号を受け取る必要があります。また、この方法でタイムアウトを処理する必要があります)。

そこから非常にシンプルなターミナルレイヤーとコマンドシェルを記述しますか?ファイルシステム?カーネル以外の新しい実行可能コンテンツ(ファイルまたは何らかのオブジェクト)をダウンロードするコマンドを実装します。等々。

当然、PCキーボードとビデオを使用してコンソールドライバーから開始することもできます(私が正しく思い出せば、それぞれBIOSのINT 0x16hとINT 0x10Hのものです)。ただし、他の既存の(機能する)システムからビルド/展開/テストサイクルを自動化できるため、シリアルドライバーから始めることをお勧めします。新しいOSはクロスコンパイルされたプロジェクトとして開始されるため、合理的な方法で処理することが不可欠です。

どれだけプロジェクトを進めたいのかわかりません。かなり印象的な目標は、「セルフホスティング」を達成することです。新しいOSを使用して、新しいバージョンの作業バージョンの(再)ビルド、リンク、および起動を可能にする単純なアセンブラー/コンパイラーを作成できれば、その目標は達成されました。(それは要件ではないことに注意してください。多くの組み込みシステムがセルフホスティングになることは決してなく、それで問題はありません)。


最近のハードウェアでは、コンソール(ビデオ/キーボード)ドライバーを作成するよりも、シリアルドライバーを動作させる方が難しい場合があります。私がこれを書いてから数年で、プレーンな古いシリアルコネクタは、現代のデスクトップやラップトップでは事実上存在しなくなりました。一部の組み込みおよび「趣味」ハードウェアは、USBエミュレーションを経由する必要なしに、依然として旧式のRS-232Cインターフェースを備えています。たとえば、mpl.ch / t2600.htmlにはあるようです。
ジム・デニス

12

ハードウェア仮想化を使用してもかまわない場合は、「NandからTetrisへ」というコース(本+講義+ソフトウェア)があります。(これらの目的のために、アトミックで、与えられた)電気NANDゲートから完全に完全なコンピューターシステムを作成し、OS、言語を構築し、最後にパーソナルマシンで簡単なゲームをコーディングします。

それは素晴らしいアイデアだと思いますし、すぐに行き詰まるつもりです。この本は驚くほど安価で、コースはMITで教えられていると思います。自分で構築したシステム全体を完全に完全に理解することほど、すばらしいことは想像できません。

リンク:http : //www1.idc.ac.il/tecs/


このリンクは死んでいると思います。誰かがこれにアクセスする他の方法を知っていますか?
Koray Tugay

1
@KorayTugay nand2tetris.org
1

10

私は小規模から始めて、8086組み込み開発キットを購入し、その上でマルチタスクOSを開発しました。カーネルを入手し、ハードウェアレベルでの作業に慣れたら、より困難な作業を行う準備が整います。

VGAディスプレイのDOSクローンを構築することも、かなり難しいことです。詳細はすごいです。:-)

特定のトピック。

コードをコンピューターに配置するにはどうすればよいですか?フロッピーディスクで行うのが最善ですか。ほとんどのコンピューターはUSBスティックからそれを行うことができますか?

BIOSは基本的なブートストラップを行います。


どのようなドライバーが必要ですか?それらを構築するための参照を提案できますか?

直接のCPU /メモリ操作ではないもの。CPUリファレンスマニュアルに直接記載されていないもの。


起動シーケンスの後-それから何ですか?プロテクトモードにするにはどうすればよいですか。

保護モードは起動シーケンスの一部になります。

次に、マルチタスクを開始し、プロセスの開始方法を考え出します。


オペレーティングシステムを使用せずにメモリを管理するにはどうすればよいですか?必要なアドレスだけを使用しますか?初期化は必要ありませんか?

正しい。最終的には、仮想メモリシステムを整理する必要があるでしょう。


私は間違いなく何に遭遇しますか?

デバッグツールがない、IOがない


コマンドラインO / SとグラフィカルなO / Sのどちらにすることができますか?

悲しみと。Windows 3.1とLinux、特にXウィンドウを調べます。


グラフィカルO / Sとは何ですか?たとえば、コマンドライン、フォント、画像を上に配置するにはどうすればよいでしょうか。

Xウィンドウを調べます。


最後のアドバイス:linux / xウィンドウを調べてください。これは完璧ではありませんが、1つのアプローチの理解を提供します。組み込みシステムについても学習します。


すばらしい答えです。すでにLinuxカーネルが手元にあるので、Windows 3.1を確認します。
カーソンマイヤーズ

8

OS開発サイトへの良い参照がたくさんあるので、別のアプローチについて説明します。

ベアメタルからOSを実装するエクスペリエンスが必要な場合は、古いPCよりも優れたハードウェアの選択肢があります。PCアーキテクチャーを使用すると、30年間の設計履歴の興味をそそらない成果物をコーディングするのに膨大な時間を費やすことになります。たとえば、プロジェクトのブートローダー部分だけでも、多くの勇敢なプログラマーを焼き尽くしたことでしょう。

たとえば、ディスクやネットワークからカーネルを読み取るには、1セットのドライバが必要です。次に、プロテクトモードに入るコードが必要になります。その時点で、別のドライバーセットが必要になります。チップをプロテクトモードにするために行う作業のほとんどは、その時点以降は転送できません。別のPCで4年以上実行したい場合、さらに別のドライバーセットが必要になります。

ARMまたはその他の32ビット「組み込み」チップのブートストラップを調べてください。安価な開発ボードが利用可能です、またはあなた自身のものをはんだ付けすることができます!一部には、イーサネットとUSBが組み込まれています。正気で無愛想なアーキテクチャで作業するのがもっと楽しくなり、おそらく再利用可能なスキルが得られると思います。


正確には私が要求したものではありませんが、読書の接線で私を送るための+1
カーソンマイヤーズ

マーシュはあなたに良いアドバイスをしています。x86 / BIOSアーキテクチャの低レベルの詳細は複雑です。これらの詳細に行き詰まり、メモリ管理やプロセススケジューリングなどの大きな問題に集中できなくなる可能性があります。シリアルポートを備えた「よりクリーンな」アーキテクチャを選びましょう。あなたは長い目で見ればもっと幸せになるでしょう。
バリーブラウン

8

何よりも、これを実際のハードウェアで実行したい場合は、プロセッサのマニュアルのコピーが絶対に必要です。インテルのマニュアル(http://www.intel.com/products/processor/manuals/)は非常に貴重です。それらは、モードの切り替え(実/保護)から仮想メモリ管理(そこまで行くことを選択した場合)からシステムコールの作成(ユーザーモードを実行する場合)まで、すべてを網羅します。 最も重要なのは、TSSやセグメントレジスタなど、機能するために設定する必要のある多くの事項を非常に詳細に説明していることです。プロセッサよりも高いレベルの概念に関心があるため、ほとんどのOSテキストでは説明していません。特定の詳細。


また、インテルを通じて紙のコピーを無料で入手できます。
マシューアイセリン


8

MikeOSなどの小さな基本的なオープンソースOSのコードを読んでみてください。

または、次の手順をお勧めします(楽しいはずです)。

  1. 仮想マシンを作成します。すべてのプロセッサ命令を定義して、システムの内外を把握します。キーボード、マウス、画面、オーディオアクセス用にSDLとインターフェースします。頭の中にあるものすべてを一度に収められるように、シンプルにしてください。最先端の仮想マシンである必要はなく、「実際の」コンピューターの機能をエミュレートできる仮想マシンである必要があります。
  2. 仮想マシンのプロセッサ用のアセンブラを記述します。このアセンブラは、仮想マシンの言語で書かれたプログラムである必要はなく、アセンブリ言語をマシンコードに変換できるものである必要があることに注意してください。
  3. 実行形式を定義し、簡単なリンカを記述します。
  4. これで、オペレーティングシステムを作成するためのすべてのパーツが揃いました。アセンブリ言語で記述し、アセンブルします...など..このような複雑なブートローディングプロセスは必要ありません。最初にマシンでOSを実行するだけです。

上記の手順は、単純なOSを作成するのにはちょっとばかげているように見えるかもしれませんが、ちょっと、とても楽しいです。


6

チェックアウト MikeOSをください。その書かれたかなり単純なOSは、(コメントされているように)読み取り可能なアセンブリです。かなりシンプルですが、GUIがあり、いくつかのネットワークとマルチメディアをサポートしています。

編集MenuetOSはグラフィカルです。また、それはまっすぐなasmですが、MikeOSよりも洗練されています


6

あなたには野心的な目標があります。しかし、実行が重要です。

ほとんどの構造化されたアプローチ(教科書や大学のクラス)はプロセスを順を追って説明しますが、選択したプラットフォームの難解な詳細を詳しく説明し、全体像のアイデアに集中できるようにする多くの重要なコードを提供します。プロセススケジューリング、メモリ管理、デッドロック防止、I / Oなど。

私のアドバイスはこれです:あなたの期待を減らし、基本的な質問から始めます。

オペレーティングシステムとは何ですか?

コンピュータサイエンティストは、OSがグラフィカルユーザーインターフェイス、Webブラウザ、またはUSBデバイスを接続する方法、またはユーザーが実際に表示または触れることができるものであると(願わくば)言うことはありません。代わりに、その最も基本的なレベルのOSは、私が前述したものです。これらはすべて、1つの大きな傘、リソース管理に分類されます。

オペレーティングシステムは、コンピューターのハードウェアリソース(メモリ、CPU、周辺機器)を管理するプログラムにすぎません。

これが単純なオペレーティングシステムです。プログラムでは、ユーザーはシリアル接続を使用してプログラムを(16進数またはバイナリで)入力できます。プログラムが入力されると、プログラムが実行されます。プログラムが終了すると、制御がユーザーに戻り、プログラムを再度実行するか、新しいプログラムを入力できます。

64K程度のメモリを搭載した組み込みARMプロセッサなどの「クリーン」アーキテクチャでこれを実行します。ARMの詳細について数日学習した後、これをアセンブリでコーディングすることができます。そして出来上がり!、あなたはあなた自身にオペレーティングシステムを持っています。

OSが行うことになっているすべてのことを行います。

  • ユーザーがOS自体を上書きできないようにすることでメモリを管理します。
  • 実行する単一のプロセスをスケジュールします。
  • 単一のシリアルペリフェラルへのI / Oを処理します。

これにより、最初のビルディングブロックが提供されます。今、あなたには多くの選択肢があります。おそらく、そのうちの1つは、2つのプログラムをメモリにロードして、ユーザーに次に実行するプログラムを決定させることです。

または、ユーザーに1つのプログラムの実行を一時停止させ、別のプログラムに切り替えさせ、一時停止させて、元に戻すこともできます。これは完全に手動ですが、初歩的なマルチタスクです。

選択肢は無制限ですが、どれもあなたが以前持っていたものからの小さな一歩です。

照準を上げすぎないのが楽しい!



4

多くの学校には、あなたが説明することのほとんどを行うOSクラスがあります。私の学校(CMU)はCでOSを教え、カーネル、ファイルシステム、シェルを作成し、ブートローダーのコードが提供されました。

残念ながら、私はこのコース(15-412)の決定的なリソースをWeb上で見つけることができませんでした。それは時間とともに進化しました。しかし、おそらく人々は、ウェブ上に優れたリソースを持っている学校の情報源や課題へのリンクを投稿することができます。


3

あなたはこれを楽しむかもしれません「自分のおもちゃを転がすUNIXクローンOS」という名前のチュートリアルをください。非常に洞察に富んでいて、あなたの道を助けるはずです。

幸運を。


1
そのような詳細なチュートリアルがあることは素晴らしいですが、初心者が常に遭遇する多くのバグがあります。このチュートリアルは、インテルのマニュアルなどを開いて、何をしているのかを考えてみたい場合(つまり、コピーして貼り付けないでください)に最適です
マシューアイセリン

3

A2システム(旧称Oberonシステム)を調べて、盗むことができるアイデアを探します。確かに1人はNiklaus Wirthですが、2人で作成したグラフィカルOSです。1990年頃に最初にリリースされ、その速度は驚くほど優れています。Gutknechtの本があります。


3

低レベルのグラフィックプログラミングについては、これは多くの情報を提供します:http : //www.osdever.net/FreeVGA/home.htm。(これはテキストモードでも非常に興味深いものです。)

私は間違いなく何に遭遇しますか?

PCには不明確なものがたくさんあることに気づくでしょう:x86命令セット自体は複雑であり、ハードウェアに直接アクセスすると、画面上に単一の文字を書き込む方法を理解するまでにかなり時間がかかる場合があります。

フロッピーディスクなどについて心配する必要はありません。ほとんどの場合、BochsやQEmuなどのエミュレータを使用します。


3

Abraham Silberschatzによるオペレーティングシステムの概念を確認することを検討してください。システムプログラミングの概念を理解することは基本的な要件です。OSの linux * BSDとGNU / Linuxの F / OSSカーネルの内部、特に以前のバージョンを確認してください。おそらくもう少し文書化されています。代替テキスト 代替テキスト


1
シルバーシャッツは本当に良いですが、非常に高いレベルです。
ポールネイサン

同意した しかし、それは根本的に不可欠です。Tanenbaumによる最新のオペレーティングシステムに関するドキュメント(前述)
amaterasu 2009


1

BIOSには、画面モードの変更、ピクセルの色の変更、画面へのテキストの書き込みなど、多くの入出力機能が組み込まれているため、非常に簡単です。ただし、ファイルシステムのサポートは含まれていません。これは、OSに組み込む必要がある非常に数少ないものの1つです。

BIOSはハードドライブの最初のセクターをロードし、そこからコードの実行を開始するため、ハードドライブの最初のセクターに最初の命令でOSを配置する必要があります。

このWikipediaの記事では、画面にテキストを書き込んだり、キーボードやその他のキーを受け取ったりするためのBIOS割り込みについて説明します。 https://en.wikipedia.org/wiki/BIOS_interrupt_call

c ++の使用を計画している場合でも、ハードウェアがどのように機能するかを理解することが重要であるため、アセンブリプログラミングについて読むことを強くお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.