タグ付けされた質問 「operating-systems」

オペレーティングシステム(OS)は基本的なソフトウェアであり、そのルールは、リソースと利用可能なハードウェアの中間的なソフトウェア要求、入出力の管理、メモリの割り当て/割り当て解除、ファイルシステムなど、デバイスが実行する必要のある基本的なタスクです。

30
独自のプログラミング言語とそのコンパイラを作成するにはどうすればよいですか[非公開]
私はプログラミングに精通しており、BASIC、FORTRAN、COBOL、LISP、LOGO、Java、C ++、C、MATLAB、Mathematica、Python、Ruby、Perl、JavaScript、アセンブリなどの言語に出会いました。人々がプログラミング言語を作成し、そのためのコンパイラを考案する方法を理解できません。また、Windows、Mac、UNIX、DOSなどのOSを人々がどのように作成するのかも理解できませんでした。私にとって不思議なもう1つのことは、人々がOpenGL、OpenCL、OpenCV、Cocoa、MFCなどのライブラリを作成する方法です。最後に理解できないのは、科学者がマイクロプロセッサ用のアセンブリ言語とアセンブラをどのように考案したかです。私はこれらすべてを本当に学びたいです。私は15歳です。私は常に、バベッジ、チューリング、シャノン、デニスリッチーなどのコンピューター科学者になりたいと思っていました。 私はすでにAhoのCompiler DesignとTanenbaumのOSコンセプトの本を読んでおり、それらはすべてコンセプトとコードを高レベルでしか議論していません。彼らは詳細やニュアンス、そしてコンパイラやオペレーティングシステムの考案方法には触れません。スレッド、セマフォ、プロセス、または解析とは何かを理解するだけでなく、自分で作成できるように具体的な理解が必要です。私は兄にこれについてすべて尋ねました。彼はMITのEECSのSBの学生であり、現実の世界でこれらすべてのものを実際に作成する方法の手がかりを持っていません。彼が知っているのは、皆さんが言及したようなコンパイラー設計とOSの概念(スレッド、同期、並行性、メモリー管理、字句解析、中間コード生成など)の理解だけです

15
Tanenbaum-Torvaldsの議論でTanenbaumが間違っていたのはなぜですか?
私は最近、OSクラスでTanenbaum-Torvaldsの討論会から読書を割り当てられました。討論では、タネンバウムはいくつかの予測を行います。 マイクロカーネルは未来です x86が消滅し、RISCアーキテクチャが市場を支配する (それから5年後)誰もが無料のGNU OSを実行します 議論が起こったとき、私は1歳だったので、歴史的な直観に欠けています。これらの予測がパンアウトされないのはなぜですか?タネンバウムの観点からは、彼らは将来のかなり合理的な予測であるように思えます。何が起こったので、彼らは合格しなかったのですか

12
OSを実行せずにオペレーティングシステムを実行するにはどうすればよいですか?
私は今、本当に興味があります。私はPythonプログラマーであり、この質問に戸惑いました。あなたはOSを書いています。どのように実行しますか?どういうわけか実行する必要があり、その方法は別のOS内ですか? OSにいなくてもアプリケーションを実行するにはどうすればよいですか?コンピューターに、たとえばCを実行し、実行するOSがない場合にこれらのコマンドを画面に対して実行するように指示するにはどうすればよいですか? UNIXカーネルと関係がありますか?もしそうなら、Unixカーネルとは何ですか、それともカーネル全般ですか? OSはそれよりも複雑なはずですが、どのように機能しますか?

4
飛行機ではどのオペレーティングシステムが使用され、どのプログラミング言語で開発されていますか?[閉まっている]
民間航空機(ボーイングやエアバスなど)で使用されているオペレーティングシステムが何かを知っている人がいるのだろうかと思っていました。 また、(推奨)リアルタイムプログラミング言語とは何ですか?私はエイダがボーイングで使用されていると聞いたので、私の質問は-なぜエイダですか?ボーイングがこの言語を選択しなければならなかった基準は何ですか?(ちょうどリフトオフでガベージコレクターが起動する場合、Javaは最適な選択肢ではないと思います)。

12
「ソフトウェアはハードウェアを置き換えることができます」というフレーズの意味は何ですか?
ハードウェア/ソフトウェアインターフェースおよびオペレーティングシステムに関する初心者向けコースでは、多くの場合、ハードウェアの一部をソフトウェアに、またはその逆に置き換える方が良いかどうかというトピックが出てきます。接続できません。

11
ソフトウェアOS固有の理由
特定のオペレーティングシステム用のプログラミング言語を使用して作成されたソフトウェアがそれらでのみ動作する理由の技術的な詳細を判断しようとしています。 バイナリは特定のプロセッサに固有であり、理解しているプロセッサ固有のマシン言語と、異なるプロセッサ間で異なる命令セットがあるため、バイナリは特定のプロセッサに固有であることを理解しています。しかし、オペレーティングシステムの特異性はどこから来るのでしょうか?以前はOSが提供するAPIであると想定していましたが、次の本でこの図を見ました。 オペレーティングシステム-内部構造と設計原則7th ed-W. Stallings(Pearson、2012) ご覧のとおり、APIはオペレーティングシステムの一部として示されていません。 たとえば、次のコードを使用してCで簡単なプログラムを作成する場合: #include<stdio.h> main() { printf("Hello World"); } コンパイラはこれをコンパイルするときにOS固有のことを何ですか?

