組み込み環境における ユーザレベル・デバイスドライバの検討 (進捗報告)

Slides:



Advertisements
Similar presentations
1 組込みエンジニアのための Linux 入門 仮想メモリ編 株式会社アプリックス 小林哲之.
Advertisements

Linux Device Driver 輪講 Che++. 第 6 章 キャラクタ型ドライバの高度な 機 第 1 回 (全 2 回)
天野 コンピュータ基礎  入出力
Linuxを組み込んだマイコンによる 遠隔監視システムの開発
Webプロキシサーバにおける 動的資源管理方式の提案と実装
Chapter11-4(前半) 加藤健.
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
クラウドにおける ネストした仮想化を用いた 安全な帯域外リモート管理
JTAG ICEによる 組み込みLinuxデバッグ
オペレーティングシステム (OSの機能と構造)
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第1回 イントロダクション 担当:青木義満
ソフトウェア階層 分類 具体例 応用ソフト 基本ソフト アプリケーションソフト 個別アプリケーション SEやユーザが開発するプログラム
App. A アセンブラ、リンカ、 SPIMシミュレータ
OSが乗っ取られた場合にも機能するファイルアクセス制御システム
研究背景 クラウドコンピューティングサービスの普及 ユーザ数の増加に伴う問題 マルチテナント方式の採用 データセンタの需要が増加
Linux リアルタイム・プリエンプションとULDDへの影響 - 進捗報告 -
Linuxカーネルについて 2014/01.
環境計測に用いられるOSの リアルタイム性の比較
ネストした仮想化を用いた VMの安全な帯域外リモート管理
CONCURRENT PROGRAMMING
タイムスタンプ付ストリームI/Oによる音の実時間処理
オペレーティングシステム2005 デバイス管理 (1)
型付きアセンブリ言語を用いた安全なカーネル拡張
RT-Linuxを用いた 多入力パルス波高分析システムの開発
全体ミーティング 金田憲二.
“Survey of System Virtualization Techniques” by Robert Rose のまとめ
仮想マシン間にまたがる プロセススケジューリング
FreeBSDの デバイスドライバについて
最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章.
IaaS型クラウドにおける インスタンス構成の動的最適化手法
リモートホストの異常を検知するための GPUとの直接通信機構
シャドウデバイスを用いた 帯域外リモート管理を継続可能なVMマイグレーション
仮想メモリを用いた VMマイグレーションの高速化
オペレーティングシステム イントロダクション
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
オペレーティングシステムJ/K (システムプログラミング)
全体ミーティング 6月6日 島本 大輔(M2) 2006年6月6日(火).
東京工業大学 情報理工学研究科 数理・計算科学専攻 千葉研究室 栗田 亮
オペレーティングシステムJ/K 2004年11月18日
オペレーティングシステムJ/K 2004年11月15日2時限目
オペレーティングシステム (ファイル) 2009年11月9日
仮想環境を用いた 侵入検知システムの安全な構成法
オペレーティングシステム (OSの機能と構造)
コンピュータアーキテクチャ 第 9 回.
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
実装について 前田俊行.
システムプログラミング 第6回 システムコールのエラーメッセージ ファイルシステム 情報工学科 篠埜 功.
オペレーティングシステムJ/K 2004年10月4日
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
Cell/B.E. のSPE上で動作する 安全なOS監視システム
Mondriaan Memory Protection の調査
タイムスタンプ付ストリームI/Oによる音の実時間処理
オペレーティングシステムJ/K (システムプログラミング)
ネットワーク・プログラミング デバイスドライバと環境変数.
SpectreとMeltdown ITソリューション塾・第27期 2018年3月20日 株式会社アプライド・マーケティング 大越 章司
コンピュータアーキテクチャ 第 9 回.
岡村耕二 TCP通信プログラム 岡村耕二 情報ネットワーク.
強制パススルー機構を用いた VMの安全な帯域外リモート管理
異種セグメント端末による 分散型仮想LAN構築機構の設計と実装
ネットワーク・プログラミング TCPサーバ.
ネットワーク・プログラミング 1対多のプロセス間通信.
オペレーティングシステム (OSの機能と構造)
特定ユーザーのみが利用可能な仮想プライベート・ネットワーク
ネットワーク・プログラミング プロセスとファイルシステム管理.
L4-Linux のメモリ管理における問題点とその解決策
ソケットの拡張によるJava用分散ミドルウエアの高信頼化
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
強制パススルー機構を用いた VMの安全な帯域外リモート管理
Presentation transcript:

組み込み環境における ユーザレベル・デバイスドライバの検討 (進捗報告) 松原 克弥 株式会社イーゲル 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. これまでの経緯 スレッドの挙動を調査 RTタスク vs Non-RTタスク 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. 本活動の背景と目的 ユーザレベルでデバイスドライバを実現したい 開発が容易 ドライバのバグによるシステムダウンを軽減 (ジーピーエルの回避) ユーザレベル・デバドラ実現のためのいくつかの問題 I/Oメモリ、物理メモリへのアクセス 割り込み要求(IRQ)の転送 割り込みへの応答速度 ‥‥ カーネル2.6の新機能 NPTL(Native POSIX Thread Library) スケジューラの改善(O(1)スケジューラ等) カーネルプリエンプション 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. 組み込みソフトウェア開発の現状 新しいデバイスのためのドライバ開発が多い アプリケーションが直接デバイス制御 遅延の最小化 デスクトップPCアプリケーションよりもデバイスとアプリケーションが密接に関係 H/W仕様の隠蔽 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. ユーザレベル・デバイスドライバ ユーザ空間でデバイスドライバを実装 期待される効果 豊富なツール・ライブラリの利用(例:ファイル) 開発とデバッグの容易さ システムハングの軽減 アプリケーションとの距離削減 ‥‥ 関連研究 Peter Chubb, “Get more device drivers out of kernel,” OLS2004. 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. デバイスドライバに必要な機能 I/Oメモリへのアクセス レジスタ入出力によるデバイス制御、データ入出力 割り込み受信と処理 物理メモリの確保とアクセス DMA等を用いてメモリへ直接アクセスするデバイスに対して必要 DMAでは、連続物理メモリの確保が必要なことも CPUのロック,リアルタイム アプリケーションへのインタフェース 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

