云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 高级OS实验一文件系统

高级OS实验一文件系统

  • 62 次阅读
  • 3 次下载
  • 2025/12/2 19:22:55

215 第9章

Superbloick read successfully. Addr of superblock in filesys is 16. offset of cyl-block in filesys is 24. offset of inode-block in filesys is 32. offset of first data block after cg is 760. offset of sylinder group is 64.

The total amount of data blocks is 14627182. Every disk block accommodates 64 inodes.

Breakpoint 1, main() at superblock.c:51

51 printf(“Every sylinder group accommodates %d inodes.\\n”,sblock.fd_ipg); (gdb) print /x sblock

$1 = {fs_link = 0x0, fs_rolled = 0x2,fs_sblkno = 0x10, fs_cblkno = 0x18, fs_iblkno = 0x20, fs_dblkno = 0x2f8,

fs_cgoffdset = 0x40, fs_cgmask = 0xffffffc0, fs_time = 0x47db3d88, fs_size =0xdf316e, fs_dsize = 0xdbcf49,

fs_ncg = 0x12a, fs_bsize = 0x2000, fs_fsize = 0x400, fs_frag = 0x8, fs_minfree = 0x1, fs_rotdelay =0x0, fs_rps = 0x3c,

fs_bmask =0xffffe000, fs_fmask = 0xfffffc00, fs_bshift = 0xd, fs_fshift =0xa, fs_maxcontig = 0x7, fs_maxbpg = 0x800,

fs_fragshift = 0x3, fs_fsbtodb=0x1, fs_sbsize = 0x800, fs_csmask = 0xfffffe00, fs_csshift = 0x9,fs_nindir = 0x800,

fs_inopb=0x40,fs_nspf = 0x2, fs_optim = 0x0, fs_state = 0x344b5fb0, fs_si=0x1, fs_trackskew = 0x0, fs_id={0x0,

0x0}, fs_csaddr = 0x2f8, fs_cssize = 0x1400, fs_cgsize = 0x2000, fs_ntrak = 0x30, fs_nsect = 0x80, fs_spc = 0x1800,

fs_ncyl = 0x129a, fs_cpg = 0x10, fs_ipg = 0x16c0, fs_fpg = 0xc000, fs_cstotal = {cs_ndir = 0x82a5, cs_nbfree = 0x9clca,

cs_nifree = 0x160f35, cs_nffree = 0x57a6c}, fs_fmod = 0x0, fs_clean = 0xfd, fs_ronly = 0x0, fs_flags = 0x0, fs_fsmnt = {

0x2f, 0x0 }, fs_cgrotor = 0xe2, fs_u = {fs_csp_pad = {0x8553f000, 0xffffff00,

0x0 }, fs_csp = 0x8553f000}, fs_cpc = 0x1, fs_opostbl = {{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7}, {

0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0} }, fs_sparecon = {0x0 },

fs_version = 0x2, fs_logbno = 0x620, fs_reclaim = 0x1, fs_sparecon2 = 0x0, fs_npsect = 0x80, fs_qbmask = {val = {0xlfff,

0x0}}, fs_qfmask = {val = {0x3ff, 0x0}, fs_postblformat = 0x1, fs_nrpos = 0x8, fs_postbloff = 0x35c,

fs_rotbloff = 0x560, fs_magic = 0x11954, fs_space = {0x8}}

6)另外开一个shell窗口,运行“mdb-k”来验证取出数据的正确性。mdb命令及结果如下: >::dnlc!grep disk.c

ffffff008bba5200 ffffff008bba5600 disk.c

可知disk.c的vnode在dnlc缓存中的地址是ffffff008bba5200.

>ffffff008bba5200::print vnode_t v_data |::print inode_t i_ufsvfs|::print ufsvfs_t vfs_bufp|::print buf_t b_un.b_fs|::print struct fs

