タグ付けされた質問 「kernel」

コンピューティングでは、カーネルはソフトウェアからの入出力要求を管理し、それらを中央処理装置およびコンピューターの他の電子コンポーネントのデータ処理命令に変換するコンピュータープログラムです。カーネルは、現代のコンピューターのオペレーティングシステムの基本的な部分です。このタグは、オペレーティングシステムカーネルのコンテキストで実行されるコードに関する一般的な質問用です。

28
オペレーティングシステムの開発を始めるためのリソースにはどのようなものがありますか?[閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新することがありますので、Stack Overflowのトピックと。 5年前休業。 私が常にやりたかったことの1つは、独自のオペレーティングシステムを開発することです(LinuxやWindowsのように必ずしも派手ではありませんが、既に実行した単純なブートローダーより優れています)。 簡単な「Hello World」OSの作成を過去のものにするリソース/ガイドを見つけるのに苦労しています。 多くの人がおそらくLinuxやBSDを検討することを勧めるでしょう。しかし、そのようなシステムのコードベースは(おそらく)非常に大きいため、どこから始めればよいかわかりません。 助言がありますか? 更新:Googleを介してこの投稿にアクセスした人が簡単に利用できるように、ここにいくつかのOS開発リソースがあります。 独自のオペレーティングシステムを作成する(Adamに感謝) Linux From Scratch(ありがとうJohn) SharpOS(C#オペレーティングシステム)(lomaxxに感謝) Minix3およびMinix2(ありがとうMike) OS Dev Wikiとフォーラム(Steveに感謝) BonaFide(ありがとうSteve) ふすま(スティーブに感謝) 自分のおもちゃのUNIXクローンOSを作ろう(Steveに感謝) Broken Thorn OS開発シリーズ その他のリソース: MikeOSという素晴らしいリソースを見つけました。「MikeOSはシンプルなOSがどのように機能するかを示す学習ツールです。BIOSアクセスに16ビットのリアルモードを使用するため、複雑なドライバーを必要としません。」 2008年11月14日更新 Freebyteのガイド... OSKitやExOSライブラリなどのキットにリンクするフリーおよび非フリーのオペレーティングシステムにいくつかのリソースを見つけました。これらは、OS開発の開始に非常に役立つようです。 2009年2月23日更新 リック東京はこの質問でnanoosを推薦しました。NanoosはC ++で書かれたOSです。 2009年3月9日更新 Dinahは、意欲的なOS開発者に関するいくつかの有用なスタックオーバーフローの議論を提供しました。カスタムオペレーティングシステムの作成における障害は、OSの開発中に遭遇する可能性のある落とし穴について議論し、OS開発はより一般的な議論です。 2009年7月9日更新 LBは、OS開発を学ぶ学生向けに設計された教育用OS 、Pintos Projectへのリンクを提供しました。 2009年7月27日更新(引き続き強力に!) 23の講義を取り上げたバークレーのオンラインOSコースに偶然出会いました。 TOMOSはのフォークですMikeOS少しメモリマネージャとマウスのサポートが含まれています。MikeOSとして、それは教育プロジェクトになるように設計されています。NASMアセンブラーで書かれています。 2009年8月4日更新 スライドとその他の資料が、上記のバークレーのオンライン講義に沿っているのがわかりました。 2009年8月23日更新 stackoverflowでosdevとタグ付けされたすべての質問 OS / 161はcで記述されたアカデミックOSであり、シミュレートされたハードウェアで実行されます。このOSはナチョスで似ています。Novelocrat、ありがとう! …


11
OSカーネルとは?オペレーティングシステムとどう違うのですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善したいですか? Stack Overflowのトピックとなるように質問を更新します。 7年前休業。 この質問を改善する カーネルとオペレーティングシステムの違いを理解できません。両者に違いはありません。カーネルはオペレーティングシステムですか?


4
cscopeまたはctagsを選択する理由 [閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 10か月前に閉鎖。 この質問を改善する 私は主にエディターとしてvim / gvimを使用しており、カーネルソースの調査にlxr(Linuxクロスリファレンス)とcscopeまたはctagsの組み合わせを使用することを検討しています。ただし、cscopeもctagsも使用したことがないので、vimをプライマリエディタとして使用することを考慮して、なぜ一方を他方よりも選択するのかについて聞きたいと思います。
130 vim  kernel  ctags  cscope 



6
__gxx_personality_v0の目的は何ですか?
これはOS開発サイトからの中古の質問ですが、どこにもまともな説明が見つからなかったので、興味津々でした。 gccを使用して独立したC ++プログラムをコンパイルおよびリンクすると、次のようなリンカーエラーが発生することがあります。 out/kernel.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0' これは明らかに、このシンボルがlibstdc ++で定義されているためです。これは、独立した環境にはありません。問題を修正するには、このシンボルをどこかに定義する必要があります。 void *__gxx_personality_v0; どちらがいいですか、魔法のように機能するものが好きではありません...問題は、このシンボルの目的は何ですか?
103 c++  gcc  linker  kernel 

1
C集計初期化子で[N…M]はどういう意味ですか?
sys.c行123 から: void *sys_call_table[__NR_syscalls] = { [0 ... __NR_syscalls-1] = sys_ni_syscall, #include <asm/unistd.h> }; sys_call_table配列への一般的なポインタであることがわかります。ただし、表記は次のとおりです。 [0 ... __NR_syscalls-1] とは...? 編集: 私はここに別のCのトリックを学んだ:#include <asm/unistd.h>される前処理し、その内容に置き換えるとに割り当てられています[0 ... _NR_syscalls-1]。
101 c  linux  kernel 

3
オペレーティングシステムとカーネルの違いは何ですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? Stack Overflowのトピックとなるように質問を更新します。 7年前休業。 この質問を改善する オペレーティングシステムとカーネルの違いがわかりません。誰かがそれを説明できますか?

3
新しいLinuxカーネルでは、コンテキストの切り替えが非常に遅くなります
サーバーのOSをUbuntu 10.04 LTSからUbuntu 12.04 LTSにアップグレードする予定です。残念ながら、実行可能になったスレッドを実行するための待ち時間は、2.6カーネルから3.2カーネルに大幅に増加したようです。実際、私たちが得ている待ち時間の数値は信じがたいものです。 テストについてより具体的に説明します。2つのスレッドを実行するプログラムがあります。最初のスレッドは現在の時刻(RDTSCを使用したティック単位)を取得し、1秒に1回条件変数を通知します。2番目のスレッドは、条件変数で待機し、シグナルが送られると起動します。次に、現在の時刻を取得します(RDTSCを使用したティック単位)。2番目のスレッドの時間と最初のスレッドの時間の差が計算され、コンソールに表示されます。この後、2番目のスレッドは条件変数をもう一度待機します。約2秒後、最初のスレッドによって再度シグナルが送信されます。 つまり、結果として、1秒に1回、条件変数のレイテンシ測定を介してスレッド間通信を取得します。 カーネル2.6.32では、この待ち時間は2.8〜3.5 us程度であり、これは妥当です。カーネル3.2.0では、このレイテンシは40〜100 us程度に増加しています。2つのホスト間のハードウェアの違いを除外しました。それらは同一のハードウェアで動作します(ハイパースレッディング、スピードステップ、およびすべてのC状態がオフの状態で3.6 GHzで動作するデュアルソケットX5687 {Westmere-EP}プロセッサー)。テストアプリは、同じソケットの独立した物理コアで実行するようにスレッドのアフィニティを変更します(つまり、最初のスレッドはCore 0で実行され、2番目のスレッドはCore 1で実行されます)。したがって、スレッドのバウンスはありません。コアまたはソケット間のバウンス/通信。 2つのホストの唯一の違いは、1つはカーネル2.6.32-28(高速コンテキストスイッチボックス)でUbuntu 10.04 LTSを実行しており、もう1つはカーネル3.2.0-23(低速コンテキスト)で最新のUbuntu 12.04 LTSを実行していることです。スイッチボックス)。BIOS設定とハードウェアはすべて同じです。 スレッドの実行をスケジュールするのにかかる時間のこのとんでもない速度低下を説明できるカーネルの変更はありましたか? 更新: ホストとLinuxビルドでテストを実行したい場合は、閲覧用のコードをペーストビンに投稿しました。コンパイル: g++ -O3 -o test_latency test_latency.cpp -lpthread 実行(少なくともデュアルコアボックスがあると仮定): ./test_latency 0 1 # Thread 1 on Core 0 and Thread 2 on Core 1 更新2:カーネルパラメータの検索、カーネルの変更に関する投稿、および個人的な調査の結果、問題が何であるかがわかり、この質問に対する回答として解決策を投稿しました。

8
Linuxプロセスの状態
Linuxでは、ディスクからブロックを読み取る必要がある場合、プロセスの状態はどうなりますか?ブロックされていますか?もしそうなら、実行する別のプロセスはどのように選択されますか?
89 linux  process  kernel  cpu  states 

2
vdsoとvsyscallとは何ですか?
やった sudo cat /proc/1/maps -vv 出力を理解しようとしています。予想どおり、多くの共有ライブラリがメモリマッピングセグメントにマッピングされているのがわかります。 7f3c00137000-7f3c00179000 r-xp 00000000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00179000-7f3c00379000 ---p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00379000-7f3c0037a000 r--p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c0037a000-7f3c0037b000 rw-p 00043000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c0037b000-7f3c00383000 r-xp 00000000 08:01 21237216 /lib/x86_64-linux-gnu/libnih-dbus.so.1.0.0 7f3c00383000-7f3c00583000 ---p 00008000 08:01 21237216 /lib/x86_64-linux-gnu/libnih-dbus.so.1.0.0 7f3c00583000-7f3c00584000 r--p 00008000 08:01 21237216 /lib/x86_64-linux-gnu/libnih-dbus.so.1.0.0 7f3c00584000-7f3c00585000 rw-p …
89 c  linux  linux-kernel  kernel  vdso 

1
i2cドライバーの起動-raspbian
Linuxのデバイスドライバーは比較的新しいです。達成しようとしているのは、ラズベリーの起動時に外部RGBドライバーがi2cコマンドを受信するため、起動時にLEDが点灯することを確認できます。 私のアプローチは、起動時にロードされるカーネルモジュールを介してこれを達成しようとしています。私はこれを達成するために多くのことを試みましたが、現時点では知識のギャップがあるように感じています。多分誰かが私を助けることができますか?(ハードウェアの問題ではないことに注意してください。ユーザー空間からデバイスにコマンドを送信できます。) 私のカーネルモジュールコードは次のとおりです。 #include <linux/i2c.h> #include <linux/init.h> #include <linux/module.h> #include <linux/of_device.h> #include <linux/slab.h> #include <linux/string.h> #include <linux/hwmon.h> #include <linux/hwmon-sysfs.h> #include <linux/regmap.h> MODULE_AUTHOR ("Niels"); MODULE_DESCRIPTION("driver rgb led"); MODULE_LICENSE("GPL"); /*CAT3626 control registers*/ #define CAT3626_ADDRESS 0x66 #define CAT3626_ENA 0x03 #define CAT3626_REGA 0x00 #define CAT3626_REGB 0x01 #define CAT3626_REGC 0x02 struct cat3626 { struct device …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.