10
なぜ高レベル言語ベースのOSがないのですか?低レベル言語はより効率的ですか?
予想外のことをせずに、この可能性を検討してほしい。現在、ほとんどのOSはかなり低レベルの言語(主にC / C ++)に基づいています。Androidなどの新しい言語でもJNIを使​​用しており、基礎となる実装はCで行われています 実際、(これは個人的な観察です)Cで書かれた多くのプログラムは、高レベルのものよりもはるかに高速に実行されます(例:Transmission(Ubuntuのbittorrentクライアント)は、Vuze(Java)またはDeluge(Python)よりもはるかに高速です)。PyPyは例外ですが、PythonコンパイラでさえCで書かれています。 これには特別な理由がありますか?優れた「OOP」の概念を備えたいわゆる「高レベル言語」がすべて、堅牢なOSの作成に使用できないのはなぜですか? 基本的に2つの質問があります。 なぜ低レベル言語で記述されたアプリケーションは、HLLの対応言語よりも効率的ですか?低レベル言語は、低レベルであり、マシンコードへの翻訳が簡単であるという単純な理由により、パフォーマンスが向上しますか? 完全に高レベル言語に基づいた本格的なOSがないのはなぜですか?

8
なぜセグメンテーションではないのですか?
私はオペレーティングシステムとx86アーキテクチャを勉強しています。セグメンテーションとページングについて読んでいる間、現代のOSがメモリ管理をどのように処理するのか自然に興味がありました。私がLinuxや他のほとんどのオペレーティングシステムで見つけたものから、ページングを優先してセグメンテーションを本質的に回避しています。私が見つけたこの理由のいくつかは、シンプルさと移植性でした。 セグメンテーション(x86またはそれ以外)の実用的な用途は何ですか?それを使用する堅牢なオペレーティングシステムが表示されるか、ページングベースのシステムが引き続き使用されます。 今、私はこれがロードされた質問であることを知っていますが、新しく開発されたオペレーティングシステムでセグメンテーションがどのように処理されるか興味があります。ページングを支持することは、「セグメント化された」アプローチを誰も考慮しないほど理にかなっていますか?もしそうなら、なぜですか? そして、「排除」セグメンテーションと言うとき、Linuxは必要な範囲でのみ使用することを意味します。ユーザーおよびカーネルコード/データセグメント用のセグメントは4つだけです。Intelのドキュメントを読みながら、セグメンテーションはより堅牢なソリューションを念頭に置いて設計されていると感じました。それから、x86がどれほど複雑になるかを何度も言われました。 Linux Torvaldの元々のLinuxの「アナウンスメント」にリンクした後、この興味深い逸話を見つけました。彼はこれについて、いくつかの投稿を後に述べました。 簡単に言えば、移植は不可能だと思います。ほとんどはCで書かれていますが、ほとんどの人は私がCを書いているものとは呼びません。これは、386について教えてくれるプロジェクトでもあったので、386の考えられるすべての機能を使用します。すでに述べたように、 、ページング(まだディスクへではない)とセグメンテーションの両方。本当に386に依存するのはセグメンテーションです(すべてのタスクにはコードとデータ用の64Mbセグメントがあります-4Gbで最大64タスク。64Mb/タスク以上が必要な人は誰でもCookieが強い)。 私自身がx86を試した結果、この質問をするようになったと思います。LinusにはStackOverflowがなかったため、それを実装して試してみました。

5
Windows / Linuxがリレーショナルデータベース(RDBMS)を使用しないのはなぜですか?
Windows / Linuxがリレーショナルデータベース(RDBMS)を使用しないのはなぜですか? ファイルシステムを使用してすべてのデータを保存していることは知っていますが、Webサイト/ Webアプリで使用しているようなデータベースを使用する方が効率的だと思いませんか? ストレージ用のデータベースを介したファイルシステムの使用について詳しく説明してください。 これは、テキストファイルからのデータの解析よりもデータベースの使用を優先すべき場合の重複ではありませんか?私はオペレーティングシステムのコンテキストのみの観点から話しているが、その質問は一般化されている。

3
カーネルモードWebサーバー:巧妙な最適化またはセキュリティの悪夢?
私は、1人のユーザーが2011年からリンクを投稿し、IISが他のほとんどの(* nix)Webサーバーよりもはるかに速いことを説明するHacker Newsスレッドを読んでいました。別のユーザーは、HTTP.sysというカーネルモジュールを持つことでIISがその利点を得ると説明します。私の知る限り、2015年に他のほとんどの一般的なWebサーバーはこれを行いません。 カーネルモードのWebサーバーを作成したくありません。セキュリティエクスプロイト(低い保護リングでの実行はそれほど深刻ではない)から解放されると自分を信頼することはできません。 ソフトウェアエンジニアの観点から(Webサーバーの顧客とは対照的に)、カーネルモードで実行するのは賢明なパフォーマンス決定ですか?カーネルモードサーバーを消費者の純利益にするという点まで、アプリケーション開発でセキュリティの懸念を緩和できますか?

