2008年1月5日 星期六

提升performace的方式 Jan.05

1. 利用page table entry內的global bit, 此需cr4的PGE被enable, 但minix 的assembler不認得cr4

2. 用memory mapping 方式更改page entry的值

3. 用 hardware-support的task switch 方式(TSS)

2008年1月4日 星期五

測試結果 Jan.05

original version(release/3.1.2a) :
real user sys
100000 31.16 0.53 26.20
10000 3.13 0.06 2.73
30000 9.33 0.18 7.90

only add a new server(release/3.1.2ar11) :
30000 1:09.33 5.63 41.86
1:09.26 6.31 41.63
1:09.30 6.08 41.10

a new server & a new pager(release/3.1.2ar12) :
30000 8:54.26 10.16 7:16.05
8:54.06 10.70 7:15.75
8:53.95 9.45 7:15.91

(改sys_abscopy -> phys_memcpy)
7:33.26 10.01 4:51.21
(改memset-> pg_memset)
5:26.25 10.06 3:02.61
5:26.31 9.96 3:03.48

2008年1月3日 星期四

日誌 Jan. 3 4 about minix 3

lib/ansi :
clock- determine the processor time used
在userspace叫times ,會先送給PM, 在送到kernel ,最後由clock task接手

posix定了一些標準 :在 lib/posix內
getpriority ,times都是

開完機後還在跑的程式:
idle
clock
system
kernel
pm
fs
rs
mem
log
tty
ds
init
/bin/pci
/bin/floppy
/bin/at_wini
/sbin/is
/sbin/cmos
getty*4

系統時間:
主機板上有一元件存系統時間,可透過BIOS取得資訊,吃主機板上電池的電維持。
在minix 3 上,每60分之一秒一個tick,定義為HZ
每次counter數到0,即產生一個tick,好像是IRQ 0,由Interrupt handler處理,minix 3 上由
clock task處理,clock task有一個global variable --- realtime 每次tick來都加1,因此realtime實際上就是開機的時間。
當每次call time()這個system call時,實際上是去跟PM要時間,而PM內部存的時間是以boottime+uptime/HZ回傳。
Minix 3在開完機後,會up cmos driver(早期稱cmos意指bios),cmos driver 起來之後會去要系統時間,並且去設定PM裡boottime的值。

相關command的source code在以下位置:
commands/ibm/readclock.c
commands/simple/date

2008年1月2日 星期三

日誌 Jan. 2

以前都沒有寫紀錄的習慣,但是實在是太容易忘了,所以還是記下來吧!!
目前stable的版本是 svn://server/branch/minix3v4 @ 174

1. 針對開機的問題,把/etc/rc裡的 Futrther initialization那欄都 mark 掉
越多程式 bug就越多
2.針對很多程式會在j位址 0x672fc4 page fault,解決方式為map給每個程式8M

如此一來,可順利的開完機並使用基本指令:P

接下來做分析,再者就是自動增大stack的大小
如要有malloc功能可能需要改到compiler
===分析===
1.先了解minix 3 有什麼方式可以拿出時間
2.參考rhealstone benchmark先拿出花在context switch的時間

2008年1月1日 星期二

minix 3 的 scripts

/usr/etc/rc:開啟開機的某些services,如random及 network drivers...
只要放在/usr/local/etc/rc.d/下的script開機都會執行. ex: sshd

2007年12月31日 星期一

how to update gentoo

1. emerge --sync
2. emerge -uND world
3. emerge --depclean
To clean no use package.
4. revdep -rebuild
To re-compile packages which dynamic linking should be updated.
Loop this step until there are no warnings.

2007年12月20日 星期四

tun


猜測tun應該是這樣讓userspace 的程式可以跟kernel溝通,qemu的程式碼很漂亮...........