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

UNIXカーネルに関するすべて:開発、構成、コンパイル、設計など

4
異なるプロセスの同じfdはどのようにして同じファイルを指すことができますか?
私が持っていると言うプロセス1およびプロセス2を。両方とも整数4に対応するファイル記述子を持っています。 ただし、各プロセスでは、ファイル記述子4はカーネルのオープンファイルテーブル内のまったく異なるファイルを指します。 そんなことがあるものか?ファイル記述子は、Open File Tableのレコードへのインデックスであると想定されていませんか?

1
CFSのCPU使用率が高いですか?
私は尋ねた前の質問を、私はそれはそれは、カーネル内のCFSによって引き起こされていることを示していると思われるためにしたことを分析はRHEL 6にRHEL 5からアプリケーションを移動するときに試してみて、CPUの使用率の増加の原因を隔離します。これが事実かどうかを確認するためのテストアプリケーションを作成しました(元のテストアプリケーションはサイズ制限に合わせて削除されましたが、まだgit repoで利用可能です)。 RHEL 5で次のコマンドを使用してコンパイルしました。 cc test_select_work.c -O2 -DSLEEP_TYPE=0 -Wall -Wextra -lm -lpthread -o test_select_work その後、Dell Precision m6500で、反復あたりの実行時間が約1ミリ秒になるまでパラメーターを試しました。 RHEL 5で次の結果が得られました。 ./test_select_work 1000 10000 300 4 time_per_iteration: min: 911.5 us avg: 913.7 us max: 917.1 us stddev: 2.4 us ./test_select_work 1000 10000 300 8 time_per_iteration: min: 1802.6 us avg: 1803.9 …



5
Linuxはセグメンテーションを使用せず、ページングのみを使用しますか?
Linuxプログラミングインターフェイスは、プロセスの仮想アドレススペースのレイアウトを表示します。図の各領域はセグメントですか? Linuxカーネルの理解から、 MMUのセグメンテーションユニットがセグメントとセグメント内のオフセットを仮想メモリアドレスにマップし、ページングユニットが仮想メモリアドレスを物理メモリアドレスにマップすることを意味するのは正しいですか? メモリ管理ユニット(MMU)は、セグメンテーションユニットと呼ばれるハードウェア回路を使用して、論理アドレスを線形アドレスに変換します。その後、ページングユニットと呼ばれる2番目のハードウェア回路が線形アドレスを物理アドレスに変換します(図2-1を参照)。 それでは、なぜLinuxはセグメンテーションを使用せず、ページングのみを使用すると言うのですか? 80x86マイクロプロセッサにはセグメンテーションが含まれており、プログラマがアプリケーションを論理的に関連するエンティティ(サブルーチン、グローバルデータエリア、ローカルデータエリアなど)に分割できるようになっています。ただし、 Linuxは非常に限られた方法でセグメンテーションを使用します。実際、セグメント化とページングは​​どちらもプロセスの物理アドレス空間を分離するために使用できるため、やや冗長です。セグメンテーションは各プロセスに異なる線形アドレス空間を割り当てることができますが、ページングは​​同じ線形アドレス空間を異なる物理アドレス空間にマッピングできます。Linuxでは、次の理由により、セグメンテーションよりもページングが優先されます。 •すべてのプロセスが同じセグメントレジスタ値を使用する場合、つまり、同じ一連のリニアアドレスを共有する場合、メモリ管理はより簡単になります。 •Linuxの設計目標の1つは、幅広いアーキテクチャへの移植性です。特に、RISCアーキテクチャでは、セグメンテーションのサポートが制限されています。 Linuxの2.6バージョンは、80x86アーキテクチャで必要な場合にのみセグメンテーションを使用します。

1
/ devにdevtmpfsを使用する
カーネルに次のオプションがあることに気付きました:CONFIG_DEVTMPFS Device Drivers -> Generic Driver Options -> Maintain devtmpfs to mount at /dev そして、Debianディストリビューションカーネルでデフォルトで有効になっていることがわかります 3.2.0-4-amd64 このオプションがもたらす違いを理解しようとしています。このオプションを指定しないと、/devとして実装されているtmpfsこのオプションを指定して、それは次のように実装されています、devtmpfs。それ以外は、違いは見当たりません。 helpいずれかの私のためにそれを明確にしませんでした。 これにより、起動時に早い段階でtmpfs / ramfsファイルシステムインスタンスが作成されます。このファイルシステムでは、カーネルドライバーコアは、割り当てられたメジャー/マイナー番号を持つすべての登録済みデバイスのデフォルト名とアクセス許可でデバイスノードを維持します。 完全に機能する/ devディレクトリを提供します。通常は、udevが最上位で実行され、権限を管理し、意味のあるシンボリックリンクを追加します。 非常に限られた環境では、それ以上のヘルプなしで十分な機能/ devを提供する場合があります。また、シンプルなレスキューシステムが可能になり、動的なメジャー/マイナー番号を確実に処理します。 誰かが使用CONFIG_DEVTMPFSと標準の違いを説明してもらえ/devますか?

