#!/bin/sh
# This is a shell archive (produced by GNU sharutils 4.2).
# To extract the files from this archive, save it to some FILE, remove
# everything before the `!/bin/sh' line above, then type `sh FILE'.
#
# Made on 1997-09-29 17:59 JST by <itojun@cardamom.itojun.org>.
# Source directory was `/usr/home/itojun/paper/9709.keio-seminar'.
#
# Existing files will *not* be overwritten unless `-c' is specified.
#
# This shar contains:
# length mode       name
# ------ ---------- ------------------------------------------
#   1888 -rw------- abstract.tex
#   3092 -rw-r--r-- abst1.tex
#   2513 -rw-r--r-- abst2.tex
#
save_IFS="${IFS}"
IFS="${IFS}:"
gettext_dir=FAILED
locale_dir=FAILED
first_param="$1"
for dir in $PATH
do
  if test "$gettext_dir" = FAILED && test -f $dir/gettext \
     && ($dir/gettext --version >/dev/null 2>&1)
  then
    set `$dir/gettext --version 2>&1`
    if test "$3" = GNU
    then
      gettext_dir=$dir
    fi
  fi
  if test "$locale_dir" = FAILED && test -f $dir/shar \
     && ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
  then
    locale_dir=`$dir/shar --print-text-domain-dir`
  fi
done
IFS="$save_IFS"
if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED
then
  echo=echo
else
  TEXTDOMAINDIR=$locale_dir
  export TEXTDOMAINDIR
  TEXTDOMAIN=sharutils
  export TEXTDOMAIN
  echo="$gettext_dir/gettext -s"
fi
touch -am 1231235999 $$.touch >/dev/null 2>&1
if test ! -f 1231235999 && test -f $$.touch; then
  shar_touch=touch
else
  shar_touch=:
  echo
  $echo 'WARNING: not restoring timestamps.  Consider getting and'
  $echo "installing GNU \`touch', distributed in GNU File Utilities..."
  echo
fi
rm -f 1231235999 $$.touch
#
if mkdir _sh02837; then
  $echo 'x -' 'creating lock directory'
else
  $echo 'failed to create lock directory'
  exit 1
fi
# ============= abstract.tex ==============
if test -f 'abstract.tex' && test "$first_param" != -c; then
  $echo 'x -' SKIPPING 'abstract.tex' '(file already exists)'
else
  $echo 'x -' extracting 'abstract.tex' '(text)'
  sed 's/^X//' << 'SHAR_EOF' > 'abstract.tex' &&
%
%	jabstract.tex:
%
% 	(C) Copyright 1989, Maruichi Takeo 		(Use jLaTeX)
%
%
\documentstyle[12pt]{jarticle}
%\documentstyle[12pt,b5j]{jarticle}
X
%\oddsidemargin= -1cm
%\evensidemargin= -1cm
\oddsidemargin= 0truecm
\evensidemargin= 0truecm
\topmargin=-2truecm
%\topmargin=0truecm
\textwidth=16truecm
\textheight=25.5truecm
X
\renewcommand{\baselinestretch}{1.0}
X
\thicklines
\begin{document}
\pagestyle{empty}
\begin{tabular}{|p{2.0cm}|p{4.5cm}|p{1.1cm}|p{4.9cm}|}
\multicolumn{4}{c}{\Large 主\hspace{5mm}論\hspace{5mm}文\hspace{5mm}要
\hspace{5mm}旨}	\\[0.3cm]
\hline
X	&	&	&	\\[-0.5cm]
\multicolumn{1}{|c|}{報告番号}	& \hspace{0.2cm}甲\hspace{0.2cm}第
\hspace{2.0cm}号 & \multicolumn{1}{c|}{氏名} & \hspace{0.75cm}
X伊\hspace{0.2cm}藤\hspace{0.5cm}純\hspace{0.2cm}一\hspace{0.2cm}郎\\[0.2cm]
%	&	&	&	\\[-0.5cm]
\hline
\multicolumn{4}{|l|}{}\\[-0.5cm]
\multicolumn{4}{|l|}{主論文題名} \\
%\multicolumn{4}{|l|}{}\\%[-0.5cm]
\multicolumn{4}{|c|}
{\bf 自己反映オブジェクト指向OSにおけるシステムプログラミングに関する研究}\\[+0.2cm]
% {マルチステージインタコネクションネットワークに関する研究}
%\multicolumn{4}{|l|}{}\\[-0.5cm]
%\multicolumn{4}{|l|}{}\\[-0.5cm]
\hline
\multicolumn{4}{|l|}{}\\[-0.3cm]
\multicolumn{4}{|l|}{内容の要旨}\\[+0.5cm]
%
\multicolumn{4}{|l|}{\hspace*{0.5cm}\parbox[b]{13.0cm}{\hspace*{0.5cm}
%\renewcommand{\baselinestretch}{1.0}
%first page here
\input{abst1}
\\[2cm]
}
}\\
\hline
\end{tabular}
\newpage
\vspace*{1truecm}
\begin{tabular}{|p{13.9cm}|}
\hline \\
\hspace*{0.5cm}\parbox{13.0cm}{
%\renewcommand{\baselinestretch}{1.0}
%second page here
%\hspace*{0.4cm}
\input{abst2}
}
%\vspace{2.5cm}
%\hspace*{0.5cm}\\[+2.0cm]
\hspace*{0.5cm}\\[+0.5cm]
\hfill 以上\hspace{2cm}\\[+0.4cm]
%\vspace*{0.5cm} \\
\hline
\end{tabular}
\end{document}
SHAR_EOF
  $shar_touch -am 0929124497 'abstract.tex' &&
  chmod 0600 'abstract.tex' ||
  $echo 'restore of' 'abstract.tex' 'failed'
  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
    || $echo 'abstract.tex:' 'MD5 check failed'
