問題タブ [systems-programming]
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 - 「execve()」を正常に使用できません
このプログラムの目的は、新しい子プロセスを fork し、コマンド ライン引数を持つプロセスを実行することです。と入力する/bin/ls --help
と、次のエラーが表示されます。
に対する正しい引数は何execve()
ですか?
c - Unixシステムプログラミング-プログラムでファイルを解凍する
私がする必要があるのは、ファイル(.gzまたは.z)を解凍し、最初の行を読み取り、最初に読み取った行に従っていくつかの処理を実行することです。しかし、C標準ライブラリはこれを行う方法を提供していないようです。
プラットフォームに依存しない方法ですか?
java - NACHOS(JAVA版)チュートリアル【セットアップと簡単なサンプル】
Linux で NACHOS Java バージョンをセットアップし、簡単なサンプルを実行する必要があります。簡単なサンプルをセットアップして実行する方法は? いくつかのチュートリアルと、NACHOS を使用したソリューションを使用したコンピューターの割り当てが必要です
c++ - C/C++ でメモリ アドレスに直接書き込む最短のコードは何ですか?
メモリ保護のない組み込みシステム (ARM Cortex-M1、gcc 4.3 でコンパイル) のシステムレベル コードを書いており、メモリ マップド レジスタを直接読み書きする必要があります。これまでのところ、私のコードは次のようになります。
ポインターを使用しない短い方法 (つまり、コードが短い) はありますか? 実際の割り当てコードをこれと同じくらい短く書く方法を探しています (もっと #define を使用しなければならない場合でも問題ありません)。
私がこれまでに試したことは、左辺値に何かを割り当てることができないと不平を言うgccで終わりました...
c - wait() 後のステータスの確認
子プロセスを作成してすぐに終了(_exit())した後、待機してステータスを確認したい。ここで、if/else コンストラクトの「else」ブランチで、WIFSIGNALED も確認する必要があるかどうか疑問に思います。私が理解している限り、待機を実行すると、a) エラーが発生した可能性があります (-1)、子は (exit() または _exit()) によって正常に終了した可能性があります。信号なので、チェックを省略できますよね?
c++ - 別の C++ 関数に直接ジャンプする
小さなアカデミック OS を TriCore から ARM Cortex (Thumb-2 命令セット) に移植しています。スケジューラが機能するためには、スタックやリンク レジスタを変更せずに別の関数に直接 JUMP する必要がある場合があります。
TriCore (またはむしろ tricore-g++) では、このラッパー テンプレート (任意の 3 つの引数関数) が機能します。
これにより、 の代わりにアセンブラ命令J
(別名 JUMP)が生成さCALL
れ、(それ以外の場合は通常の) C++ 関数にジャンプするときに、スタックと CSA は変更されませんsuperDispatch(SchedulerImplementation* obj, Task::Id from, Task::Id to)
。
ここで、ARM Cortex (または、arm-none-linux-gnueabi-g++) で同等の動作が必要です。つまり、 (リンクと交換を伴うB
BRANCH) の代わりに (別名 BRANCH) 命令を生成します。BLX
しかしinterrupt_handler
、arm-g++ には属性がなく、同等の属性が見つかりませんでした。
だから私asm volatile
はasmコードに頼って直接書いてみました:
これまでのところ、少なくとも私の理論では、とても良いです。Thumb-2 では、関数の引数をレジスタ (この場合は r0..r2) で渡す必要があるため、動作するはずです。
しかし、その後リンカーは死ぬ
asmステートメントの閉じ括弧に...そして、どうすればよいかわかりません。OK、私は C++ の専門家ではありません。asm 構文はあまり単純ではありません。arm-g++ を修正__attribute__
するためのヒントは 1 つの方法であり、asm コードを修正するためのヒントは別の方法です。a1..a3
もう1つの方法は、asmステートメントが入力されたときにすでにレジスターにある必要があることをコンパイラーに伝えることr0..r2
です(少し調べましたが、ヒントは見つかりませんでした)。
paging - ページサイズと 4096 に対する比率
メモリの最小ページ (ページサイズ) のサイズが 2 または 1024、4096 で割り切れないシステムはありますか?
3000でも3500でもいいの?
ページサイズが 1024 で割り切れない場合、posix プログラムは壊れますか?
c++ - Boostスレッド固有のストレージに関する質問(boost / thread / tss.hpp)
ブーストスレッドライブラリには、スレッド固有の(ローカル)ストレージの抽象化があります。ソースコードをざっと見てみましたが、TSS機能は、boost :: threadから作成された天気に関係なく、既存のスレッドを使用するアプリケーションで使用できるようです。つまり、特定のコールバックがカーネルに登録されていることを意味します。スレッドまたはプロセスがスコープ外になるときに、TSSオブジェクトのデストラクタを呼び出す可能性のあるコールバック関数をフックします。これらのコールバックを見つけました。
さまざまなWebサーバーのワーカースレッド内にOpenSSLからHMAC_CTXをキャッシュする必要があります(私がやろうとしていることについては、この詳細な質問を参照してください)。そのため、スレッドの存続期間(Web)を制御しません。 -サーバーは行います。したがって、boost::threadによって作成されていないスレッドでTSS機能を使用します。
キャッシングロジックの実装を開始する前に、仮定を検証したかったのですが、ロジックに欠陥はありますか?
multithreading - ポータブルスレッド固有ストレージメカニズムの命名スキームは、どのようにしてスレッド相対一意識別子を生成しますか?
boost / thread / tss.hppがインスタンスであるポータブルスレッド固有のストレージ参照/IDメカニズムには、それ自体に固有のキーを生成する方法が必要です。このキーはスレッドのスコープ内で一意であり、その後、参照するオブジェクトを取得するために使用されます。このメカニズムは、スレッドニュートラルな方法で記述されたコードで使用されます。
ブーストはこの概念の移植可能な例であるため、そのようなメカニズムはどのように具体的に機能しますか?
windows - SysInternal の WinObj デバイス リスト メカニズム
SysInternals の WinObj は、すべてのデバイス オブジェクトを一覧表示できます。
どのようにデバイスを一覧表示できるのだろうか。
私たちが読めるオープンソースはありますか?(またはコードスニペット)
知っておくべき最も重要な機能は何ですか?