@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/2026/03/09/000-windows-soft-realtime-practical-guide-natural/#article>
    schema:about <https://comcomponent.com/knowledge/soft-realtime/> ;
    schema:mentions <https://comcomponent.com/knowledge/hard-realtime/>, <https://comcomponent.com/knowledge/jitter/>, <https://comcomponent.com/knowledge/deadline-miss/>, <https://comcomponent.com/knowledge/dpc-isr/>, <https://comcomponent.com/knowledge/mmcss/>, <https://comcomponent.com/knowledge/waitable-timer/>, <https://comcomponent.com/knowledge/timebeginperiod/>, <https://comcomponent.com/knowledge/qpc/>, <https://comcomponent.com/knowledge/ecoqos/>, <https://comcomponent.com/knowledge/power-throttling/>, <https://comcomponent.com/knowledge/cpu-sets/>, <https://comcomponent.com/knowledge/cpu-affinity/>, <https://comcomponent.com/knowledge/thread-priority-class/>, <https://comcomponent.com/knowledge/wpr-wpa/>, <https://comcomponent.com/knowledge/latencymon/>, <https://comcomponent.com/knowledge/page-fault/>, <https://comcomponent.com/knowledge/thermal-throttling/> .

<https://comcomponent.com/knowledge/soft-realtime/> a skos:Concept ;
    skos:prefLabel "ソフトリアルタイム"@ja ;
    skos:definition "期限違反が起こり得る前提に立ち、遅延とジッタを小さくし、期限を外しても壊れず外した事実を観測できるようにする設計の考え方。fast path/slow pathの分離や固定長キューでのホットパス整理が代表的な手段になる。"@ja ;
    skos:altLabel "soft real-time" .

<https://comcomponent.com/knowledge/qpc/> a skos:Concept ;
    skos:prefLabel "QPC(QueryPerformanceCounter)"@ja ;
    skos:definition "壁時計ではなく高精度カウンタで経過時間を計測するWin32 API。.NETではStopwatchに相当する。"@ja ;
    skos:altLabel "QueryPerformanceCounter" .

<https://comcomponent.com/knowledge/waitable-timer/> a skos:Concept ;
    skos:prefLabel "待機可能タイマー(waitable timer)"@ja ;
    skos:definition "指定時刻にsignaledになるカーネルオブジェクト。CREATE_WAITABLE_TIMER_HIGH_RESOLUTIONを付けると高精度版になり、Sleepより周期待ちの土台に向く。"@ja ;
    skos:altLabel "waitable timer" ;
    skos:altLabel "CreateWaitableTimerExW" .

<https://comcomponent.com/knowledge/timebeginperiod/> a skos:Concept ;
    skos:prefLabel "timeBeginPeriod(タイマー分解能要求)"@ja ;
    skos:definition "システムのタイマー分解能を引き上げるWin32関数。必要な間だけ呼び、終わったらtimeEndPeriodで戻す使い方が前提で、分解能を上げてもQPCの精度自体は上がらない。"@ja ;
    skos:altLabel "timeBeginPeriod" ;
    skos:altLabel "timeEndPeriod" .

<https://comcomponent.com/knowledge/power-throttling/> a skos:Concept ;
    skos:prefLabel "Power Throttling(電力調整)"@ja ;
    skos:definition "EcoQoSに分類されたプロセスに対し、CPU周波数を下げたり電力効率の高いコアへ寄せたりしてWindowsが電力効率の向上を試みるOS側の仕組み。"@ja ;
    skos:altLabel "電力調整"@ja .

<https://comcomponent.com/knowledge/ecoqos/> a skos:Concept ;
    skos:prefLabel "EcoQoS"@ja ;
    skos:definition "性能が最重要ではない処理を省電力寄りに扱うためのQoS。スレッド単位ならSetThreadInformationとThreadPowerThrottling、プロセス単位ならSetProcessInformationとPROCESS_POWER_THROTTLING_EXECUTION_SPEEDで設定する。"@ja ;
    skos:altLabel "Eco QoS" ;
    skos:broader <https://comcomponent.com/knowledge/qos/> .

<https://comcomponent.com/knowledge/jitter/> a skos:Concept ;
    skos:prefLabel "ジッタ"@ja ;
    skos:definition "周期や応答時間の揺れ。平均値が良くてもジッタが大きいと実運用では不安定になる。"@ja ;
    skos:altLabel "jitter" .

<https://comcomponent.com/knowledge/mmcss/> a skos:Concept ;
    skos:prefLabel "MMCSS(Multimedia Class Scheduler Service)"@ja ;
    skos:definition "マルチメディア処理をするスレッドが登録すると、レジストリのタスク定義に沿って優先度を引き上げるWindowsのサービス。"@ja ;
    skos:altLabel "Multimedia Class Scheduler Service" ;
    ks:mitigates <https://comcomponent.com/knowledge/jitter/> ;
    ks:mitigates <https://comcomponent.com/knowledge/deadline-miss/> .

