ページへ戻る

− Links

 印刷 

OT​/0006 のバックアップの現在との差分(No.3) :: OSASK計画

osaskwiki:OT/0006 のバックアップの現在との差分(No.3)

« Prev[4]  
3: 2009-11-17 (火) 12:06:28 ソース[5] 現: 2024-01-08 (月) 12:58:49 k-tan[6] ソース[7]
Line 1: Line 1:
-* OSASKにおけるシステムコール(API-CALL)+TITLE:x 
 +* OSASKにおけるシステムコール(API-CALL) [#he34a2b4]
-[[OsaTech]]より -[[OsaTech]]より
-(by [[K]], 2009.07.17) -(by [[K]], 2009.07.17)
-*** (1)+*** (1) [#db01b6b9]
-既存のさまざまなOSは、それぞれにアプリケーションを書くことができて、アプリからOSを呼び出すことができる。ここではその呼び出し方について記述する。 -既存のさまざまなOSは、それぞれにアプリケーションを書くことができて、アプリからOSを呼び出すことができる。ここではその呼び出し方について記述する。
-まず代表的な方法を記述しておくと、こんな感じだろうと思われる。 -まず代表的な方法を記述しておくと、こんな感じだろうと思われる。
Line 16: Line 17:
-ソフトウェアINTは、APIブリッジが構築しにくいだろうということで捨てた。IDTはシステム全体に対して一つだけど、LDTはタスクの数だけある。そうすると、タスクごとに異なる設定にできるのはLDTのほうで、だからLDT上のコールゲートを使うのがいいと考えたのだ。APIブリッジとは、APIのリダイレクトというか、API-CALLを横取りしてエミュレーションするようなものである。このとき、タスクによって横取りするかしないか、もしくは横取り後の処理の仕方をタスクごとに変えたいなど、そういうことをするにはIDT上のベクタを使うわけには行かなかったのである。 -ソフトウェアINTは、APIブリッジが構築しにくいだろうということで捨てた。IDTはシステム全体に対して一つだけど、LDTはタスクの数だけある。そうすると、タスクごとに異なる設定にできるのはLDTのほうで、だからLDT上のコールゲートを使うのがいいと考えたのだ。APIブリッジとは、APIのリダイレクトというか、API-CALLを横取りしてエミュレーションするようなものである。このとき、タスクによって横取りするかしないか、もしくは横取り後の処理の仕方をタスクごとに変えたいなど、そういうことをするにはIDT上のベクタを使うわけには行かなかったのである。
-そんなわけで、第一世代OSASKでは、LDT上のコールゲートを呼ぶことがシステムコールだった。 -そんなわけで、第一世代OSASKでは、LDT上のコールゲートを呼ぶことがシステムコールだった。
-*** (2)+*** (2) [#h55e5146]
-第二世代OSASKでは、全く別の観点からどうするかを考えた。第二世代OSASKのアプリケーションは、efg01等によって、ほぼ全てのx86のOS上で実行可能になることを最優先で設計した。さらにefg01はアプリケーションとして記述可能で、ドライバなどの支援は極力あてにしないことにした(そうでないとefg01の移植が困難になる恐れがある)。 -第二世代OSASKでは、全く別の観点からどうするかを考えた。第二世代OSASKのアプリケーションは、efg01等によって、ほぼ全てのx86のOS上で実行可能になることを最優先で設計した。さらにefg01はアプリケーションとして記述可能で、ドライバなどの支援は極力あてにしないことにした(そうでないとefg01の移植が困難になる恐れがある)。
-そうすると、win32やLinux上ではセグメンテーションを活用したプログラミングはほとんど期待できないし、ましてLDTなどをアプリケーションが設定できる期待も持てないので、第一世代OSASKのやり方は使えない。IDTの設定もアプリからできるなんて期待できないので、ソフトウェア割り込みもボツ、例外もボツ。・・・こうしてnear-CALLだけが残った。 -そうすると、win32やLinux上ではセグメンテーションを活用したプログラミングはほとんど期待できないし、ましてLDTなどをアプリケーションが設定できる期待も持てないので、第一世代OSASKのやり方は使えない。IDTの設定もアプリからできるなんて期待できないので、ソフトウェア割り込みもボツ、例外もボツ。・・・こうしてnear-CALLだけが残った。
-そんなわけで、第二世代OSASKでは、起動時に教えられたアドレスへnear-CALLすることがシステムコールとなっている。 -そんなわけで、第二世代OSASKでは、起動時に教えられたアドレスへnear-CALLすることがシステムコールとなっている。
-* こめんと欄+* こめんと欄 [#t0806dad]
#comment #comment
« Prev[4]