トップページunix
24コメント7KB

初代UNIXをかたる

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。NGNG
今でこそ星の数ほどUNIX互換OSというもの(と名乗っているもの)がたくさんありますが、初代のUNIXそのものについてかたりませんか。
0002名無しさん@お腹いっぱい。NGNG
星の数ほどはいらなかった。
スマソ
0003名無しさん@お腹いっぱい。NGNG
ばーか
0004名無しさん@お腹いっぱい。NGNG
初代のソース見たことのある奴いる?
0005名無しさん@お腹いっぱい。NGNG
死ね
0006名無しさん@お腹いっぱい。NGNG
はつよタンハアハア
0007名無しさん@お腹いっぱい。NGNG
>>4
初代はソース残ってないそうな
0008名無しさん@お腹いっぱい。NGNG
有名だとは思うが、PDP11エミュでV6 UNIXを動作させてる

http://kakugawa.aial.hiroshima-u.ac.jp/lecture/1999/OS/uv6.html
0009名無しさん@お腹いっぱい。NGNG
はつよUNIXってのは日系二世か?
0010名無しさん@お腹いっぱい。NGNG
無料で入手できるものは5thが最古。
もっと古いのって保管されていないのかな?
Unics'69はないってきいたけれども。
0011名無しさん@お腹いっぱい。NGNG
5thのソースだけ抜き出した奴ってどっか転がってない?
一度は読んでみたい
0012名無しさん@お腹いっぱい。NGNG
>>11
http://minnie.tuhs.org/UnixTree/V5/

0013名無しさん@お腹いっぱい。NGNG
http://minnie.tuhs.org/UnixTree/1972_stuff/
これわなんなのですか
0014名無しさん@お腹いっぱい。NGNG
作った本人はさすがにソース保存してるだろうから復元は可能なんじゃないか
でも歴史関係よくわからねー。オライリの本で勉強せなあかんな
0015名無しさん@お腹いっぱい。NGNG
いや、本当に無いんだと思う
オライリーでUNIXの歴史なんて扱ってる本あんの?
歴史ならあの本よかったよ1/4正規
0016名無しさん@お腹いっぱい。NGNG
UNIXの歴史というか、オープンソースの歴史を扱った本ならうちにあるよ。
0017名無しさん@お腹いっぱい。NGNG
UNIX USERSで連載してるの四度毛。
もう4.3BSDまで進んじまったが。
0018名無しさん@お腹いっぱい。NGNG
>>17
単行本になるのかねあれ。なるんだったら欲しいな。
0019名無しさん@お腹いっぱい。NGNG
編集部に「単行本にしても売れるぞ」という雰囲気を伝えるといいんじゃない?
アンケートとかで、アレを単行本にしると積極的に書いておくとかさ。

0020名無しさん@お腹いっぱい。05/02/12 06:53:33
ttp://v6.cuzuco.com/home.html 、にて
?闇?でくばられている、V6のコード、
を、
あやしくドブログ印刷した、
のだが、
その、行番号740ふきん

_retu:
bis $340,PS
mov (sp)+,r1
mov (sp),r0
mov $_u,r0
1:
mov (r0)+,sp
mov (r0)+,r5
bic $340,PS
jmp (r1)

わからんーわからんーー、
とずーっと悶え(AA略)ていた、
ところ、
あるひ(ほんじつ)、
ふと、
別の?闇?配布サイト
0021名無しさん@お腹いっぱい。05/02/12 06:55:04
ttp://minnie.tuhs.org/UnixTree/V6/usr/sys/conf/m40.s.html
のソース見ると

_retu:
bis $340,PS
mov (sp)+,r1
mov (sp),KISA6 /** ここだ(AA略) **/
mov $_u,r0
1:
mov (r0)+,sp
mov (r0)+,r5
bic $340,PS
jmp (r1)

只食いの食あたり、で、
おわり
0022名無しさん@お腹いっぱい。05/02/12 11:28:24
sureg()
{
register *up, *rp, a;

a = u.u_procp->p_addr;
/* 前半省略 */
up = &u.uisd[16];
rp = &UISD->r[16];
if (cputype == 40) { /* pdp11/40 */
up -= 8;
rp -= 8;
}
while (rp > &UISD->r[0]) {
*--rp = *--up;
if ((*rp & WO) == 0)
rp[(UISA - UISD) / 2] =- a;
}
}

PDP11のセグメント・レジスタ群が
カーネル・モードの仮想アドレス空間の8ページ目にあって
メモリ・マップドI/Oで、
0023名無しさん@お腹いっぱい。05/02/12 11:29:29
UISD == UISD0 == $017600
017600 UISD0
017602 UISD1
017604 UISD2
017606 UISD3
017608 UISD4
...
017634 UISD14
017636 UISD15

UISA == UISA0 == $017640
017640 UISA0
017642 UISA1
017644 UISA2
017646 UISA3
017648 UISA4
...
017674 UISA14
017676 UISA15
のようになっていて、

rp が UISD2 == 017604 のとき
rp[(UISA - UISD) / 2] =- a;
017604[(017640 - 017600) / 2)] =- a;
017604[40 / 2] = a;
017604[20] = a;
0024名無しさん@お腹いっぱい。05/02/12 11:30:38
レジスタの配列のインデックスがワード == 2バイト なので
*(017604 + (20 * 2)) =- a;
*(017604 + 40) =- a;
*(017644) =- a;

017644 は UISA2にアドレスが一致、つまり
そのページのページ・デスクリプション・レジスタに対応する
ページ・アドレス・レジスタで
テキストセグメントのPARについて、
最初のほうで余分に足した、
データセグメント用のベースアドレス値
u.u_procp->p_addr (Per Process Data Aria の始点)
をひく、ということをやっている。

このアドレスは、
newproc()の中から呼ばれるmalloc()によって、
渡される、ようだ。

しかし、そうすると、
テキスト・セグメントのベースが0になってしまい??
カーネルモードで使用している
物理アドレスの0からproc[0]のPPDAの直前$_endまでの領域と
かぶってしまうのでは、ないか??
PARに入れる値なので、
仮想アドレスということはないだろうし、

mfpiとかmtpiとかfu(i)word/byte,copysegなどは
どういうふうになっているのであろうか??

謎は次回(未定)つづく。
■ このスレッドは過去ログ倉庫に格納されています