UNIX文件系统PPT课件下载推荐.ppt
《UNIX文件系统PPT课件下载推荐.ppt》由会员分享,可在线阅读,更多相关《UNIX文件系统PPT课件下载推荐.ppt(40页珍藏版)》请在冰点文库上搜索。
![UNIX文件系统PPT课件下载推荐.ppt](https://file1.bingdoc.com/fileroot1/2023-4/28/05a5a1d0-02b1-4d45-972c-4e9c5a65d8a4/05a5a1d0-02b1-4d45-972c-4e9c5a65d8a41.gif)
用户i_gid;
组i_size;
大小i_atime;
访问时间i_mtime;
修改时间i_ctime;
建立时间,Unix文件系统,卷资源表(超级块),structfilsys文件卷总块数;
i节点表块数;
空闲块总数空闲块栈区;
空闲i节点总数;
空闲i节点数组指针;
修改,互斥标志等,Unix文件系统,磁盘结构,引导块超级块i节点区数据块,目录文件放在哪儿?
Unix文件系统,内存文件数据结构
(1),每个进程user中:
u_ofileN;
用户打开文件表u_cdir;
当前目录u_base;
内存地址u_count;
存取字节数系统调用u_offset;
文件指针,Unix文件系统,内存文件数据结构
(2),一个系统打开文件表filestructfilef_flag;
读写标志f_count;
共享该读写指针的进程数f_inode;
活动i节点号f_offset;
读写指针,Unix文件系统,内存文件数据结构(3),每个打开文件一个活动i节点structinodedinode;
磁盘i节点拷贝,去掉时间信息i_dev;
i节点所在设备号i_number;
磁盘i节点编号i_count;
file中共享i节点的个数i_flag;
i节点在内存是否被修改i_lastr;
最后一次读的磁盘块号,Unix文件系统,内存文件数据结构的关系,2,Unix文件系统,文件系统调用,建立文件:
creat删除文件:
unlink读文件:
read写文件:
write打开文件:
open关闭文件:
close文件指针定位:
lseek文件连结:
link设置文件权限:
chmod建立管道文件:
pipe复制文件fd:
dup,Unix文件系统,建立文件creat,fd=creat(filename,mode)=,-1失败u_ofile下标,申请一个i_node填写i_node修改目录文件打开文件,例:
intfd;
fd=creat(“file1”,0740);
Unix文件系统,打开文件open,fd=open(filename,mode)=,-1失败u_ofile下标,mode=,0-读1-写2-读写,进行权限检查若活动i节点存在:
i_count+;
否则:
找到磁盘i节点,拷贝到内存,设i_dev,i_number,i_count=1file中申请一项,f_flage=mode,f_count=1,f_inode=活动inode地址在进程u_ofile中找一个空元素(从下标0开始找),填写file项地址返回u_ofile下标例:
fd=open(“file1”,2);
Unix文件系统,open示意图,file1,u_ofile,file,i_node,u_ofilei,i_node,fd=?
f_flag=?
f_inode=?
f_count=?
f_offset=?
i_count=?
j,Unix文件系统,读文件read,read(fd,buf,count)=,-1失败0文件尾实际读字节数,例:
chars50;
fd=open(“file1”,0);
read(fd,s,20);
read(fd,buf,count)fp=fdf_flag与本次操作相符?
yu_base=buf;
u_count=count,u_offset=f_offsetdevicefile?
nlbn=u_offset/512;
on=u_offset%512;
n=min(512-on,u_count)dn=i_devbn=lbn-pbn,lbn=i_lastr+1?
nyreadbnreadbn,bn+1i_last=lbn,i_flag=1buffer(on,n)bufu_offset+=nu_base+=nu_count-=nfreebufferu_count=0?
ysetf_offsetreturn(readbytes),n,n,i_addr0devicedriver,y,ER,buffer?
Unix文件系统,写文件write,write(fd,buf,count)=,-1失败实际写字节数,例:
scanf(“%s”,s);
write(fd,s,20);
write(fd,buf,count)fp=fdf_flag与本次操作相符?
yu_base=buf,u_count=count,u_offset=f_offsetdevicefile?
n=min(512-on,u_count)dn=i_devbn=lbn-pbn,n=512?
nyreadbnallocbufferbufbufferu_offset+=nu_base+=nu_count-=nbufferfull?
diskwritei_size+=n,i_flag=1u_count=0?
ysetf_offsetreturn(writebytes),n,n,i_addr0devicedriver,y,ER,y,n,buffer,Unix文件系统,关闭文件close,close(fd)main()fd=open(file1,0);
read();
close(fd);
close(fd)f_count-,freeu_ofileentryf_count=0?
returnyi_count-,freefileentryi_count=0?
returnyi_flag=1?
yi_node=diskfreeactivei_nodereturn,n,n,n,Unix文件系统,文件定位lseek,lseek(fd,offset,where)0fileheadwhere=1current2filetail,lseek(fd,9,0),lseek(fd,5,1),f_offset=“where”+offset,offsetvalue=?
Unix文件系统,建立文件链结link,link(oldname,newname);
例:
link(fileo,filen);
目录文件,i_node,i_link,Unix文件系统,删除文件unlink,unlink(filename);
i_link-i_link=0?
yfreefiledatablockfreei_nodedeletedirectoryentryreturn,n,Unix文件系统,修改文件权限chmod,chmod(file,mode)例:
chmod(file1,0742);
i_mode=mode;
i_flag=1;
Unix文件系统,建立无名管道文件pipe,Pipe(intfd2)=,fd0=readu_ofile下标fd1=writeu_ofile下标,u_ofile,file,i_node,fd0,fd1,i_count=2;
使用i_addr09,Unix文件系统,关于pipe的要点,lseek()?
f_offset?
读、写指针放在i_node中共享管道文件?
同一进程对同一管道文件的读写问题管道的同步与互斥问题,ABCDEFG,pipe(),创建新进程时会引起管道文件的那些变化?
一个管道文件可以有几个读指针?
几个写指针?
管道例,子1,子2,管道,父,main()chars20;
inti,fd2;
pipe(fd);
if(fork()=0)for(i=1;
i=100;
i+)scanf(“%s”,s);
write(fd1,s,20);
exit(0);
else,if(fork()=0)for(i=1;
i=50;
for(;
)read(fd0,s,20);
printf(“”%sn”,s);
wait(0);
?
父,子1,子2,Unix文件系统,文件重定向
(1),dup(fd)=u_ofile的新下标。
复制用户打开文件表表项,fd,返回,u_ofile,file,返回值一定比fd大吗?
Unix文件系统,文件重定向
(2),当进程创建时:
系统自动打开三个文件,u_ofile,u_ofile0u_ofile1u_ofile2u_ofilei,stdin:
keyboardstdout:
screenstderr:
screen,$lsabcfd=open(“abc”,1);
close(stdout);
dup(fd);
abc,$sortfeli1?
X,Unix文件系统,shell程序的实现,接受输入,进行语法比较处理后台运行符处理管道,重定向建立进程,执行相应程序。
main().while
(1)putchar$);
read(stdin,buffer,number);
语法检查,分出commandandparameters;
if(fork()=0)if(输出/入重定向)fd=creat(newfile,mode);
/*fd=open(feli,mode);
close(stdout/in);
if(管道|)pipe(fds);
if(fork()=0);
/*第一个命令,close(ftdout);
dup(fds1);
close(fds1);
closefds0);
execlp(command1,);
close(ftdin);
dup(fds0);
if(非后台运行/*whileend,Unix文件系统,小结,UNIX文件分类(3类)UNIX文件目录结构UNIX文件逻辑结构(stream)UNIX文件物理结构(多重索引)UNIX文件存储器管理(空白块成组链结)UNIX文件系统调用(creat,open,read,write,lseek,chmod,close,pipe,dup,link,unlink.重要数据表,表项,作用(目录文件,i_node,filsys,file,u_ofile,etc),Unix文件系统,期末考试复习,考试时间:
1.18考试地点9901-9902:
电2519903-9904:
电2529905-9906:
电152考试要求成绩评定作业:
上机作业,linux代码分析答疑,Unix文件系统,全书复习,OS的定义,位置,类型及特点,功能,目的,硬件支持用户接口处理机管理(进程概念,PCB,状态,同步,通信,死锁等)存储器管理文件管理设备管理UNIXLINUX,