<https://comcomponent.com/knowledge/deadline-miss/> a skos:Concept ;
    skos:prefLabel "デッドラインミス(期限違反)"@ja ;
    skos:definition "予定時刻までに周期処理が終わらないこと。隠さず数えてログに残すことが前提になる。"@ja ;
    skos:altLabel "missed deadline" ;
    skos:altLabel "期限違反"@ja .

<https://comcomponent.com/knowledge/thread-priority-class/> a skos:Concept ;
    skos:prefLabel "スレッド優先度/優先度クラス"@ja ;
    skos:definition "SetThreadPriorityやSetPriorityClassで設定するスレッド・プロセスの実行優先度。REALTIME_PRIORITY_CLASSのような最上位クラスは、システム全体を応答不能にしうるため必要性が明確になるまで使うべきではないとされる。"@ja ;
    skos:altLabel "SetThreadPriority" ;
    skos:altLabel "SetPriorityClass" ;
    skos:altLabel "REALTIME_PRIORITY_CLASS" ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/soft-realtime/> .

<https://comcomponent.com/knowledge/cpu-sets/> a skos:Concept ;
    skos:prefLabel "CPU Sets"@ja ;
    skos:definition "アプリケーション側がOSの電源管理と協調しながら実行してほしいCPUの希望を柔らかく(soft)伝えるための、アフィニティマスクより新しい仕組み。"@ja ;
    skos:altLabel "CPU Sets API" ;
    ks:shouldPrecede <https://comcomponent.com/knowledge/cpu-affinity/> .

<https://comcomponent.com/knowledge/cpu-affinity/> a skos:Concept ;
    skos:prefLabel "CPUアフィニティ"@ja ;
    skos:definition "プロセスやスレッドに対して実行可能な論理プロセッサの集合を指定する、Windowsの機能。"@ja ;
    skos:altLabel "プロセッサアフィニティ"@ja ;
    skos:altLabel "SetProcessAffinityMask" ;
    skos:altLabel "SetThreadAffinityMask" .

<https://comcomponent.com/knowledge/thermal-throttling/> a skos:Concept ;
    skos:prefLabel "サーマルスロットリング"@ja ;
    skos:definition "長時間の高負荷運転で温度が上昇した際にプロセッサの動作クロックが引き下げられる挙動。それまで安定していた周期処理が崩れる原因になる。"@ja ;
    skos:altLabel "thermal throttling" .

<https://comcomponent.com/knowledge/dpc-isr/> a skos:Concept ;
    skos:prefLabel "DPC/ISR"@ja ;
    skos:definition "ISRの完了処理を後回しにして低いIRQLで実行する仕組みであるDPCと、割り込みそのものを処理するISR。実行中はuser-modeスレッドが動けないため、長いDPC/ISRは遅延の主要因になる。"@ja ;
    skos:altLabel "Deferred Procedure Call" ;
    skos:altLabel "Interrupt Service Routine" ;
    ks:verifiedBy <https://comcomponent.com/knowledge/wpr-wpa/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/latencymon/> .

<https://comcomponent.com/knowledge/page-fault/> a skos:Concept ;
    skos:prefLabel "ページフォールト"@ja ;
    skos:definition "必要なページがメモリになく取りに行くことになる現象。ホットパスで起きると遅延が一気に大きくなる。VirtualLockでロックした領域はページアウトされずページフォールトを避けられる。"@ja ;
    skos:altLabel "page fault" ;
    ks:verifiedBy <https://comcomponent.com/knowledge/wpr-wpa/> .

<https://comcomponent.com/knowledge/wpr-wpa/> a skos:Concept ;
    skos:prefLabel "WPR/WPA(Windows Performance Recorder/Analyzer)"@ja ;
    skos:definition "ETWを土台にした、ディスクI/O・電源・起動時間などOS全体の詳細分析に強いWindows標準の性能分析ツール群。"@ja ;
    skos:altLabel "Windows Performance Recorder" ;
    skos:altLabel "Windows Performance Analyzer" ;
    skos:altLabel "wpr" .