24f3c1536fa0c57fdeb5b5e513add5a5  abstract.tex
SHAR_EOF
  else
    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'abstract.tex'`"
    test 1888 -eq "$shar_count" ||
    $echo 'abstract.tex:' 'original size' '1888,' 'current size' "$shar_count!"
  fi
fi
# ============= abst1.tex ==============
if test -f 'abst1.tex' && test "$first_param" != -c; then
  $echo 'x -' SKIPPING 'abst1.tex' '(file already exists)'
else
  $echo 'x -' extracting 'abst1.tex' '(text)'
  sed 's/^X//' << 'SHAR_EOF' > 'abst1.tex' &&
X来るべき超分散計算機環境に対応するためのオペレーティングシステムとして、
X著者は自己反映オブジェクト指向OS、Apertosの研究開発に従事してきた。
X超分散計算機環境では、地理的/ネットワーク的に離れた地点にある計算機や
X計算機を利用するユーザの要求、ネットワークの状況などは、
X静的なものではなく、時々刻々変化し続けるものと考えなければならない。
Xこのような計算機環境に対処するためには、
Xこれまでのように静的な環境を前提としたOSでは不足と考えられる。
Xこの問題に対処するために、横手らによって基本設計が行われたApertosでは、
X並行オブジェクト指向と自己反映計算が設計の基礎におかれている。
Xこれら2つの考えを基本原則におき、これに則ってOS全体を構築することで、
X計算機環境に対し柔軟性を持ったOSの構築が可能となる。
\\[+0.4cm]
Xしかしながら、既存のCPUのアーキテクチャ上にApertosを実装する場合、
X古典的なOSに比べ性能面で不利な点がいくつか発生する。
X例えば、既存CPUアーキテクチャの仮定しているOS--ユーザプログラム間の
Xインタフェースと、
Apertosの提供するインタフェースの差異を吸収するためのコストが発生する。
Xまた、OSを構成するプログラムを分割された並行オブジェクトとして実装するために
X発生するオブジェクト間実行遷移のコスト、
X自己反映計算のためのオーバヘッドが挙げられる。
\\[+0.4cm]
%現在一般的なCPUでは、OSはユーザアプリケーションに対し
%単一のOSサービスインタフェースを提供することが仮定されている。
%Apertosでは複数のOSサービスインタフェースの実現が必要となるので、
%システムコールインストラクションを仮想化しなければならない。
%また、 ApertosではOSの核をなすソフトウェアもすべて分割された
%並行オブジェクトとして構成される。
%このため、並行オブジェクトによらないソフトウェア構成を行ったオペレーティング
%システムに比べ、オブジェクト間の実行遷移によるオーバヘッドが加わる。
%さらに、自己反映計算によるソフトウェア構築のために、
%古典的な構築法でつくられたソフトウェアに比べ
%ベースとメタの間の実行遷移、すなわち
%ユーザのソフトウェアとユーザに対し計算環境を提供するソフトウェアの間の
%実行遷移コストが加わるため、これもオーバヘッドとなる。
%自己反映言語システムの場合には、部分計算や実行時コンパイルなどの利用により
%複数オブジェクトのプログラムコード、あるいはベースとメタの計算を
%融合させることが可能であるが、
%Apertosは言語システムでなくOSであるため、
%言語システムでのようなアプローチはとり難い。
X以上のような問題を解決するためには、
X計算機環境に対する柔軟性を重視して設計されたソフトウェアの実行性能を、
X静的に構築されたソフトウェアの実行性能に近付けるための
X実行最適化技法が重要となる。
Xまた、実装の場面により、ソフトウェア構築時に適切なオブジェクトの粒度を
X考え設計することが必要である。
X本論文では、以下挙げる3つの実装・評価を通し、
X自己反映オブジェクト指向OSにおける実行時最適化技法を提案する。
Xまた、Apertosにおいて適切な粒度のオブジェクトを用いた設計事例を示す。
\\[+0.4cm]
SHAR_EOF
  $shar_touch -am 0929133797 'abst1.tex' &&
  chmod 0644 'abst1.tex' ||
  $echo 'restore of' 'abst1.tex' 'failed'
  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
    || $echo 'abst1.tex:' 'MD5 check failed'
9c6156d6495afd3dc64ec0e981d37fe7  abst1.tex
SHAR_EOF
  else
    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'abst1.tex'`"
    test 3092 -eq "$shar_count" ||
    $echo 'abst1.tex:' 'original size' '3092,' 'current size' "$shar_count!"
  fi
