問題タブ [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.

0 投票する
3 に答える
2828 参照

c - 「execve()」を正常に使用できません

このプログラムの目的は、新しい子プロセスを fork し、コマンド ライン引数を持つプロセスを実行することです。と入力する/bin/ls --helpと、次のエラーが表示されます。

に対する正しい引数は何execve()ですか?

0 投票する
3 に答える
1301 参照

c - Unixシステムプログラミング-プログラムでファイルを解凍する

私がする必要があるのは、ファイル(.gzまたは.z)を解凍し、最初の行を読み取り、最初に読み取った行に従っていくつかの処理を実行することです。しかし、C標準ライブラリはこれを行う方法を提供していないようです。

プラットフォームに依存しない方法ですか?

0 投票する
2 に答える
5088 参照

java - NACHOS(JAVA版)チュートリアル【セットアップと簡単なサンプル】

Linux で NACHOS Java バージョンをセットアップし、簡単なサンプルを実行する必要があります。簡単なサンプルをセットアップして実行する方法は? いくつかのチュートリアルと、NACHOS を使用したソリューションを使用したコンピューターの割り当てが必要です

0 投票する
6 に答える
24012 参照

c++ - C/C++ でメモリ アドレスに直接書き込む最短のコードは何ですか?

メモリ保護のない組み込みシステム (ARM Cortex-M1、gcc 4.3 でコンパイル) のシステムレベル コードを書いており、メモリ マップド レジスタを直接読み書きする必要があります。これまでのところ、私のコードは次のようになります。

ポインターを使用しない短い方法 (つまり、コードが短い) はありますか? 実際の割り当てコードをこれと同じくらい短く書く方法を探しています (もっと #define を使用しなければならない場合でも問題ありません)。

私がこれまでに試したことは、左辺値に何かを割り当てることができないと不平を言うgccで終わりました...

0 投票する
3 に答える
348 参照

c - wait() 後のステータスの確認

子プロセスを作成してすぐに終了(_exit())した後、待機してステータスを確認したい。ここで、if/else コンストラクトの「else」ブランチで、WIFSIGNALED も確認する必要があるかどうか疑問に思います。私が理解している限り、待機を実行すると、a) エラーが発生した可能性があります (-1)、子は (exit() または _exit()) によって正常に終了した可能性があります。信号なので、チェックを省略できますよね?

0 投票する
2 に答える
2477 参照

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++) で同等の動作が必要です。つまり、 (リンクと交換を伴うBBRANCH) の代わりに (別名 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です(少し調べましたが、ヒントは見つかりませんでした)。

0 投票する
1 に答える
273 参照

paging - ページサイズと 4096 に対する比率

メモリの最小ページ (ページサイズ) のサイズが 2 または 1024、4096 で割り切れないシステムはありますか?

3000でも3500でもいいの?

ページサイズが 1024 で割り切れない場合、posix プログラムは壊れますか?

0 投票する
2 に答える
901 参照

c++ - Boostスレッド固有のストレージに関する質問(boost / thread / tss.hpp)

ブーストスレッドライブラリには、スレッド固有の(ローカル)ストレージの抽象化があります。ソースコードをざっと見てみましたが、TSS機能は、boost :: threadから作成された天気に関係なく、既存のスレッドを使用するアプリケーションで使用できるようです。つまり、特定のコールバックがカーネルに登録されていることを意味します。スレッドまたはプロセスがスコープ外になるときに、TSSオブジェクトのデストラクタを呼び出す可能性のあるコールバック関数をフックします。これらのコールバックを見つけました。

さまざまなWebサーバーのワーカースレッド内にOpenSSLからHMAC_CTXをキャッシュする必要があります(私がやろうとしていることについては、この詳細な質問を参照してください)。そのため、スレッドの存続期間(Web)を制御しません。 -サーバーは行います。したがって、boost::threadによって作成されていないスレッドでTSS機能を使用します。

キャッシングロジックの実装を開始する前に、仮定を検証したかったのですが、ロジックに欠陥はありますか?

0 投票する
1 に答える
280 参照

multithreading - ポータブルスレッド固有ストレージメカニズムの命名スキームは、どのようにしてスレッド相対一意識別子を生成しますか?

boost / thread / tss.hppがインスタンスであるポータブルスレッド固有のストレージ参照/IDメカニズムには、それ自体に固有のキーを生成する方法が必要ですこのキーはスレッドのスコープ内で一意であり、その後、参照するオブジェクトを取得するために使用されます。このメカニズムは、スレッドニュートラルな方法で記述されたコードで使用されます。

ブーストはこの概念の移植可能な例であるため、そのようなメカニズムはどのように具体的に機能しますか?

0 投票する
6 に答える
4027 参照

windows - SysInternal の WinObj デバイス リスト メカニズム

SysInternals の WinObj は、すべてのデバイス オブジェクトを一覧表示できます。

どのようにデバイスを一覧表示できるのだろうか。

私たちが読めるオープンソースはありますか?(またはコードスニペット)

知っておくべき最も重要な機能は何ですか?