2
カーネルモード設定とフレームバッファ
KMSでは、グラフィックドライバーがカーネルに移動されます。フレームバッファはすでにカーネルにあるので、これがフレームバッファの動作に影響するとは思わないでしょう。それでも、KMSはfbに取って代わり、fbを増強し、fbを必要とし、fbサポートを削除する必要があることを読みました。一体何?私が探している答えは、KMSとフレームバッファの関係の説明です。 私はttyでネイティブ解像度を取得するためにuvesafbを使用しています。ここでの私の目的は、KMSを使用したシステムでどのように機能するかを理解することです。KMSでのスクロールは高速ですか?fbtermやfbidaなどのユーティリティは同じように機能しますか?安定性は向上していますか?

2
Arch LinuxをLTSカーネルに切り替える方法
Arch Linuxのヘッドレスサーバーインストールを実行しています。カーネルアップグレードの割合が高いため、メンテナンスに頭痛がするので、ltsカーネルに切り替えたいと思います。 linux-ltsとlinux-lts-headersパッケージを既にインストールしました。さて、両方のカーネルをインストールしましたが、ここから続行する方法は少しわかりません。ドキュメントを説明します: [...]あなたはLTSのカーネルとRAMディスクを使用するようにブートローダの設定ファイルを更新する必要があります。vmlinuz-linux-ltsとinitramfs-linux-lts.img。 私はすでにブートセクションにそれらを見つけました: 0 ✓ root@host ~ $ ll /boot/ total 85M 4,0K drwxr-xr-x 4 root root 4,0K 21. Mai 13:46 ./ 4,0K drwxr-xr-x 17 root root 4,0K 4. Apr 15:08 ../ 4,0K drwxr-xr-x 6 root root 4,0K 4. Apr 14:50 grub/ 27M -rw-r--r-- 1 root root 27M …
24 arch-linux  kernel  grub  lts 

1
Linuxでのリアルタイムプロセススケジューリング
私はいくつかのスケジューリングの概念を学んでいます。現在のところ、私の理解は以下の通りです。 リアルタイムプロセスと非リアルタイムプロセスがあります。 非リアルタイムプロセスを持つことができるniceの範囲内でその優先順位の値を-20に+20。高い正の値は、プロセスの優先度が低いことを示します。 ここ-でこの答えで説明されるようにリアルタイムプロセスにniceness値がリストされるでしょう。これは主に、リアルタイムプロセスが非リアルタイムプロセスよりも高い優先度を持ち、ナイスネス値が適用されないためです。 これchrtで、プロセスのリアルタイムの属性を確認できます。 リアルタイムプロセスの場合、chrt出力は次のようになります。 chrt -p 5 pid 5's current scheduling policy: SCHED_FIFO pid 5's current scheduling priority: 99 プロセス5でわかるように、優先度は99で最高です。また、スケジューリングポリシーはSCHED_FIFO さて、非リアルタイムプロセスのために、 chrt出力は次のようになります。 chrt -p 22383 pid 22383's current scheduling policy: SCHED_OTHER pid 22383's current scheduling priority: 0 プロセス22383でわかるようにでに、優先順位は0で、スケジューリングポリシーはSCHED_OTHERです。 ご質問 プロセスをリアルタイムプロセスとして作成することは可能ですか? 私が他のスケジューリングアルゴリズムを設定することは可能ですか? SCHED_OTHER非リアルタイムプロセスですか? ここから、実行中のプロセスの属性を次のように変更できることもわかります。 chrt -p prio pid また、chrt …


1
Ubuntuの起動中に「i8042.nomux = 1」カーネルオプションは何をしますか?
マルチゲストタッチパッド付きのラップトップを持っています。私のタッチパッドは、Ubuntu、Fedora、openSUSE、Linux Mint、Knoppix、Puppy、SlitazなどのLinuxディストリビューションでは動作しません。私は多くのことを試しましたが、何もうまくいきませんでした。Synapticsのドライバーと1年以上苦労していますが、うまくいきません。 それからどこかでi8042.nomuxカーネルオプションについて読んだ。そこで、次のオプションを使用してUbuntuを起動しました。 i8042.nomux=1 i8042.reset これにより、タッチパッドはUbuntuのすべてのバリアントとLinux Mintのような派生物で動作するようになりました。 これらのオプションについて知りたいです。このオプションが正確にわかっていれば、このオプションはUbuntuでのみ機能するため、すべてのLinuxディストリビューションでタッチパッドを使用できます。

