互換性とパフォーマンス 川西 裕幸 DirectX Technical Evangelist

Slides:



Advertisements
Similar presentations
Internet Explorer 障害解析 最初の一歩 - IE のトラブルを理解する -. 概要 Internet Explorer を使用中に発生するトラブルの 種類と、調査のための切り分け方法を紹介します! (以降は IE と略称で表記します) よくあるお問い合わせ Web ページの表示が白画面のまま完了しない.
Advertisements

InstallShieldLecture InstallShield でインストーラを作成する方法 ( 初級編 ) ソニーエンジニアリング 設計 3 部 1 課 齋藤佑輔.
F5 を押すか、または [スライド ショー] > [最初から] をクリックして、コースを開始してください。
実習1:コマンドシェルの使い方.
PROCESS 14:一般情報(2) InstallShieldLecture
計算機工学III オペレーティングシステム #14 ファイル: より進んだファイルシステム 2006/07/21 津邑 公暁
Chapter11-4(前半) 加藤健.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
最新ファイルの提供を保証する代理FTPサーバの開発
■パス検索 各種ファイルを操作するには、まずパス名をiノードに変換しなければならない。 以下にパス名をiノードに変換する関数の説明を行う。
IBM Power Systems Linux センター のご紹介
表紙 Windows用起動画面集        ~劇場版 v.1,00~ 作成:カズキング 場所:ブログ「俺らしいブログ」
計算機アーキテクチャ特論Chapter.6.6~6.9
Lightweight Language Weekend ls-lRシェル
Microsoft Office 2010 クイックガイド ~ファイルの互換性編~
Windowsを理解しよう! ーメンテナンスの薦めー.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
スティックライト for USB USB-ROMの開発手順について WindowsがUSBメモリから起動します。 株式会社ロムウィン
侵入検知システム(IDS) 停止 IDS サーバへの不正アクセスが増加している
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
第4回放送授業.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
実習1:コマンドシェルの使い方.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
基幹理工学研究科 情報理工学専攻 後藤研究室 修士1年 魏 元
アスペクト指向プログラミングを用いたIDSオフロード
EGS5のWindows PC へのインストール
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
型付きアセンブリ言語を用いた安全なカーネル拡張
Windows 2000 拡張カーネルの技術紹介 2018年6月10日 黒翼猫.
プログラミング 2 ファイル処理.
発表に必要なPCソフト等 について 社会福祉援助技術論Ⅲ 長崎和則.
Cisco Router GUI設定 CCPE3.2 紹介 本資料に記載の各社社名、製品名は、各社の商標または登録商標です。
3D散歩ゲーム 08A2043 谷口盛海 種田研究室.
関数の定義.
Microsoftのマルチプラットフォーム戦略
オープンソフトウェア利用促進事業 第3回OSSモデルカリキュラム導入実証
.NET Framework 3.0 概要 (旧称 : WinFX)
アルゴリズムとデータ構造 補足資料11-1 「mallocとfree」
実行時情報に基づく OSカーネルのコンフィグ最小化
メモリの準備 メモリには、その準備の方法で2種類ある。 静的変数: コンパイル時にすでにメモリのサイズがわかっているもの。 普通の変数宣言
オペレーティングシステム イントロダクション
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
オペレーティングシステムJ/K (仮想記憶管理)
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
ゲーム開発モデルの基礎.
コンピュータ概論B ー ソフトウェアを中心に ー #02 システムソフトウェアと アプリケーションソフトウェア
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
Intel SGXを用いた仮想マシンの 安全な監視機構
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
11: 動的メモリ確保 C プログラミング入門 総機1 (月1) Linux にログインし、以下の講義ページ を開いておくこと
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
実装について 前田俊行.
ポインタとポインタを用いた関数定義.
Global standard programming with GNU Autotools
SpectreとMeltdown ITソリューション塾・第27期 2018年3月20日 株式会社アプライド・マーケティング 大越 章司
第5回 プログラミングⅡ 第5回
WindowsグラフィックスとDirectX
Microsoft Office 2010 クイックガイド ~ファイルの互換性編~
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
X64 函数呼び出し規約 長谷川啓
11: 動的メモリ確保 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
情報処理Ⅱ 第8回:2003年12月9日(火).
プログラミング 2 静的変数.
Presentation transcript:

互換性とパフォーマンス 川西 裕幸 DirectX Technical Evangelist Windows® XP との 互換性とパフォーマンス 川西 裕幸 DirectX Technical Evangelist 製品マーケティング本部 マイクロソフト株式会社

XP でよりよく動作させるには

メモリー管理のヒント VirtualAlloc( ) MEM_RESERVE アプリケーションのアドレス空間内である領域を確保 物理的な記憶領域が保証されているわけではない MEM_COMMIT 物理的な記憶領域を保証 MEM_RESERVE との組み合わせが可能 ページ保護属性を指定 自動的にページ境界に合わせる VirtualFree( ) で開放

メモリー管理のヒント VirtualProtect( ) ページ保護属性の変更 コミットされたページでのみ動作 データを読み込み専用に設定する際に便利 システムに最適化させることが可能 バグ追跡に有用

一般的なパフォーマンスのヒント ファイルの開閉を繰り返さない ファイルを開くのは負荷の高い操作 さらに XP のセキュリティ保護によってこの操作はより多くのリソースを消費 ファイルを開いたままにして、その作業が終了したときだけ閉じる

一般的なパフォーマンスのヒント 使用パターンについてのシステム情報を与える CreateFile( ) 呼び出しに FILE_SCAN_SEQUENTIAL フラグを使う あるファイルを始めから終わりまでずっと読み込むときのアクセスを最適化 OS はアクセスを先読みする 必要なデータの順番を整理する 特に CD や DVD から読み込むときは