<https://comcomponent.com/knowledge/latencymon/> a skos:Concept ;
    skos:prefLabel "LatencyMon"@ja ;
    skos:definition "ドライバ起因の遅延を見るためのResplendence Software製サードパーティツール。DPC/ISRの実行時間をドライバ別に集計し、hard pagefaultも記録する。"@ja ;
    skos:altLabel "LatencyMon" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/soft-realtime/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/qpc/> ;
    schema:description "Windows上でのソフトリアルタイム処理では、時間計測に壁時計ではなく高精度カウンタであるQueryPerformanceCounterを使う"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/profileapi/nf-profileapi-queryperformancecounter> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/soft-realtime/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/waitable-timer/> ;
    schema:description "Windows上でのソフトリアルタイム処理では、周期待機はSleepではなく、指定時刻にsignaledになる待機可能タイマー(特に高精度版)を優先して使う"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-createwaitabletimerexw> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/soft-realtime/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/timebeginperiod/> ;
    schema:description "Windows上でのソフトリアルタイム処理では、必要な間だけtimeBeginPeriodでタイマー分解能を引き上げ、終わったらtimeEndPeriodで戻す"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/timeapi/nf-timeapi-timebeginperiod> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/power-throttling/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/timebeginperiod/> ;
    schema:description "PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTIONが有効な状態では、timeBeginPeriodによるタイマー分解能の引き上げが効かなくなる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/ns-processthreadsapi-process_power_throttling_state> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/soft-realtime/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/power-throttling/> ;
    schema:description "Windows上でのソフトリアルタイム処理で時間に敏感なプロセスでは、SetProcessInformationでPROCESS_POWER_THROTTLING_STATEを設定し、電源スロットリングの適用可否を明示的に制御する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setprocessinformation> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/power-throttling/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/ecoqos/> ;
    schema:description "PROCESS_POWER_THROTTLING_EXECUTION_SPEEDを制御対象にしてStateMaskをオフ(HighQoS側)にした場合に限り、プロセスがEcoQoSへ落とされるのを防げる。StateMaskをオンにすれば逆にEcoQoSへの分類を許可することになる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/ns-processthreadsapi-process_power_throttling_state> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ecoqos/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/jitter/> ;
    schema:description "EcoQoSに分類されるとCPU周波数が下げられたり電力効率のよいコアへ寄せられたりして、時間に敏感な処理では遅延やジッタが増えうる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/procthread/quality-of-service> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/soft-realtime/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/mmcss/> ;
    schema:description "Windows上でのソフトリアルタイム処理のうち音声/映像のような連続バッファ処理では、単純に高優先度スレッドを回すよりMMCSSの利用がWindowsの設計に沿っている"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/procthread/multimedia-class-scheduler-service> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mmcss/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/jitter/> ;
    schema:description "MMCSSは時間に敏感なマルチメディアスレッドへ優先的にCPUを配分し、他スレッドに割り込まれて生じるジッタ(グリッチ)を軽減する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/procthread/multimedia-class-scheduler-service> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mmcss/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/deadline-miss/> ;
    schema:description "MMCSSはバッファを埋める処理が他スレッドに押しのけられにくくすることで、バッファのアンダーランのような期限超過を軽減する(ゼロを保証するものではない)"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/procthread/multimedia-class-scheduler-service> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/thread-priority-class/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/jitter/> ;
    schema:description "全スレッドを高優先度にする、あるいは最上位優先度クラスを使うと、システムの他の処理が締め出されてかえって挙動が乱れやすくなる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setpriorityclass> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/thread-priority-class/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/soft-realtime/> ;
    schema:description "REALTIME_PRIORITY_CLASSのような最上位優先度クラスを、必要性が明確になるまで使うことは推奨されない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setpriorityclass> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/soft-realtime/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/cpu-sets/> ;
    schema:description "Windows上でのソフトリアルタイム処理では、CPU配置は特定コアへの固定より先に、CPU Setsのようなやわらかい指定から始めるほうがうまくいくことが多い"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/procthread/cpu-sets> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cpu-sets/> ;
    rdf:predicate ks:shouldPrecede ;
    rdf:object <https://comcomponent.com/knowledge/cpu-affinity/> ;
    schema:description "CPU配置の調整はまずCPU Setsやideal processorのようなやわらかい指定を試し、それでも改善しない場合にだけ特定コアへの固定(hard affinity)を検討すべきである"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setthreadaffinitymask> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/thermal-throttling/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/jitter/> ;
    schema:description "長時間の高負荷運転でサーマルスロットリングが入ると、それまで安定していた周期処理の実行時間が崩れる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows-hardware/customize/power-settings/configure-processor-power-management-options> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dpc-isr/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/jitter/> ;
    schema:description "DPCやISRの実行時間が長いと、その間user-modeのスレッドは実行できず遅延とジッタの主要因になる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/introduction-to-dpc-objects> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/page-fault/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/jitter/> ;
    schema:description "ホットパスでページフォールトが起きるとページの取得待ちが発生し、遅延が一気に大きくなる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-virtuallock> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dpc-isr/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/wpr-wpa/> ;
    schema:description "DPC/ISRが原因かどうかは、ETWベースのWPR/WPAでCPU・context switch・DPC/ISRの実行時間を掘り下げて確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows-hardware/test/wpt/cpu-analysis> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dpc-isr/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/latencymon/> ;
    schema:description "ドライバ起因のDPC/ISR遅延は、LatencyMonでドライバ別のISR/DPC実行時間を集計して当たりを付けられる"@ja ;
    ks:evidence <https://www.resplendence.com/latencymon> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/page-fault/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/wpr-wpa/> ;
    schema:description "page faultの発生状況もETWベースのWPR/WPAのトレースから掘り下げて確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows-hardware/test/wpt/cpu-analysis> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