fi
# ============= abst2.tex ==============
if test -f 'abst2.tex' && test "$first_param" != -c; then
  $echo 'x -' SKIPPING 'abst2.tex' '(file already exists)'
else
  $echo 'x -' extracting 'abst2.tex' '(text)'
  sed 's/^X//' << 'SHAR_EOF' > 'abst2.tex' &&
%\\[+0.4cm]
% (0) Apertos/i486の移植
(1) Apertos上におけるデバイスドライバ:
X一般のOSでは、デバイスドライバは通常割り込みによる実行列とそれ以外の場合の
X実行列のふたつによって実行されるため、
OSカーネルの並行制御上特殊な存在として実現される。
Xここでは、Apertosの並行オブジェクトのモデルを崩すことなく、
Xデバイスドライバの構築を行う事例を示す。
X本方法では並行オブジェクトモデルにおけるオブジェクト単位の排他制御を
X割込処理に関する排他制御と結びつけ、デバイスドライバの簡便な実装環境を提供する。
XこれによりApertosの設計モデルの柔軟性が示される。
Xまた、デバイスドライバオブジェクトに適した実行最適化技法を実装することにより、
X実行オーバヘッドの削減が可能となる。
\\[+0.4cm]
(2) Apertos上のプロトコルスタック:
Xインターネットプロトコル(IP)処理のためのプロトコル処理部のモジュール化に
X関していくつかの方式が提案されている。
Xしかし、これまで提案された方法のほとんどはプロトコルスタックを
X静的なものとしてとらえ、ソフトウェアの柔軟性を持たない実装方式をとっている。
X実際には、プロトコルの仕様変更などに対処するため、プロトコル処理部は
X柔軟性を保って実現されることが望ましい。
XここではApertos上で、IPv4/v6プロトコル処理部を並行オブジェクト群として
X構築した事例を示す。
X各プロトコル処理部を独立した並行オブジェクトとし、
Xパケットをオブジェクト間で受け渡される受動的なデータとすることで、
Xプロトコル処理部の柔軟性を損なわない実装が可能となる。
Xまた、プロトコル処理のための実行最適化技法を実装することにより
X実行性能を向上する。
\\[+0.4cm]
(3) Apertosのための仮想機械:
X自己反映言語システムの実装は、しばしば仮想機械ベースで行われる。
Xここでは、Apertosのアーキテクチャにあわせた仮想機械を設計した事例を示す。
Xこの仮想機械には基本仮想命令セットが2つしかない。
Xベースオブジェクトのプログラムは、この2つの仮想命令を用いて記述された
Xメタオブジェクトの呼出列として実現される。
Xすなわち、基本仮想命令のオペランドの意味は、全て自己反映計算により
Xメタオブジェクトによって決定される。
Apertosオブジェクトの実現方法のひとつに仮想機械を導入することで、
Xコンパイラ技術の導入による実行最適化の可能性が与えられる。
\\[+0.4cm]
X以上3つの設計実装より、自己反映オブジェクト指向OSの
X効率的実装手法が示された。
Xまた、デバイスドライバやプロトコル処理部などのOSの基本構成オブジェクトを
Apertos上で設計する際の指針が示された。
%\\[+0.4cm]
SHAR_EOF
  $shar_touch -am 0929134297 'abst2.tex' &&
  chmod 0644 'abst2.tex' ||
  $echo 'restore of' 'abst2.tex' 'failed'
  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
    || $echo 'abst2.tex:' 'MD5 check failed'
6ce7f4ae18c0cafc5e4c78128c2cfd08  abst2.tex
SHAR_EOF
  else
    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'abst2.tex'`"
    test 2513 -eq "$shar_count" ||
    $echo 'abst2.tex:' 'original size' '2513,' 'current size' "$shar_count!"
  fi
fi
rm -fr _sh02837
exit 0