ユーザレベル・デバドラにおける 割り込み受信と処理 ファイルI/Oによる割り込み受信 割り込み番号別のデバイスファイルを用意 上記デバイスファイルへread()をすると、割り込みが起きるまでブロック 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

ユーザレベル・デバドラにおける メモリへのアクセス メモリマップ(mmap)によるI/Oメモリへの直接アクセス /dev/memもしくは専用デバイスファイルをopen(), mmap() 一度mmapしてしまえば、あとはこれまでどおりアクセス 物理メモリは、確保してからmmap 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

ユーザレベル・デバドラにおける アプリケーションへのインタフェース ユーザレベルデバドラでは、アプリケーションと同じユーザ空間に存在できるので、プロセス間通信、共有メモリ等様々なインタフェースを実現可能 アプリケーションとの統合も容易 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

ユーザレベル・デバドラにおける CPUのロック・リアルタイム RTスレッドを使えばある程度強引には‥ これは継続審議で。 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. 実装(シリアルドライバ) 実装環境 RTS7751R2D Renesas SH4 SM501 コンパニオンチップ内蔵 UART 8250互換 1バイト入出力とFIFOバッファ入出力の2モード Linux 2.6.13.4 CONFIG_PREEMPT=y Glibc 2.3.3 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. 処理内容 割り込み処理 データ受信 送信バッファ空き I/Oメモリアクセス SM501 レジスタ入出力 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. ソフトウェア・アークテクチャ バッファ データ入出力 ユーザレベル UARTデバドラ ターミナル アプリ I/Oメモリマップ・ドライバ 割り込みフック・ドライバ Linuxカーネル SM501 UART 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. 割り込みフック・ドライバ static int irqhook_proc_open(struct inode *inop, struct file *filp) { ... request_irq(ipp->irq, irqhook_proc_irq_handler, SA_INTERRUPT, ipp->devname, ipp); } static ssize_t irqhook_proc_read(struct file *filp, char __user *bufp, size_t len, loff_t *ppos) { .... prepare_to_wait(&ipp->q, &wait, TASK_INTERRUPTIBLE); pending = atomic_read(&ipp->count); if (pending == 0) schedule(); ..... } 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. int iommap_mmap(struct file *filp, struct vm_area_struct *vma) { size_t size = vma->vm_end - vma->vm_start; unsigned long offset = vma->vm_pgoff << PAGE_SHIFT; vma->vm_flags |= VM_RESERVED; vma->vm_flags |= VM_IO; vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); /* Map each page to users' virtual memory space */ if (io_remap_page_range(vma, vma->vm_start, offset, size, vma->vm_page_prot)) return -EAGAIN; return 0; } 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. UARTドライバ while (1) { .... if (read(fd, &n_pending, sizeof(int) > 0) { if ((status = SM501_UART0_LINESTAT(&iomem)) & 0x01) { do { buffer[count]= SM501_UART0_RXBUFF(&iomem); status = SM501_UART0_LINESTAT(&iomem); count++; if(count >= BUFFER_SIZE){ loop++; count = 0; if(loop >= LOOP_COUNT) goto end; } while((status & 0x01)&&(max_count-- > 0)); } 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. 実験 実験を始めたところです‥ シリアル入出力 シリアルデバイスに対して1MBのREAD/WRITEを行ってスループットを測定してみました。 SM501 バイト入出力モードを使用 カーネルドライバは2.6.13.4に同梱のもの ユーザレベル・デバイスドライバはRTタスクとして実行 ユーザレベル・デバイスドライバはシリアル入出力プロセスと一体化 R2DボードとノートPC(TeraTerm)をシリアル・クロスケーブルで接続 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. 実験結果 38.4kbps 300bps Read Write User Level DD 29.95kbps 30.68kbps 210.70bps 213.34bps Kernel Level DD 29.69kbps 28.08kbps 232.82bps 232.70bps データサイズ:1MB バッファサイズ: 1KB ボーレート: 300 or 38400 bps 測定値:同一実験を10回行った結果の平均 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. 所感 少なくとも、低負荷(じゃまするものがいない)環境では、オーバヘッドは軽微? 38.4kbpsのときはむしろULDDのほうが速い。 解析する価値あり→これからします。 システム安定性、コーディングやデバッグの容易さ、豊富なユーザランド機能が魅力 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. 今後の課題 高負荷環境での挙動 RTタスク / Non-RTタスク PC環境との比較 他デバイスでの評価 カーネルレベルDDとユーザレベルDDの特性を整理 新規性を模索中‥ 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.

IGEL Co.,Ltd. / Renesas Solution Corp. 議論 2006/1/20 IGEL Co.,Ltd. / Renesas Solution Corp.