アカウント名:
パスワード:
今や組込みすらRTOSが必要なレベルだと32bit系だし、今でも8bit使ってるようなものって、リソース厳しくてRTOSなしだよねぇ。
OS-9/6809 Level1 [roug.org]とか、実メモリが64KBなくても結構動いたようですし。実際、メインRAM領域が62KB程度の富士通 FM-7 [fm-7.com]でも、使おうと思えば結構使えたんですよね。マルチユーザ・マルチタスクで。
しかも、アプリをPascalっぽい構造化BASIC(実際、UCSD-Pのように独自中間コードに変換してて、ネィティブなマシン語にはコンパイルしていなかった)のBASIC09 [syakazuka.com]コンパイラで書いたりとかも出来た。# MMUが使えると、より大きなメモリ空間と、ハードウェアでのプロセス保護が出来るLevel2と言うのもあって、確か768KBの拡張メモリとかも売りださ
Z80でPIC(position-independent code)で、リエントラントなコードを書くのって難しくない?
# とは云え、PICでリエントラントである事が、OS-9/6809のフットプリントを小さくするのに、どれ位寄与したかは謎。
>Z80でPIC(position-independent code)で、リエントラントなコードを書くのって難しくない?
非常に難しいと思います。出来なくはないでしょうが。githubのZX SpectrumやFPGA上でのZ80を想定したマシン依存部分のコード(の中の定義ファイル)を斜め読みしてると、ユーザ領域は、プロセスごとに1バンク持たせて、CPU側からは固定アドレスにアサインされてるかのように見せようとしてるのではないか?と言う感じがしますよ。プロセスの数が多くなったらスワップアウト/スワップインを行うとか。
#あくまで、十分一寸斜め読みしただけなので外してるかもしれませんが。
># とは云え、PICでリエントラントである事が、OS-9/6809のフットプリントを小さくするのに、どれ位寄与したかは謎。
まぁ、そこは64KBのバンク切り替えのない領域にプロセスを詰め込むには必須だったと思います。(あの時代なら256KBのバンク切り替え可能なメモリがあればお大尽だったので)カーネルも相当モジュール化されてましたし、そこら辺の含めてリエントラントにしておかないとスタックやらデータ領域やら再配置するのが難しかったですから。そうしないと、マルチユーザやマルチタスクを実現しつつメモリを節約するのは困難になりますし。
>>Z80でPIC(position-independent code)で、リエントラントなコードを書くのって難しくない?
> 非常に難しいと思います。出来なくはないでしょうが。
難しいってのは確かだけど、非常にってほどではないかと。PC相対アドレッシングがないってのが最大の問題だけど、固定番地の手続きを呼び出して、スタック上の戻りアドレスすなわち呼び出し側のPCを使うってのが定番テクニックだったと思います。(OSのエントリーポイントとして固定番地の手続きは必須なので、それが若干増えること自体は問題なし)
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲは一日にしてならず -- アレゲ研究家
しかし何に使うんだろう (スコア:0)
今や組込みすらRTOSが必要なレベルだと32bit系だし、今でも8bit使ってるようなものって、リソース厳しくてRTOSなしだよねぇ。
つ【OS-9】(Re:しかし何に使うんだろう (スコア:1)
OS-9/6809 Level1 [roug.org]とか、実メモリが64KBなくても結構動いたようですし。
実際、メインRAM領域が62KB程度の富士通 FM-7 [fm-7.com]でも、使おうと思えば結構使えたんですよね。マルチユーザ・マルチタスクで。
しかも、アプリをPascalっぽい構造化BASIC(実際、UCSD-Pのように独自中間コードに変換してて、ネィティブなマシン語にはコンパイルしていなかった)のBASIC09 [syakazuka.com]コンパイラで書いたりとかも出来た。
# MMUが使えると、より大きなメモリ空間と、ハードウェアでのプロセス保護が出来るLevel2と言うのもあって、確か768KBの拡張メモリとかも売りださ
Re: (スコア:0)
Z80でPIC(position-independent code)で、リエントラントなコードを書くのって難しくない?
# とは云え、PICでリエントラントである事が、OS-9/6809のフットプリントを小さくするのに、どれ位寄与したかは謎。
Re:つ【OS-9】(Re:しかし何に使うんだろう (スコア:1)
>Z80でPIC(position-independent code)で、リエントラントなコードを書くのって難しくない?
非常に難しいと思います。出来なくはないでしょうが。
githubのZX SpectrumやFPGA上でのZ80を想定したマシン依存部分のコード(の中の定義ファイル)を斜め読みしてると、ユーザ領域は、プロセスごとに1バンク持たせて、CPU側からは固定アドレスにアサインされてるかのように見せようとしてるのではないか?と言う感じがしますよ。プロセスの数が多くなったらスワップアウト/スワップインを行うとか。
#あくまで、十分一寸斜め読みしただけなので外してるかもしれませんが。
># とは云え、PICでリエントラントである事が、OS-9/6809のフットプリントを小さくするのに、どれ位寄与したかは謎。
まぁ、そこは64KBのバンク切り替えのない領域にプロセスを詰め込むには必須だったと思います。(あの時代なら256KBのバンク切り替え可能なメモリがあればお大尽だったので)
カーネルも相当モジュール化されてましたし、そこら辺の含めてリエントラントにしておかないとスタックやらデータ領域やら再配置するのが難しかったですから。
そうしないと、マルチユーザやマルチタスクを実現しつつメモリを節約するのは困難になりますし。
Re: (スコア:0)
>>Z80でPIC(position-independent code)で、リエントラントなコードを書くのって難しくない?
> 非常に難しいと思います。出来なくはないでしょうが。
難しいってのは確かだけど、非常にってほどではないかと。
PC相対アドレッシングがないってのが最大の問題だけど、固定番地の手続きを呼び出して、
スタック上の戻りアドレスすなわち呼び出し側のPCを使うってのが定番テクニックだったと思います。
(OSのエントリーポイントとして固定番地の手続きは必須なので、それが若干増えること自体は問題なし)