2
Linux上のUSB3外部ストレージとの接続の問題(UASドライバーの問題)
Ubuntu 15.10で、NTFSファイルシステムを使用して、USB3(StarTech USB / eSATAハードディスクドック)で接続された外部4TOディスクを使用してフォーマットしようとすると、I / Oエラーが多く発生し、フォーマットに失敗します。 GParted v 0.19とGPartedを最新のライブCD gparted-live-0.23.0-1-i586.isoで試してみましたが、同じ問題があります。 その後、Ubuntu 15.10と同じUSB3接続でGPartedを使用してext4、問題なくとしてフォーマットしようとしました。本当に奇妙です。 mkfs.ext4GPartedがディスクをフォーマットするために使用するツールがディスクをテストするかどうか(または、そうではないかどうか)がわからないのでmkntfs、まず問題が新しいディスクにリンクしていると思います。この新しいディスクが問題を引き起こしている可能性があります。だから私e2fsck -cはこのHDDで実行してみます。Ubuntu 15.10ではe2fsck -c、0.45%でフリーズしますが、その理由はわかりません。 したがって、同じPCで別のバージョンのUbuntu(15.04)を使用して、StarTech HDDドックのeSATA接続を使用して同じ4TOディスクを接続しようとします。今回は、e2fsck -c正しく実行されます。 数時間後、結果を見ることができます: sudo e2fsck -c /dev/sdc1 e2fsck 1.42.12 (29-Aug-2014) ColdCase : récupération du journal Vérification des blocs défectueux (test en mode lecture seule) : complété ColdCase: Updating bad block inode. Passe …

5
LinuxでのO_DIRECTの使用
この質問がプログラマー指向すぎる場合は、お知らせください。Linux 2.6のopen()システムコールのO_DIRECTフラグに精通している人がいるのだろうか?Linusはその使用を軽んじていますが、高性能ファイル書き込みはその使用を示しているようです。現実世界での経験と推奨事項を知りたいです。 詳細:私が使用しているアプリケーションは独自のキャッシュを維持しており、その際に平均で5倍以上の高速化を実現しています。ファイルに書き込むとき、キャッシュの内容はファイルシステムのキャッシュに書き出される必要がありますが、これは冗長であり、パフォーマンスの問題と思われます。

2
grsecurityパッチがVanilla Kernelに含まれていないのはなぜですか?
grsecurityパッチ(またはパッチがもたらすセキュリティ機能)がデフォルトでカーネルに含まれていない理由は何ですか。セキュリティの利点を見ると、バニラカーネルはそのままでは非常に安全ではないようです。 これがトレードオフの場合(セキュリティ対策を回避したいアプリケーション)、grsecurityバニラカーネルで有効にするオプションである可能性があります。 主流のバニラカーネルには非常に多くのものがあるため、コミュニティがを含めたくない理由を理解するのに苦労していますgrsecurity。

4
カーネルハッキング環境
私は、uCOS、ThreadXなどの組み込みOSで作業してきました。Linuxでアプリをコーディングしましたが、今はLinuxカーネルの学習を開始する予定です。環境に関する質問はほとんどありません。 カーネル開発用の使いやすいツールを備えた最適なディストリビューションはどれですか?(これまで私はRHELとFedoraを使用していました。これらに満足していますが、Ubuntuにはmake_kpkgなどの簡単なカーネルコンパイル用の組み込みスクリプトもあるようです) カーネルデバッグの最適な設定について説明してください。他の組み込みOSのデバッグ中、進行状況やJTAGなどをダンプするためにシリアルポートを使用しました。Linuxカーネル開発者はどのようなセットアップを使用しますか?(シリアルポートを備えたテストベッドPCは私のニーズに十分ですか?はいの場合、カーネルをシリアルポートにダンプするように構成する方法は?)カーネルメッセージをラップトップで読み取られるシリアルコンソールにリダイレクトすることを計画しています。 カーネルコードのデバッグとトレースに最適なツールは何ですか?前述したように、シリアルコンソールが唯一の方法ですか?または、PC用のIDE / JTAG種類のインターフェイスがありますか?

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