問題タブ [operating-system]
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.
linux - Debian/Ubuntuのインストールのクローンを作成する
インストールされているdebian/ubuntuシステム全体のクローンを作成する簡単な方法はありますか?
インストールされているパッケージと可能な限りの設定に関して、同じインストールを行いたいです。
aptitude、apt-get、synapticのオプションを調べましたが、何も見つかりませんでした。
shell - 255 より大きい ExitCodes は可能ですか?
はいの場合、どのオペレーティング システム、シェルなどでしょうか?
次の Java プログラムを考えてみましょう (例として Java を使用しています。オペレーティング システムに関するこの質問にはどの言語でも適しています)。
Linux と bash で実行すると、常に 255 より小さい値が返されます (echo $?
前に実行されたコマンドの終了コードを出力します)。
編集済み:以下の(これまでのところ)回答は、UNIXで何が起こるかを完全に説明しています。私はまだ他のOSについて疑問に思っています。
audio - MP3 オーディオ圧縮ライブラリの入手
オペレーティング システムに実装するために、MP3 ライブラリをどこで見つけることができるかを知りたいです。
windows - Windows が重複してスワッピングしますか?
これは厳密にはプログラミング関連ではなく、OS 構造に関連している可能性があります。
3 GB のメモリを搭載した新品のラップトップで Vista 32 ビットを実行すると、アイドル状態でシステムを実行すると、メモリの約 40% が消費されます。これはそれ自体が法外なことであるという事実を除けば、OSはすべてのプロセスをメモリにうまく収めることができ、ディスクにスワップする必要はありません。
しかし、タスク マネージャーを見ると、常にページ フォールトが発生しているプロセスが表示されます。多くはありませんが、まだです。たとえば、explorer.exe は約 1 秒ごとに 1 つです。
何故ですか?十分な物理メモリがあるにもかかわらず、OS がページをスワップアウトする必要があると感じるのはなぜですか?
operating-system - たとえば、Python で記述できるオペレーティング システムの量はどれくらいですか?
これはかなり理論的な質問ですが..
Python、Ruby、Perl、または Lisp、Haskell などの言語で、オペレーティング システムをどれだけ書くことができますか?
init.d のような多くのものは、スクリプト言語で簡単に実行できるようです。ファイアウォール デバイス OS の 1 つ ( m0n0wall ) は、システム構成 (起動時を含む) に PHP を使用します。そして、「emacs は OS であり、ほとんどが Lisp で書かれている」と主張する人もいるかもしれません..
もちろん、アセンブリ/C でなければならない部分もありますが、通常の .py/rb/.pl/.el/.hk ファイルはどれくらいでしょうか? 最高のパフォーマンスではないかもしれませんが、これまでで最も簡単に変更できる OS になるでしょう...
c - Linux でマイクロステート アカウンティングを使用するにはどうすればよいですか?
Linux でプログラムによってマイクロステート アカウンティング タイマーにアクセスしたいと考えています。質問の最初の部分は、これらがどこで入手できるかということだと思います。カーネルのバージョンとディストリビューションは? どのハードウェア プラットフォームですか? 2 番目の部分は、実際にタイマーにアクセスする方法です。システムコールとは?
これは、マイクロステート アカウンティングについて説明している (やや古い) ページですが、そこに記述されているシステム コールは見つかりませんでした。
perl - システムの電源が入っているかどうかを確認するにはどうすればよいですか?
ネットワーク経由でシステムの電源を入れるスクリプトを書いています。そして、他のホストでいくつかのコマンドを実行する必要があります。システムの電源が入っているかどうかを確認するにはどうすればよいですか?
私のプログラミング言語は Perl で、ターゲット ホストは RHEL5 です。
システムの電源がオンになり、OS がロードされたことを示すカーネル割り込みまたはネットワーク ブート情報はありますか?
[別のシナリオでは] 念のため、マシンの電源を手動でオンにするかどうかも考えていました。電源が入ったと正確に言われているのはいつですか。また、ネットワークコマンドの実行など、ネットワーク関連の操作のためにOSが完全に起動したと想定されるのはいつですか。システムがDHCP上にある場合、リモートシステムはどのようにしてこのマシンを検索しますか[MACアドレスを介して可能だと思います. しかし、私が間違っている場合]。
情報を逃した場合は、お気軽にお尋ねください。タスクを簡単にするための提案がある場合は、それらを表面化してください:)
ありがとうございます
c++ - スピンロックとセマフォ
セマフォとスピンロックの基本的な違いは何ですか?
スピンロックでセマフォを使用するのはいつですか?
operating-system - malloc/free 以外に、プログラムは OS が何かを提供する必要がありますか?
私が取り組んでいる OS 用のカーネル (実際には「コア」と呼んでいますが、基本的には同じです) の設計に取り組んでいます。マルチタスキングやメモリ管理などの基本的なことができなければ、OS 自体の詳細は関係ないので、まずはそこから取り組む必要があります。malloc ルーチンの設計について質問があります。
malloc() はカーネル自体の一部 (私はこれに傾倒しています) またはプログラムの一部になると考えていますが、C 標準ライブラリの独自の実装を作成する必要があります。というわけで、malloc を書きます。この点に関して、私の質問は実際にはかなり単純です。C (または C++) はそのヒープをどのように管理しますか?
私が理論の授業でいつも教えられてきたのは、ヒープは指定されたアドレスから始まり、多くの意味でスタックのように振る舞うメモリの断片であるということです。このようにして、グローバルスコープで宣言された変数が最初にあり、それぞれのスコープで宣言されると、より多くの変数がヒープに「プッシュ」され、スコープ外に出る変数は単にメモリ空間に残されることがわかります。ただし、そのスペースは空きとしてマークされているため、必要に応じてヒープをさらに拡張できます。
私が知る必要があるのは、C がこのように動的に拡大するヒープを実際にどのように処理するのかということです。コンパイルされた C プログラムは、malloc ルーチンへの独自の呼び出しを行い、独自のヒープを処理しますか? それとも、自動的に拡張するスペースを提供する必要がありますか? また、C プログラムはヒープの開始位置をどのように認識していますか?
ああ、同じ概念が他の言語にも当てはまることは知っていますが、私はその言語に最も慣れているので、例を C/C++ にしたいと思います。スタックなど他のことも気にしないようにしたいと思います。このようなことは自分で処理できると思います。
したがって、私の本当の質問は、malloc/free (ページ自体の取得と解放などを処理する) 以外に、プログラムは OS が他に何かを提供する必要があるのでしょうか?
ありがとう!
EDIT mallocルーチン自体の実際の動作よりも、Cがヒープに関連してmallocを使用する方法に興味があります。それが役立つ場合、私はこれを x86 で実行していますが、C はクロス コンパイラであるため、問題にはなりません。^_^
さらに編集:用語が混乱している可能性があることを理解しています。「ヒープ」は、プログラムがグローバル/ローカル変数などを格納する場所であると教えられました。私はアセンブリ プログラミングで「スタック」を扱うことに慣れていましたが、代わりにおそらくそれを意味していることに気付きました。私のちょっとした調査によると、「ヒープ」は、プログラムがそれ自体に割り当てた合計メモリ、または OS が提供したメモリのページの合計数 (および順序) を指すのによく使用されます。
それで、それを念頭に置いて、拡大し続けるスタックにどのように対処すればよいでしょうか? (私の C 理論の授業は軽度の... 欠陥があったようです。)
operating-system - カーネル開発で使用されるスタックサイズ
私はオペレーティングシステムを開発していて、カーネルをプログラミングするのではなく、カーネルを設計しています。このオペレーティングシステムはx86アーキテクチャを対象としており、私のターゲットは最新のコンピューターを対象としています。必要なRAMの推定数は256Mb以上です。
各スレッドのスタックをシステムで実行するのに適したサイズはどれくらいですか?最大長に達した場合にスタックを自動的に拡張できるようにシステムを設計する必要がありますか?
RAMのページが4kまたは4096バイトであることを正しく覚えていれば、それは私にはそれほど多くないように思えます。特に再帰を多く使用する場合は、一度に1000を超えるインテガーをRAMに入れたいと思う時期がはっきりとわかります。さて、本当の解決策は、プログラムがmalloc
独自のメモリリソースを使用して管理することでこれを実行することですが、実際には、これに関するユーザーの意見を知りたいと思います。
4kは、最新のコンピュータープログラムをスタックするのに十分な大きさですか?スタックはそれよりも大きくする必要がありますか?スタックは、あらゆるタイプのサイズに対応するために自動拡張する必要がありますか?私は、実用的な開発者の観点とセキュリティの観点の両方からこれに興味を持っています。
4kはスタックには大きすぎますか?通常のプログラム実行を考えると、特にC ++のクラスの観点からmalloc/new
、関数呼び出しでスローされるデータを最小限に抑えるために、優れたソースコードはクラスの作成時に必要なデータになりがちです。
私がまだ理解していないのは、プロセッサのキャッシュメモリのサイズです。理想的には、スタックは処理を高速化するためにキャッシュに存在すると思いますが、これを実現する必要があるかどうか、またはプロセッサが処理できるかどうかはわかりません。私はテスト目的で通常の退屈な古いRAMを使用することを計画していました。決められない。オプションは何ですか?