ɍȾɄ 004.451
ȺɇȺɅɂɁ
ɗɎɎȿɄɌɂȼɇɈɋɌɂ
ɉɊɂɆȿɇȿɇɂə
ɆȿɌɈȾɈȼ
ɏȿɒɂɊɈȼȺɇɂə
ȼ
ɎȺɃɅɈȼɕɏ
ɋɂɋɌȿɆȺɏ
,
ɊȺȻɈɌȺɘɓɂɏ
ȼ
ɉɈɅɖɁɈȼȺɌȿɅɖɋɄɈɆ
ɊȿɀɂɆȿ
E.ɘ. ɂɜɚɧɨɜ, Ɇ.ɋ. Ʉɨɫɹɤɨɜ,
-. ext2,
MINIX 3, ,
26 . ,
– , .
Ʉɥɸɱɟɜɵɟ ɫɥɨɜɚ: , , , ,
, MINIX 3, PUFFS.
ȼɜɟɞɟɧɢɟ
( ) , ,
, - ,
[1]. ,
[2, 3]; 6 000 000 . [4],
85% ( ),
. ,
,
, ,
[5].
( ), , :
, . ,
-,
.
[6].
.
, ,
-. , -
( ) .
-,
-– .
,
,
-, , , , PUFFS
NetBSD [7]. MINIX 3 ext2, ,
, -
, ext2,
Linux [8]. ,
-– ,
.
ɋɬɪɭɤɬɭɪɧɚɹɨɪɝɚɧɢɡɚɰɢɹɫɬɟɤɚɜɜɨɞɚ–ɜɵɜɨɞɚ
. 1 -
. ,
-fd (file descriptor). ,
, fd vnode (virtual node),
-. , vnode istruct (inode struct),
. istruct
-. ,
istruct. Linux [8]
UNIX- .
,
. , fd
-vnode. , , ,
id. id
istruct , ,
istruct . ,
, , PUFFS, NetBSD,
istruct,
[7].
, MINIX 3, id
inum, [9].
inum, istruct,
inum istruct .
,
. ,
vnode fd .
fd, , ,
, . . . vnode fd
. istruct inum
-, . ,
-istruct ,
, , .
-inum istruct.
, – [10].
, ,
-, .
, №
- (№ )
, istruct
. (istruct) , fd → (vonde+istruct)
, fd → (vonde+inum)
, inum→? istruct - (inum)
, fd
. (fd)
. 1. -
ɉɚɪɚɦɟɬɪɵɩɪɨɜɟɞɟɧɢɹɷɤɫɩɟɪɢɦɟɧɬɨɜ
ext2
MINIX 3, Intel Pentium 4 2.80 ,
DDR 512 Seagate 40 7200 rpm.
:
« ». MINIX 3 /usr/src, , , .
T 40 .
« ». /usr/src
ext2. 170 , 24 694
(1 620 ), . T 20 c.
« ». stat /usr/src
. « »,
, « »
. T 50 .
– , , τ
istruct inum. ,
.
-, , –
.
-, .
-– ,
.
Hyper-Threading .
, – ,
-,
. . inum
istruct MINIX 3 32- ,
32- .
Ⱥɧɚɥɢɡɷɮɮɟɤɬɢɜɧɨɫɬɢɦɟɬɨɞɨɜɯɟɲɢɪɨɜɚɧɢɹ
, istruct inum
-n istruct 512
τ 26 ,
-, .
–
- - ,
- .
(Google dense)
(GNU libiberty). -
, , ,
. , hash_map, GNU GCC,
-- α. ,
, , hash_map
.
inum m- - ,
m – - , - h:
«MOD»: h(inum) = inum mod m. GNU libiberty hash_map;
«AND» , m : h(inum) = inum and
(m −1). ,
- [11]. Google dense
- .
- , - «AND»,
-«MOD», ,
-«MurmurHash» [12]. , , о ,
-- «AND».
τ
-n = 512. - Google dense
-m = 2048, libiberty m = 2039.
τ 7% .
Ɍɚɛɥɢɰɵɫɨɨɬɜɟɬɫɬɜɢɣinumɚɞɪɟɫɚɦistruct Ɍɢɩɧɚɝɪɭɡɤɢ
Google dense libiberty ɪɟɚɥɢɡɚɰɢɹ Ⱥɜɬɨɪɫɤɚɹ ɚɞɪɟɫɚɰɢɹɉɪɹɦɚɹ Ʌɢɧɟɣɧɵɣɩɨɢɫɤ
« » 354 410 214 165 4315
« » 21 24 11 9 237
« » 10 13 6 5 104
. ,
,
, . « »
- .
, .
- ,
.
, ,
-- ,
[13]. , , -
-, , .
- .
. 2 τ m - « »
istructn = 512. , ,
-inum istruct,
. m ≥ 4096,
α = n / m ≤ 0,25, τ ,
-. ,
n α≤ 0,25. , α
-.
,
.
T
, n ≤1024 ,
istruct inum О(n),
-о ,
-. n istruct /
n ≈ 4096.
1 16 256 4096 ,
4096
1024
256
64 16384
. 2. τ - m
« »
Ɂɚɤɥɸɱɟɧɢɟ
-,
. –
ext2, MINIX 3. ,
, inum
-istruct, ,
-. , 26
,
-, , , .
,
PUFFS NetBSD,
-, , istruct. ,
-, .
-– ,
- istruct inum.
-- m = 2x. ,
, . ,
-,
- –
.
-, PUFFS.
– MINIX 3
, istruct 1024
-- . ,
- ,
.
istruct, ,
istruct ,
-.
ext2 MINIX 3
(VU University Amsterdam) MINIX, 3.1.8.
-, VU T. Veerman
Ʌɢɬɟɪɚɬɭɪɚ
1. . . //
. . . – 2010. – . 53. – № 10. – . 38–41.
2. Ostrand T.J., Weyuker E.J. The distribution of faults in a large industrial software system // SIGSOFT Softw. Eng. Notes. – 2002. – V. 27. – № 4. – P. 55−64.
3. Ostrand T.J., Weyuker E.J., Bell R.M. Where the bugs are // SIGSOFT Softw. Eng. Notes. – 2004. – V. 29. –
№ 4. – P. 86–96.
4. Chou A., Yang J., Chelf B. et al. An empirical study of operating systems errors // SIGOPS Oper. Syst. Rev. – 2001. – V. 35. – № 5. – P. 73–88.
5. Herder J.N., Bos H., Gras B. et al. Construction of a Highly Dependable Operating System // Proceedings of the Sixth European Dependable Computing Conference. EDCC '06. Washington, DC, USA: IEEE Computer Society. – 2006. – P. 3–12.
6. Leslie B., Chubb P., Fitzroy-dale N. et al. User-level Device Drivers: Achieved Performance // Journal of Computer Science and Technology. – 2005. – V. 20. – P. 654–664.
7. Kantee A. puffs – Pass-to-Userspace Framework File System // Proceedings of the AsiaBSDCon. – 2007. – P. 29–42.
8. . Linux. : . . – 3- . − .: , 2013. – 496 .
9. The VFS-FS protocol. MINIX 3 Developers Guide [ ]. – :
http://wiki.minix3.org/en/DevelopersGuide/VfsFsProtocol, . . . ( : 02.03.2013).
10.Traeger A., Zadok E., Joukov N., Wright C.P. A nine year study of file system and storage benchmarking // ACM Transactions on Storage (TOS). – 2008. – V. 4. – № 2. – P. 1–56.
11. . C++. 1–4: /
/ / : . . – : « », 2001. – 688 .
12.Appleby A. Murmurhash v3 [ ]. – :
http://sites.google.com/site/murmurhash/, . . . ( 16.03.2013).
13. . . . . 3. : . . – 2- . – .:
, 2000. – 832 .
И Ю – -
-, , i@eivanov.com
я С – -
-, , , ,