{

fs_link = 0 fs_rolled = 0x2 fs_sblkno = 0x10 fs_cblkno = 0x18 fs_iblkno = 0x20 fs_dblkno = 0x2f8 fs_cgoffset = 0x40 fs_cgmask = 0xffffffc0 fs_time = 0x47db48bf fs_size = 0xdf316e fs_dsize = 0xdbcf49 fs_ncg = 0x12a fs_bsize = 0x2000 fs_fsize = 0x400 fs_frag = 0x8 fs_minfree = 0x1 fs_rotdelay = 0 fs_rps = 0x3c

fs_bmask = 0xffffe000 fs_fmask = 0xfffffc00 fs_bshift = 0xd fs_fshift = 0xa

fs_maxcontig = 0x7 fs_maxbpg = 0x800 fs_fragshift = 0x3 fs_fsbtodb = 0x1 fs_sbsize = 0x800

fs_csmask = 0xfffffe00 fs_csshift = 0x9 fs_nindir = 0x800 fs_inopb = 0x40 fs_nspf = 0x2 fs_optim = 0

fs_state = 0x344b5479 fs_si = 0x1

fs_trackskew = 0 fs_id = [ 0 , 0 ] fs_csaddr = 0x2f8 fs_cssize = 0x1400 fs_cgsize = 0x2000 fs_ntrak = 0x30 fs_nsect = 0x80 fs_spc = 0x1800 fs_ncy1 = 0x129a fs_cpg = 0x10 fs_ipg = 0x16c0 fs_fpg = 0xc000

fs_cstotal = { cs_ndir = 0x82a5 cs_nbfree = 0x9clc9 cs_nifree = 0x160f32 cs_nffree = 0x57a6f }

fs_fmod = '\\0' fs_clean = '\\375' fs_ronly = '\\0' fs_flags = '\\0' fs_fsmnt = [\fs_cgrotor = 0xe2 fs_u = { fs_csp_pad= [0x8553f000,0xffffff00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] fs_csp = 0xffffff008553f000 }

fs_cpc = 0x1 fs_opostbl = [ [0,0x1,0x2,0x3,0x4,0x5,0x6,0x7] [0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0] ] fs_sparecon = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,...] fs_version = 0x2 fs_logbno = 0x620 fs_reclaim = 0 fs_sparecon2 = 0 fs_npsect = 0x80 fs_qbmask = { val = [0xlfff,0] } fs_qfmask = { val = [0x3ff,0] } fs_postblformat = 0x1

218 第9章

fs_nrpos=0x8 fs_postbloff=0x35c

fs_rotbloff=0x560 fs_magic=0x11954

fs_space=[ 0x8 ] } 可以看到,结果与gdb显示的完全吻合。 7) 在a.out中观察根目录的inode结构。 (gdb) b 88

Breakpoint 2 at 0x8050ffb: file superblock.c line 88 (gdb) c Continuing. Every sylinder group accommodates 5824 inodes. Sylinder group read successfully. The number of directories of this cg is 1626. The number of free block is 1846. The cylinder modified at year 2008,month 2,day 14. The number of data blocks is 49152. The type of file corresponding to inode 0 is 0. The type of file corresponding to inode 1 is 0. The type of file corresponding to inode 2 is 40755. The direct block address corresponding to inode 2 are 34360, 0 and 0. Root directory has 1536 bytes and holds actually 0 512-byte blocks.

Breakpoint 2, main() at superblock.c:88 88 if (pread(disk, general_buffer,DIRBLKSIZ*16, ldbtob((inode[2].ic_db[0])*2))==-1) (gdb)p/x inode[2]

$2={ic_smode=0x4led,ic_nlink=0x35,ic_Suid=0x0,ic_sgid=0x0, ic_lsize=0x600,ic_atime=0x47db3d4e, ic_atspare=0x2eef6,ic_mtime=0x47db3aef,ic_mtspare=0x29e5a,ic_ctime =0x47db3aef,ic_stspare=0x29e5a,ic_db={ 0x8638,0x0,},ic_ib={0x0,0x0,0x0},ic_flags=0x0, ic_blocks=0x4,ic_gen=0x1f240e41, ic_shadow=0x0,ic_uid=0x0,ic_gid=0x0,ic_oeftflag=0x0} 8) 在mdb中打印根目录的inode结构来验证结果的正确性。 >::inode_cache -i 2

ADDR INUMBER DEVICE CHAIN ffffff0084c2dcf8 2 6600000000 2 可知,根目录的vnode的地址为ffffff0084c2dcf8。 > ffffff0084c2dcf8:: print inode_t

{ i_chain=[ffffff0084b18020,ffffff0084cfe608] i_freef=ffffff0084c2dcf8 i_freeb=ffffff0084c2dcf8 i_ic={

搜索更多关于: 高级OS实验一文件系统 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

215 第9章 Superbloick read successfully. Addr of superblock in filesys is 16. offset of cyl-block in filesys is 24. offset of inode-block in filesys is 32. offset of first data block after cg is 760. offset of sylinder group is 64. The total amount of data blocks is 14627182. Every disk block accommodates 64 inodes.

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com