Transaction Processing Facility

Transaction Processing Facility (TPF) は、IBMのメインフレーム用の、大容量トランザクション処理に特化したオペレーティングシステム (OS) である。
高い信頼性を持ち、1秒間に最大数万件のトランザクションを処理できるため、航空路管制や座席予約システム（CRS）など航空業界で多く利用される他、金融業界でも使われている。最新版はSystem z用のz/TPF V1.1である。
なお同じSystem zで稼動するz/OSやz/VSEやz/VMなどのOSとは、別物である。
概要.
SABREから発展し、1960年代中ごろIBMが欧米の主要な航空会社と共同で開発したを起源とするOSである（ACPは無料）。1979年、IBMがACPの代替としてTPFを有料の製品として登場させた。その名称は従来よりも適用範囲が広いことを示唆している。
予約システムのユーザーとしては、SABRE、Holiday Inn、シンガポール航空、KLMオランダ航空、カンタス航空、アムトラック、マリオット・インターナショナル、日本航空などがある。またVisa（認証システム）、CBOE（オプション取引の注文システム）、ニューヨーク市警察なども導入している。
TPFは、高速・大量・高スループットのトランザクション処理が可能で、大規模な広域ネットワークでのトランザクションを継続的に大量に処理する。大規模なTPFシステムで毎秒数万トランザクションを処理するのはたやすい。TPFは高信頼でもあり、いわゆる24×7の連続運用が可能である。TPFのユーザーがシステムとソフトウェアのアップグレードを行いつつ10年以上もオンライン処理を継続していることも珍しくない。IBMは類似のトランザクション処理システムとしてCICSやIMSを持っているが、それらとの違いはTPFの大容量/同時ユーザー接続数/高速応答時間などの優位性である。
TPFにはPARSと呼ばれるアプリケーションがある。多くの航空会社はPARSまたは国際版の IPARS を座席予約システムに使用している。TPFは性能を重視したため 370アセンブリ言語で書かれており、アプリケーションもアセンブリ言語で書かれたものが多数存在する。しかし、最近のTPFはC言語を使うようになってきている。TPF 向けのプログラミング言語として SabreTalk というPL/Iの派生言語があった。TPFの主要コンポーネントはTPFDFと呼ばれる高性能データベースファシリティである。
TPFを採用しているサイトでは、トランザクション処理以外の用途で、他のIBMメインフレーム用オペレーティングシステム（z/OSやz/VM）も使っていることが多い。逆にz/OS上でTPFから派生したトランザクション処理システムALCSを動作させる場合もある。IBMのパーティショニング技術により、これらのOSは1つのメインフレーム上に共存できる。
TPFのSystem z (z/Architecture)対応であるz/TPFは2005年に登場した。64ビットに対応しており、GCCコンパイラを含むGNUツールが使用可能となっている。
IBMのオープン対応により航空業界以外では入れ替えが進んでおり、JTBでは基幹システムであるTRIPSを2009年にSystem pへ移行した
オペレーティング環境.
密結合.
TPF はマルチプロセッサでの動作が可能である。TPF のプログラムはリエントラントであるため、マルチプロセッサであっても全く問題なく動作する。立ち上がり時にメインのCPUが決定される。プログラムはAPIによって明示的に使用するCPUを指定される。z/TPFでは、CPUを指定しないで起動されたアプリケーションは負荷バランスを調整するようになっている。
TPFアーキテクチャでは、各CPUはメモリを共有するが、CPU毎の固有領域が4Kバイトずつ存在する。アプリケーションでCPU毎に固有のメモリ領域が必要な場合、各CPUに同サイズの領域を割り当てるようアプリケーションを設計する。例えば、この方式でTPFではCPU毎にユニークなグローバル変数をサポートしている。このような領域へのアクセスはベースアドレスに自動的にCPU番号に相当する値を加算することで行われる。
疎結合.
TPFは複数台のメインフレームを共通のデータベースに接続したシステムでも動作する。TPFのデータベースは最大32台のメインフレームで共有可能である。最も単純な疎結合システムは、2台のメインフレームを1台のDASD (Direct Access Storage Device) に結合したものである。この場合、制御プログラムは各メインフレームに置かれ、どのメインフレームからも同じデータベースにアクセス可能である。
疎結合システムでアクセスをシリアライズするためレコードロックと呼ばれる手法が使われる。これは、レコードをあるプロセッサが保持している場合、他のプロセッサが同じレコードを保持しようとした際にそれらを待たせ、プロセッサ間で通信を行う方式である。密結合システムではレコードロックの状況を共有メモリ上に書いておけばよいので簡単だが、疎結合システムではDASD制御装置での追加の処理が必要となる。歴史的にはこの機能はRPQ（個別対応）とされていた。そのため、RPQ対応されていないDASDでは、Coupling Facilityという別のレコードロック方式が使われている。