問題タブ [interrupt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 割り込み処理モジュールをどのようにテストしますか?
組み込みプロセッサの割り込みコントローラハードウェアを制御する割り込み処理モジュールがあります。今、私はそれにさらにテストを追加したいと思います。現在、テストは、ISR内から2つのソフトウェア割り込みを作成することによって割り込みのネストが機能するかどうかのみをテストします。1つは優先度が低く、もう1つは優先度が高くなります。このモジュールをさらにテストするにはどうすればよいですか?
operating-system - INT21hとは?
この質問に触発されて
GDB を強制的に逆アセンブルするにはどうすればよいですか?
INT 21hをコンセプトに考えてみました。さて、私は内部構造について非常にさびた知識を持っていますが、詳細はそれほど多くありません。C64では通常の割り込みとマスク不可能な割り込みがあったことを覚えていますが、私の知識はここで終わりです。手がかりを教えてください。それはDOS関連の戦略ですか?
algorithm - ISR - 最大データ レート
デバイスの割り込みサービス ルーチン (ISR) は、デバイス割り込みごとにデバイスから 4 バイトのデータを転送します。各割り込みで、ISR は 90 の命令を実行し、各命令の実行には 2 クロック サイクルかかります。CPU は、ISR が命令の実行を開始する前に、割り込み要求に応答するのに 20 クロック サイクルかかります。CPU クロック周波数が 100MHz の場合、このデバイスから入力できる最大データ レート (ビット/秒) を計算します。
解決方法についてのヘルプをいただければ幸いです。
私が考えていること - 90 命令 x 2 サイクル = 180 20 サイクルの遅延 = 1 つの割り込みあたり 200 サイクル
つまり、100mhz = 1 億サイクル = 1 億/200 = 500,000 サイクルでそれぞれ 4 バイトなので、200 万バイトまたは 1600 万ビット
私はそれが正しいと思いますが、誰かが確認できると100%確信しているわけではありませんか? 乾杯/
windows - カーネルとシステムのWindowsプロセス
カーネルとユーザーモードのWindowsプロセスに関連するいくつかの質問があります。
hello worldアプリケーションと、新しいシステムコールfoo()を公開するhello worldドライバーがある場合、カーネルモードになったら何ができるか、何ができないかについて興味があります。
手始めに、新しいhello worldアプリを作成すると、新しいプロセスが与えられます。つまり、独自のユーザーモードVMスペースがあります(シンプルな32ビットウィンドウを維持しましょう)。だから私は「所有」している2GBのスペースを持っているので、心が満足するまで突いて覗くことができます。しかし、私は自分のプロセスに縛られています。私は(共有メモリをまだこれに持ち込まないように)他の人のメモリに触れることはできません。
このhelloworldドライバーを作成し、ユーザーアプリから呼び出すと、私(ドライバーコード)はカーネルモードになります。
最初の説明/質問:私はまだユーザーモードアプリと同じプロセスにいますよね?まだ同じPIDを持っていますか?
メモリの質問:メモリはVMとしてプロセスに提示されます。つまり、1 GBのRAMがある場合でも、4 GBのメモリにアクセスできます(2GBのユーザー/2GBのカーネル-サーバー上のスイッチの詳細や詳細は気にしないでください。ここでの一般的な仮定)。ユーザープロセスとして、カーネルモードのメモリアドレスを確認することはできませんが、ユーザースペースに対してやりたいことは何でもできますよね?
ドライバーコードからHelloWorldドライバーを呼び出した場合でも、ユーザーモードメモリの同じビューがありますか?しかし、今ではカーネルモードのメモリにもアクセスできますか?
このカーネルモードのメモリは共有されていますか(私自身のプロセスのコピーであるユーザーモードとは異なります)?つまり、ドライバーを作成することは、OSである単一のプロセス用のスレッド化されたアプリケーションを作成することに似ています(スケジュールは別として?)
次の問題。ドライバーとして、実行しているプロセスを変更できますか?たとえば、別のアプリ(たとえば、ユーザーモードのウェブサーバー)を知っていて、そのプロセスのVMをロードし、そのプロセスの命令ポインターを変更したり、スタックしたり、プロセスに別のコードをロードしたりしてから、自分のアプリに切り替えますか?(私はここで悪意のあることを何もしようとはしていません。カーネルモードであることが実際に何を意味するのか興味があります)?
また、カーネルモードになったら、OSがプリエンプトしないようにすることはできますか?(Windowsでは)これを行うためにIRQLレベルを設定できると思いますが、Solomonsの本(Windowsの内部...)を読んだ後でも、これを完全には理解していません。IRQL / DPCに直接関連する別の質問をしますが、今のところ、カーネルドライバーがIRQLをHighに設定してシステムを引き継ぐ能力を持っているかどうかを知りたいと思います。
今後さらに増えるが、これらの質問への回答が役立つだろう。
communication - 割り込み通信について
私たちはシンプルなアーキテクチャを持っています:
- メインチップ (arm9 ベース)
- PICコントローラー
PIC は、割り込みベースの I2C 通信プロトコルを介して ARM と通信し、データを転送します。割り込み内で、I2C 層 (バス) からデータを読み取るタスクに信号を送ります。
データが限られている場合、通常、データを読み取って上位層に送信するのにそれほど問題はありません。このデータが非常に大きい場合、割り込みは長時間拘束されます。
最初の質問は次のとおりです。
私は正しいですか?
私が正しい場合、どうすれば同じことを避けることができますか? ...または、別の解決策はありますか?
php - PHP 内の cp コマンドで部分的なコピーが作成されました
ステージングから本番環境に変更をプッシュするのに役立つ小さな PHP スクリプトを作成しました。同じサーバーでステージングと本番の両方を実行しているため、スクリプトはステージング フォルダーから本番フォルダーに変更をコピーします。
これは今日まで正常に機能していましたが、ファイルが部分的にしかコピーされずにダウンタイムが発生したというインスタンスがいくつかありました。コピー中のファイルを使用して Web ページにアクセスしているユーザーが、cp コマンドの中断と部分的なファイル コピーにつながったのではないかと考えています。アイデアや解決策はありますか?
コピーコマンドは基本的に次のとおりです。
サーバーは基本的な LAMP スタックで、Apache 2、PHP 5、MySQL 5、および CentOS 5 を使用しています。
operating-system - SMPシステムでの割り込み処理
割り込みは固定CPUに割り当てられていますか(常に同じCPUによって処理されます)?
私の質問を文脈に当てはめるには:
差出人:http : //msdn.microsoft.com/en-us/library/ms795060.aspx
共有領域を保護するスピンロックのIRQLは、デバイスが割り込むDIRQLと同じです。クリティカルセクションルーチンがスピンロックを保持し、DIRQLの共有領域にアクセスする限り、ISRはユニプロセッサまたはSMPマシンのいずれかで実行できません。
CPUのIRQLは割り込みIRQL以上であるため、ロックが解除されるまで割り込みはCPUによって処理されないため、ユニプロセッサマシンではこれは理にかなっています。ただし、SMPマシンでは、割り込みが他のCPU(ロックを所有しているCPUではない)によって処理され、データが破損するのを防ぐにはどうすればよいでしょうか...?
assembly - ハードウェアとソフトウェアの割り込みを無効にする
ASM/C/C++ プログラムですべての割り込みを無効にして、プロセッサを完全に制御することはできますか?
はいの場合 -> どうやって?
そうでない場合 -> 「アトミック」オペレーション システム コールはどのように機能しますか (たとえば、クリティカル セクションに入る)。
ご協力いただきありがとうございます!
windows - Windows 割り込みコンテキスト
Windowsでドライバ開発を行っています(Interval Zeroからリアルタイム拡張RTXで拡張)
RTX のドキュメントには何も記載されていませんが、コードの現在の場所が割り込みコンテキスト内から呼び出されているかどうかを確認するために使用できる関数はありますか?
multithreading - このスレッドは安全ですか? (ミューテックス/セマフォなしの共有データ)
したがって、これは非常に特殊な質問です。
シングル CPU コアの組み込みシステムを使用しています。
1 つのメイン スレッドと 1 つの割り込みがあります。これらは 32 ビットの float を共有します。割り込みがフロートを書き込み、メインスレッドがそれを読み取ります。読み取りと書き込みは同期されません。
プロセッサのドキュメントには、32 ビットの読み取りは 1 サイクルの操作であると記載されています。
メインスレッドが破損した値を読み取るリスクがないという私の評価は正しいですか? それとも他の要因がありますか?