3
クロスプラットフォームアプリケーションで「脂肪バイナリ」がより広く使用されないのはなぜですか?
私の知る限り、いわゆる「ファットバイナリ」-複数のシステムのマシンコードを含む実行可能ファイル-は実際にはApple PCでのみ使用されていますが、 PowerPCからx86。 最近では多くのソフトウェアがクロスプラットフォームであり、単一のファットバイナリを作成することは、オペレーティングシステムとアーキテクチャの組み合わせごとに何十もの異なるダウンロードを追跡するよりも多くの点で簡単になるようです。彼らが望むものに顧客に。 たとえば、なぜこのアプローチが受け入れられなかったのかについて、多くの推測を思いつくことができます。 マルチOSバイナリを実行不可能にするクロスコンパイルツールの欠如 とにかく各OSでコードをテストする必要があるため、各OSにネイティブにコンパイルできるシステムが既に必要です。 どうやら32ビットプログラムは既に64ビットマシンで「機能する」 動的リンクはOSごとに異なるため、「脂肪アプリケーション」が動作しても「脂肪ライブラリ」は動作しない場合があります しかし、私は常にこれらのOS固有およびアーキテクチャ固有の詳細をすべて隠すライブラリまたはフレームワークを使用しているため、そのどれが本当に真実であるか、またはさらに多くの問題があるかどうかわからない約。それでは、マルチアーキテクチャソフトウェアやマルチOSソフトウェアの作成にファットバイナリが一般に使用されない実際の理由は何ですか?(アップル以外)

5
システム上のすべての空きスペースを割り当てることにより、別のプログラムからメモリを読み取ることは可能ですか?
理論的には、システム上のすべての未使用メモリを割り当て、他のアプリケーションが不要になったメモリを解放するにつれてますます多くのメモリを要求し続けるプログラムをビルドすると、最近リリースされたメモリを別のアプリケーションから読み取ることができるでしょうか? ?または、これは何らかの形で最新のオペレーティングシステムによって保護されていますか? これには実用的なアプリケーションはありません。ただ興味があります。実生活で「利用可能なすべてのメモリ」を割り当てることには、いくつかの問題があることを理解しています。 編集:明確にするために、私は特に「解放された」メモリについて尋ねています。現在別のアプリケーションによって割り当てられているメモリにはアクセスしていません。

8
UnixとLinuxの設計およびその他の面で基本的な違いはありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 7年前に閉鎖されました。 私はこの文章を読み続けます: LinuxはUnixライクなシステムですが、Unixではありません。 両者の本当の違いはわかりません。LinuxはUnixから多くのアイデアを得ており、2つのライセンスは異なることを知っています。それとは別に、私はそれらのいずれかの専門家ではないので、デザインまたは他の重要な側面に基本的な違いがあるかどうかを知りたいです。

3
実際には、開発者はDBMSとシステムも管理していますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 私は本当に他にどこに尋ねるべきかわかりません。だからここに行く。 私はERPソフトウェアとウェブサイトを作っている非常に小さな会社で働いています。 + 10年の経験を持つ1人の開発者。 + 3年の経験を持つ2人の開発者。 + 1年の経験を持つ3人の開発者。 それでおしまい。 チーム、DBA、システム管理者はいません。 ウェブ開発の専門知識を持っている人はここにはいないので、たまたまウェブ開発を担当しました。しかし、私はわずか3年の経験しかありません!開発者として! 小さな会社では、いろいろなことをするように頼まれますが、システム管理者、データベースアーキテクチャ、ソフトウェアの設計と開発をしなければならないとしたら、それは多すぎますか?それに、さまざまなプラットフォームですべてを行うように求められます。 現在、JSP、ASP、MSSQL、MySQL、Oracle、Windows Server、およびLinuxを使用しています。 データベースでは、クエリの作成からバックアップとリカバリまでを行っています。 サーバーのセットアップ、システムクラッシュの回復、DBとサーバーの移行も行います。 豪華なHTML、Javascript、CSS :) 私が担当しているプロジェクトの数:5 私はそれらのすべての専門家ではありません! すべてを完了するには、インターネットを検索し、チュートリアルを読んでStackOverflowで質問する必要があります! だから私はあなたに尋ねます、これは正常ですか? これは通常の習慣ですか? どの小さな会社に行っても同じ状況に直面しますか? 私は韓国で働いています。あなたの国ではどうですか? PS ご意見ありがとうございます。私はあなたのすべてが私に異なる方法でそれを見るのを助けたのであなたのすべてに賛成するつもりでしたが、明らかにあなたは賛成するために15の評判が必要です:(

8
学習に十分なシンプルなOSはありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 オペレーティングシステムが舞台裏でどのように機能するかを本当に理解したいと思います。しかし、そこにあるほとんどのオープンソースOSのカーネルは、フルタイムのプログラマーが学習するのであっても、学習目的には複雑すぎると思います。学習目的のためだけに作られた「シンプルな」OSはありますか?

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