kern - みる会図書館


検索対象: UNIX MAGAZINE 1990年9月号
6件見つかりました。

1. UNIX MAGAZINE 1990年9月号

MACH Operating System kern—retum—t task—resume(target—task) target—task ; task—t kern—return—t task—suspend(target—task) port—t task-notify ( ) task—t task—self() port—t int tagk—t れ - t int tagk-t task—t speci ー po れ ; whi 曲一四れ ; kern—return-t task—get-gpecial-port(task, whxch-port, gpecial-port) *specia-l-port; / * out * / vhich—port; t 囲 kern-return-t task-get-special-port(task, which-port, special-port) target—task; kern-return—t task—info (target—task , flavor , t k ー土 0 , task—inf0Cnt) task_t int task_info_t れ s 土 ed int target—task; flavor; / * in 田 ld out * / task-info ; *tagk-inf0Cnt ; / * in and out * / kern—return-t task-threads (target-tagk , thread-list , thread-count) task_t target—task ; / * out , ptr to array * / thread—array-t *thread-list ; kern—return—t thread—create(parent—task, child—thread) int *thread-count ; / * out * / task_t thread_t parent—task; *child—thread; / * out * / kern—return—t thread—teminate(target—thread) thread—t target—thread; kern—return-t thread-suspend(target-thread) ; target—thread; thread—t kern—return—t thread—resume(target—thread) thread-t target—thread; kern-return-t thread-abort(target-thread) special—port; which—port ー thread; kem—return-t thread-set—special-port(thread' which—port, special-port) *special—port ; which—port; thread : kern-return-t thread-get-special-port(thread' which-port, special-port) target—thread ; port-t thread-reply() thread-t thread-self() れ - t int thread—t port—t int thread—t thread—t kern—return—t thread-info(target—thread, flavor' thread—inf0' thread-t int thread—info-t unsi&ied int thread-inf0Cnt) target-thread flavor ; thread-info; / * in and out ネ / *thread—infoCnt; / * and out * / kern-return—t thread-get-state(target-thread, flavor, old-stat% thread—t int thread—state-data—t unsi&ied int 01d—stateCnt) target—thread ; flavor; old-state ; *01d—stateCnt kern—return—t thread—set—state(target—thread, flavor, new—state, UNIX MAGAZINE 1990.9 75

2. UNIX MAGAZINE 1990年9月号

MACH Operating System—朝 kern—return—t port—allocate(task, port—name) task—t task ; port—name—t *port—name ; ″ out * / kern—return—t port—deallocate(task, po れ一Ⅱ 3 e ) task—t task; port name—t port—name; kern—return—t port—status(task, port—name, enabled, num—msgs, backlog, ovner, receiver) task—t task; port—name—t port—name; port-set-name—t *enabled; int *num—msgs ; int *backlog; b001e 田 1- t *ovner; れ t *receiver ; ″ out * / ″ out * / kern—retum—t port-get—backlog(task, れ一Ⅱ ame , backlog) task—t task; port—name—t port—name; int backlog; kern—return—t port—set—allocate(task, get—name) port—set—name—t *set—name; task—t task; kern—return—t port—set—status(task, set—name' members' membersCnt) port—name—t port—name ; task—t task ; kern—retum—t port—set—remove(task, port—name) port—name—t port—name; port—set—name—t set—name; task—t task ; kern—return—t port-set—add(task, set—name' port-name) port—set—name—t set—name ; task-t task; kern—retum—t port—set—deallocate(task, set—name) task_t task ; port—set—name—t set—name; port—name—array—t *members ; unsigned int *membersCnt; / * out array * / kern—return—t port—insert—gend (task , my—port , hi 3 ーれ e ) task_t task ; れ一 t my-port; port—name—t his—name; kern-return-t port—insert—receive(task, my—port' his-name) task—t task; port-t my-port; port name—t his—name; kern—return—t port—extract—send(task, his—name' his—port) port—t *his—port ; port—name—t his—name; task—t task ; kern—return—t port—extract—receive(task, his name , his—port) れ一 t *hig-port; port—name—t his—name; task—t task ; kern—return—t task—create(parent—task, inherit—memory• task—t boolea れ t task—t child-task) parent-task inherit—memory; *child—task; / * out * / kem—retum—t task—teminate(target—task) target—task; task—t 74 UNIX MAGAZINE 1990.9

3. UNIX MAGAZINE 1990年9月号

MACH Operating System thread—t int thread—ßtate—data.-t ng 土空 e 臧 int new—BtateCnt) target—thread flavor; new—8tate; nev—Btat&t; kern—return—t vm—allocate(target—task, address, size, anyvhere) vm—task—t vm—address—t vm—size—t boolean-t target—task; *address ; S1ze; anywhere; kern-return—t vm-deallocate(target-task, address , size) vm—task—t vm-address—t vm—Bize—t target—task ; address, SIZe ー kem—return—t vm—read(target—task, address , size, data, data—count) vm—task—t vm—address—t vm—size—t pointer—t int target—task address; S 1Ze ; *data; *data—count ; kern—return—t vm—vrite(target—task, address , data , data—count) vm—task—t vm—address—t pointer—t int vm-task—t vm—address—t vm—Bize—t vm—address—t target—task; address; data; data—count; kern—return—t vm—copy (target—task' source—addres s, target—task ; sou.rce address; count; dest_address; co れ t , dest—address) kern—return—t vm—region(target—task, address, 812e , protection, vm—task—t vm—address—t vm—size—t vm—prot—t vm—prot—t vm—inherit—t b001e5 ー t port-t vm—offset—t max—protection, inheritance, shared, object—name, offset) target—task; / 車 in/out り 申 ad e33 ー *Size : *protection; / * out * / *max—protection; *inheritance; / * out * / *shared; *object—name; / * out * / *offset; kern—return—t vm—protect(target—task, address, sxze, new—protection) vm—task—t vm—address—t vm—Bize—t b001e - t vm—prot—t target-task; address; SIZe ー get—maxxmum ; nev—protection; kern—return—t vm—inherit(target—task, address, BIZe , new—mheritance) vm—task—t vm—address—t vm—g ize—t vm—inherit—t target—task; address; SIZe ; new—inheritance; kern—return—t vm—statistics(target—task, vm—stats) task—t target—task; vm—statistics—data—t *vm—stats; kem-return—t mach—ports—register(target—task, task-t れ - 丁 ay - t int init-port-set , init—port—array—count) target—task ; ″ array り xnit—port—set ー mit—port—array—count kern—return—t mach—ports—lookup(target—task, init—port—set , init—port—array—count) task_t 76 target—task ; UNIX MAGAZINE 1990.9

4. UNIX MAGAZINE 1990年9月号

MACH Operating System ー朝 port-array-t int / * out array * / *init—port—set ; *init—port—array—count; / * out * / kern—retum—t host—ipc—statistics(task, statistics) task—t target—task ; ipc—statistics—t *statiBticg; kern—return-t vm-map(target-task, address, size, mask, anyvhere, cur—protectlon, max—protection, memory—0bJect , offset, copy, 土 n e て土 t 田 ice ) task—t vm—offset—t vm—size—t vm—offset—t boolea れ t vm_offset_t boolean-t vm—prot—t vm—prot—t vm—inherit—t target—task; *address ー SIZe ー mask; anywhere; memory—object—t memory-0bJect; offset ; COPY; cur—protection; max_protection; inheritance ; memory—object—control—t offget, data, data—count, lock—value) kern—return—t memory—object-data—provided(memory-control, vm—offset—t pointer—t int vm—prot—t memory—control; offset : data; data—count; lock—value; kern—return—t memory—0bJect—data—unavai1ab1e(memory—controI, offset, Size, reason) : memory—object—control—t vm—offset—t vm—size—t memory—control ー offset ; sxze ー kern—return—t reason; kem—return—t memory—object—data—unava-llable(memory-control, memory—object—control—t offset, Bize) vm—offset—t 、@ー8土ze-t memory—control; offget; BIZe ; kern—return—t memory—object-lock-request(memory-control, offset , 8 土 ze , s 五 0 ld ー clea should-flush, lock-value, reply—to) memory—object—control—t vm—offset—t vm—8ize—t olea れ t 01e5 ー t 01e5- t れ - t memory—control; offset ; SiZe ; 8h0 ld - cle ー should—flush; lock—value; reply-to; kern—return—t memory-object—set—attributes(memory-control, object—ready, may-cache-object, copy-Btrategy) memory—object—control—t b001e ー t 201e 田 1 ー t memory—control; object—ready; may—cache-object; memory—object-copy—strategy—t copy-strategy , UNIX MAGAZINE 1990.9 77

5. UNIX MAGAZINE 1990年9月号

MACH Operating System— Subject: Mac Mach ? ? ? msg—retum—t msg—receive(header, opt 土 0 , timeout) msg—timeout—t timeout; option; msg—option—t *header; msg—header—t msg—retum—t msg—send(header, option, timeout) 図ー Mach2.5 カーネルコールの一覧 メモリオプジェクトおよびコピーオンライト機能の使い メモリオプジェクト・サーバーを作ろうとする場合の、 write Subject: simple question on memory objects and copy-on- る問題についての言磊義です。 Mach や ISIS などのソフトウェアの米国外輸出に関す Subject: DOC export licenses います。 ーサー向けのプロダクトではないことなどが述べられて へ提供するシステムソフトウェア環境であり、エンドユ 要としないものになる、ただし、これは企業や研究機関 り、開発中のピュアカーネルは AT&T ライセンスを必 ついての言繻義です。 CMU の Rahid 氏からフォローがあ 巷間で噂されている Mach のフリーソフトウェア化に Subject: when will mach be free software ? Mach) のリリースを準備中であると報告されています。 様についての論議です。 Mt. XINU がこれ (Mac Macintosh 版の Mach のリリース・スケジュール、仕 msg—return—t msg—rpc(header, opt 土 0 Ⅱ , rcv—size, msg—timeout—t ti-meout; option; msg—option—t *header, msg—header—t / * in /out * / 方についての言侖です。 Subject: Mach distribution Mt. XINU からの Mach 配布についての投稿です。 Mt. XINU から配布されるものには、 2.5 Mach kernel (NFS & BSD-tahoe 拡張を含む ) Transarc's AFS X11.4 4.3-tahoe BSD リリースのほとんどの機能 Andrew ツールキット Camelot transaction processing system CorneII 大学の ISIS distributed programming envi- されること、などか報告されています。 などが含まれること、 386 版 Mach も今夏にはリリース 大半の FSF ューティリティ ronment ( ひとみ・きよし msg—header-t msg—option-t msg—size—t msg—t imeout—t msg—timeout—t send—timeout, rcv—timeout) *header; option; rcv_S1ze ー send—timeout ー rcv—timeout; kern—return—t port—names(task, port—names, port—namesCnt , port-types , port-typesCnt) task—t task : port-name—array-t *port-names; / * out array * / unsigred int *port—namesCnt; / * out * / port—type-array-t *port-types; / * out array * / unsigned int *port—typesCnt; / * out * / kern—return—t port-type(task' port-name' port—type) port-type-t * れ一 t port—name—t port—name ; task—t task ー UNIX MAGAZINE 1990.9 port—name—t Ⅱ e ーれ e ー port—name—t 01d ーⅡ tagk—t task ; kern—retum-t port—rename(task, 01d ーれ e , new-name) オムロン ) 73

6. UNIX MAGAZINE 1990年9月号

MACH Operating System トに対する操作をバックアップする機能を明確にしたもの る受信権をもつタスクが終了してしまった場合、そのポー バックアップ・ポートという概念は、あるポートに対す 加しました。 ートに対してバックアップ・ポートを設定できる機能を付 backup について解説します。 Mach 2.5 では、任意のポ そこで、新規に追加になった関数のうちます port-set- パックアップ・ポートの概念 ゝです ( 従来は、ポートの所有権というかたちで表されてい ました ) 。これまでは、ポートに対する受信権をもっタスク か死ぬと、そのポートに対する所有権をもっタスクがバッ クアップをおこなうようになっていました。ポートが生成 された時点では、そのポートに対するバックアップ・ポー トは存在しません。あるポートに対してバックアップ・ポ ートを指定するために、 Mach 2.5 では以下に示す port- set-backup という新たなカーネルコールが追加されてい ます。 kern—return—t port—set—backup(task,primary ,backup,previous) task—t task port-name-t primary port—t backup ; port—t *previous ; / * out * / さて、この関数の仕様は以下のようになります。 バックアップ・ポートを設定しようとしているターゲッ ト・ポートに対して受信権をもっタスクは、 task で指定し ます。ターゲット・ポートは pr 面 ary で指定することにな ります。この組合せカ坏適切な場合ーーすなわち primary に対する受信権をもっていないタスクを指定したときは 工ラーとなります。 prmary に対するバックアップ・ポー トは、 backup で指定します。処理が正常に実行されると、 戻り値として KERN-SUCCESS が返ってきます。このと き、 previous で指定したアドレスに以則設定されていた バックアップ・ポートが返ってきます ( バックアップ・ポー トが設定されていなかった場合は P 〇 RT- NULL が返りま このようにして、任意のポートにバックアップポートを 設定することができるわけです。バックアップ・ポートを 設定しておくと、 pnmary ポートに対して受信権をもつタ スクが終了したとき ( 死んでしまった場合 ) 、カーネルから バックアップ・ポートに対してメッセージ (NOTIFY PORT-DESTR 〇 YED) が送られます。 バックアップ・ポートについて述べてきましたが、 でこの新しい概念と従来の所有権の概念との関係に触れ ておきましよう。今年 4 月に作成された新版のマニュアル では、所有権の解説のところに次の NOTE カ咐記されて います。 NOTE: the ownership abstraction is considered obsolute 72 つまり、現バージョン ( 2.5 ) ではとりあえす所有権の概 念とバックアップ・ポートの概念を並存させておくが、ゆ くゆくは所有権をバックアップ・ポートに置き換えていく つもりである、ということが述べられています。そうした わけで、今後のバージョンアップにより、ポート所有権の 概念は消えていく運命にあると思われます。 Mach2.5 のカーネルコールのうちとくに大きく変った 部分は、このポートのハンドリング部と仮想記憶管理部 ( と くに外部ページャ ) です。宿題となっている外部ページャの 部分もそろそろ整理がついてきたので、近いうちに解説す ることができるでしよう。 なお、末尾の図 1 に 1990 年 4 月 12 日付の Mach Ker- nel lnterface ManuaI に記載されている Mach カーネル コールの一覧を示しておきます。 comp. OS. mach から comp. os. mach の記事のうち、おもだったものの内容 を記しておきます ( 1990 年 7 月 20 日現在 ) 。 UNIX MAGAZINE 1990.9 and has been replaced with the use of a backup port. This is a port associated with a primary port , tO which the receive rights Of the primary port will be sent in the event Of an attempted destriction Of the primary port. Current version 0f MACH implement both mechanisms, but the ownership rights may disappear in future releases.