IO编程
IO一些必备知识点
目录①了解FAT32以及NTFS区别
名称 | FAT32 | NTFS |
---|---|---|
文件用处 | Windows 95 OSR2及以后的版本中被广泛采用 | Windows NT系列操作系统的默认文件系统 |
文件大小 | FAT32在文件大小方面有明显的限制。它支持的最大单个文件大小为4GB | NTFS支持非常大的文件和磁盘分区。单个文件的大小可以达到数TB甚至更大,只受限于磁盘空间的总量 |
安全性 | 较低,不支持文件加密和访问控制等 | 较高,并且支持文件加密(EFS)、磁盘配额和访问控制列表(ACL)等 |
性能 | 相比没那么出色,但是在闪存设备上有更好的读写功能 | 优秀,用了先进的元数据结构和算法,使得文件读写操作更加高效,还支持磁盘碎片整理和自动修复等 |
支持分区 | 最大为32GB,磁盘碎片一般 | 小可以达到2TB,磁盘碎片较少 |
②了解MMU如何将虚拟地址与物理地址转换
MMU的转换分为两部分,分段机制和分页机制,如果没有打开分页机制的话,默认就是分段机制,则得出的线性地址就是物理地址。如果打开了分页机制,就需要引入页表的概念
③请简述Linux内核的作用
从技术层面讲,内核是硬件与软件之间的一个中间层。作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。
从应用程序的层面讲,应用程序与硬件没有联系,只与内核有联系,内核是应用程序知道的层次中的最底层
Linux内核是链接硬件和上层应用的桥梁,通过这个桥梁我们可以直接在上层完成对硬件的操作
内核是一个资源管理程序。负责将可用的共享资源(CPU时间、磁盘空间、网络连接等)分配得到各个系统进程。
内核就像一个库,提供了一组面向系统的命令。系统调用对于应用程序来说,就像调用普通函数一样。
④Linux系统目录和文件夹的区别
以下笔面题常考问题:
⑤库函数与系统调用给你的函数的区别
⑥简述标准IO和系统IO的区别
系统IO:不带缓冲机制,
系统IO可以操作普通文件与驱动文件(设备文件,网络文件,普通文件) 通过系统IO读写文件时,每次操作都会执行相关系统调用。这样处理的好处是直接读写实际文件。
标准IO:带缓冲机制,是系统IO 的包装,标准IO只可以操作普通文件。标准IO可以看成是在文件IO的基础上封装了缓冲机制。
先读写缓冲区,必要时再访问实际文件,从而减少了系统调用的次数。标准IO中用FILE(流)表示一个打开的文件,通常只用来访问普通文件。
缓冲机制可分3类:全缓冲, 行缓存,无缓冲
全缓冲:填满标准I/O缓存区才进行实际的I/O操作。(fwrite/fread)
行缓存:当在遇到换行符或者缓冲区满时,标准IO库执行IO系统调用操作(printf)
无缓冲:标准I/O库不对字符进行缓冲存储 (标准出错)
⑦根文件系统和Linux系统内核关系
“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。
根文件系统就是管理各种各样的文件的系统(Linux下一切皆文件)