当前位置:文档之家› linux知识点总结

linux知识点总结

七:
1.叙述的文件系统框架,并解释其中各个部分。

:启动相关的程序和配置
:常用的命令,这些命令通常为可执行文件或这些文件的链接
:通常为根用户准备的命令
:系统常用库
:用户安装的文件、库、开发库等
:根用户的用户文件
:普通用户的用户文件
:系统或程序的配置文件
:系统中服务器数据、日志
:系统状态信息
:系统设备
、:其他分区的挂载点(如磁盘分区、光盘或软件等)
:临时文件
磁盘孤立扇区
2.叙述超级块、、和四大数据结构的作用和主要内容。

超级块:
作用:代表了整个文件系统,记录了文件系统的整体信息
内容:文件系统的状态、文件系统类型、块大小、区块数、索引节点数、脏标志、操作方法
(索引节点)
作用:代表了操作系统中的一个文件,无论该文件是否被打开,它都包含了文件操作的所有信息
内容:文件大小,设备标识符,用户标识符,用户组标识符,文件模式,扩展属性,文件读取或修改的时间戳,链接数量,指向存储该内容的磁盘区块的指针,文件分类等等。

(目录项):
作用:代表了一个目录,用来组成文件的路径,并利用其实现路径的管理
内容:包括该目录对象对应的索引节点,子目录链表,父目录目录项对象,与它同级的目录的目录项对象链表,使用计数,缓存标志
(文件):
作用:代表了被进程打开的文件,是可以读写的实体
内容:包括相应的目录项对象、使用计数、访问模式、当前偏移量、操作方法等
3.什么是文件描述符?它与返回的文件指针有什么关系?
文件描述符是一个索引值,指向内核为每一个进程所维护
的该进程打开文件的记录表。

关系:返回的文件指针是文件描述符所指向的文件描述符表中的一个表项
4.分别叙述和的参数设置以及它们的区别。

参数:是指定的文件的路径,是文件的打开模式,模式可
以为r、、w、、a、
参数:是欲打开文件的路径,是一些标志位,是文件的操
作权限。

区别:(1)返回一个文件描述符(),返回一个文件指针
(*)。

(2)无缓冲,有缓冲。

(3)与 , 等配合使用,与 ,
等配合使用。

(4)是在的基础上扩充而来的,在大多数情
况下,用。

5.叙述和两种管道函数的区别。

创建匿名管道,创建有名管道。

管道是进程通信的一种形式,管道被看作是一个文件
6.使用匿名管道技术,编程实现“ -1 ”。

<>
<>
<>
<>
<>
<>
<>
<>
<>
(m)
{
(m);
();
} (0)
( , *[])
{
[2];
(() -1)
(" ");
;
= ();
( -1)
(" ");
( 0)
{
2([1], ); 输出重定向 ([1]);
([0]);
("", "", "-1", );
(, " \n");
();
}
2([0], );
([0]);
([1]);
("", "", "-1", );
(, " \n");
();
0;
}
7.编写两个进程a和b,使用有名管道进行通信。

a向b传送字符串“”,b接收并打印。

进程a:
<>
<>
<>
<>
<>
<>
""
128
()
{
(0);
( (,0666) -1)创建有名管道,(管道文件名,管> 理权限)
{ 成功返回0 失败返回-1
(" ");
(0);
}
= ();
(<0)
{
(" \n");
0;
}
进程b:
<>
<>
<>
<>
<>
<>
""
128
()
{
[];
(1)
{
(" :");
(); 清空缓冲区,并把缓冲区的内容输出
s = (0()); 一个类型
(s<0) (文件标识符,数据缓冲区,读取数据尺寸)
{ 失败或中断返回-1
(" ");
(1);
}
(0)
{
(" !");
1;
}
{
[s]= '\0'; 最后一位,字符串结束符
(()); (文件表识符,数据缓冲区,写入文件尺寸) }
}
0;
}
7.编程以可读写方式打开第一个参数表示的二进制文件,改写里面第三个字节为0,再关闭它。

八:
1.叙述进程的用户空间和内核空间都有哪些种类,列举各类内
存申请函数并说明之。

代码区、静态数据变量、堆区、栈区
用户空间用分配内存,内核空间用分配内存。

:是动态内存分配,用于申请一块连续的指定大小的内存块区域以*类型返回分配的内存区域地址,函数声明*( );
:在设备驱动程序或者内核模块中动态开辟内存,释放内存用的是,分配的内存是物理上的连续,分配的内存只是线性上的连续。

4.编写两个进程a和b,使用进行通信,a向共享内存写入字符串“”后退出,b接收后打印出来。

5.编写一个程序,创建一个子进程,之后父子进程使用函数进行匿名通讯,子进程向共享内存写入字符串“”后退出,父进程接收后打印出来,并且等待子进程退出后结束。

<>
<>
<>
<>
<>
<>
<>
<>
( , )
{
*;
* = 0;
= ( *)0x80000;
= (, , | , , , 0); ( ( *)-1)
(, ": \n", ());
(, "", 7);
(1, , );
(, );
;
}
( , **)
{
;
( 2)
{
(".\n");
(0);
}
= (*[1]);
()
= ([1], , 0); 才能被读写。

( < 0)
(, ": \n", ()); 使用异常检查是个好习惯,他可以帮助程序员迅速定位出错的地方!
(, );
(, );
(1);
();
(0);
}。

相关主题