一般的なパフォーマンスのヒント C ランタイム ライブラリをスタティック リンクしない 代わりに Win32 関数を使う C ランタイム ライブラリの代わりに、NTDLL がエクスポートするルーチンを使う LIBC.LIB や LIBCMT.LIB を使わない

一般的なパフォーマンスのヒント DLL ローディングに LoadLibrary() を使う DLL をいつロードするかが制御可能に アプリケーションの開始がより高速に

一般的なパフォーマンスのヒント DisableThreadLibraryCalls() を呼び出す 通常プロセス内の新しいスレッド アタッチのたびに DLLMain は DLL_THREAD_ATTACH で呼び出される 大部分の DLL はこの情報を使わない DisableThreadLibraryCalls() によってこれを回避

一般的なパフォーマンスのヒント 定数変数を const で宣言 変数空間から完全に排除できる 読み込み専用セクションに置かれる 変数が入る読み書き可能なページはより多くのサイズを必要とするので、ページングが改善される。

一般的なパフォーマンスのヒント DLL グローバル変数は一度だけ静的に初期化する 複数ページに分割されないような良い振る舞いのデータ構造体を使う プライベート ヒープが有用だが、注意深く ! 決定前に複数の設計ポリシーをテスト

一般的なパフォーマンスのヒント アクセスを局所的に 複数ページに渡るデータはページフォルトを増加 例えば、DWORD を 2MB のページ メモリーに書き込む (4k ページ) ベストケース = 512 ページフォルト、シリアルに書き込み ワーストケース = ˜1,000,000 ページフォルト (1024 2) 各ページ フォルトは 10ミリ秒を消費すると仮定すると ベストケース = 5秒 (512 * 10ms) ワーストケース = 2.75 hours (1,000,000 * 10ms = 10,000 秒)

一般的なアプリケーション 互換性の問題

NAT を使った動作が重要 多くのファイアウォールは NAT をベースにしている Windows ICS が広く採用されている ケーブル モデム DSL モデム ISDN ルーター ルーター/ゲートウェイ/デバイスなどのそれ以外の組み合わせ DirectPlay® 8 は完全に NAT をサポート

アプリケーションの互換性 本当にアプリケーションは「非互換」なのか ? 何がアプリケーションを非互換にしたのか ? インストールできない It OS の機能が変わってしまった OS の変更がアプリケーションのバグを顕在化した プラットフォームの差

セットアップとインストール 一番良くある問題は ? アプリケーションがインストールできない インストールできない最もよくある理由は Windows のバージョン チェックが間違っている OS アップグレードのほうがクリーンインストールよりアプリケーションがパスする確率が高い

Win32® API のいくつかの変更 WM_KEYUP と WM_KEYDOWN GetWindowsDirectory wParam を無変更のまま TranslateMessage に渡す GetWindowsDirectory ユーザーごとの Windows ディレクトリを返す OPENFILENAME STRUCTURE lpstrInitialDir は「マイ ドキュメント」を返す場合がある DS_SHELLFONT システムは “MS Shell Dlg 2” を使用

一般的なヒープの問題 解放後のメモリ アクセス 小さなブロックを再割り当て 割り当て→読み書き→開放→読み込み これは不正なデータ アクセス アクセス保護違反が起きない場合がある Windows 2000 と XP は、より早くブロックを再利用 小さなブロックを再割り当て 同じポインタは使えない Windows はそのブロックを動かす場合がある 以前はメモリを開放すると未使用ブロックリストの一番下に入れた、WinNT SP4 以降リストの一番上にしている(キャッシング)

システムコードによる スタック消費量の増加 システムはより多くのスタック スペースを使用 小さなスタックしか割り当てていないアプリケーションはクラッシュするかもしれない チェックと修正 /STACK – リンカ オプション STACKSIZE - .DEF ファイル /F – コンパイラ オプション

呼び出し規約 Window プロシージャのすべてに TDCALL を使うこと Windows 95/98 なら C_DECL でも動作 Windows XP では動作しない 呼び出し規約の実装が正しく行われていることを確認

メッセージの順序 ある個別の順序で Windows メッセージが出力されることに依存してはいけない 新しいスレッド スケジューラがバグを顕在化 メッセージは Windows の同期オブジェクトではない これをするには Win32 同期オブジェクトを使うこと

互換レイヤ 互換レイヤ 互換モード ウィザード 個々の互換性修正の集まり、以前の Windows バージョンをまねをするよう設計 互換レイヤをアプリケーションに適用させる 永続性を有効にすることで、アプリケーションは必ずこのレイヤで実行される

アプリケーション互換性ツールキット ホワイト ペーパーとドキュメント よくある互換性の問題をリスト アプリケーションの問題発見用にチェックリストをテスト 新しいアプリケーション開発用のテスト手順ドキュメント Designed for Windows XP アプリケーション仕様書

アプリケーション互換性ツールキット アプリケーション修正用ユーティリティ XP 用にベータ版が利用可能 このツールキットはどこに ? QAppFix, AppParse, PageHeap, CompatAdmin. 将来のタイトル修正にはこのユーティリティを使わないで: リリースされたタイトルの問題部分を同定 開発中のタイトルの非互換部分の確認、問題発見時間の削減 XP 用にベータ版が利用可能 このツールキットはどこに ? http://msdn.microsoft.com/compatibility

ご質問は ? ? ? ? ? ? ? ? ? ? ? ?