linux内核面试题------可以学习
linux工程师面试题及答案

linux工程师面试题及答案Linux是一种开源操作系统,广泛应用于各种计算机领域。
作为一名Linux工程师,熟悉Linux系统的原理、管理和维护至关重要。
在面试过程中,常常会涉及一些与Linux系统相关的问题,下面是一些常见的Linux工程师面试题及其答案。
一、Linux系统相关面试题1. 请说明什么是Linux系统?Linux系统是一种基于Unix的操作系统,最初由Linus Torvalds在1991年开发而成。
它的特点是开放源代码、多用户、多任务、多线程和稳定可靠。
2. 请解释什么是Linux内核?Linux内核是操作系统的核心部分,负责管理硬件、文件系统和其他系统资源。
它控制着计算机的所有核心功能,并提供了对外部应用程序的接口。
3. 怎样查看Linux系统的版本信息?在终端命令行输入以下命令:```uname -a```即可查看Linux系统的版本、内核版本以及其他详细信息。
4. 请简述Linux系统的目录结构?Linux系统的目录结构采用层级式的树状结构,以根目录“/”为起点,分为许多子目录,如/bin、/etc、/home、/usr等。
每个子目录都有其特定的用途,例如/bin存放可执行文件,/etc存放系统配置文件。
5. 如何查看当前工作目录?在终端命令行输入以下命令:```pwd```即可查看当前所在的工作目录。
二、Linux系统管理面试题1. 怎样查看Linux系统的CPU使用情况?在终端命令行输入以下命令:```top```即可实时查看CPU的使用情况,包括每个进程的CPU占用率。
2. 如何查看Linux系统的内存使用情况?在终端命令行输入以下命令:```free -m```即可查看内存的总量、已使用量和剩余量。
3. 怎样查看Linux系统的磁盘空间使用情况?在终端命令行输入以下命令:```df -h```即可查看各个磁盘分区的总空间、已使用空间和剩余空间。
4. 如何查找文件?在终端命令行输入以下命令:```find /path/to/directory -name "filename"```其中,/path/to/directory表示要查找的目录路径,"filename"表示要查找的文件名。
linux面试题

linux面试题Linux面试题主要是为了评估应聘者在Linux操作系统方面的知识与技能。
本文将围绕Linux面试题展开讨论,包括常见的Linux相关概念、命令和实用工具等。
一、Linux基础知识1. 什么是Linux操作系统?它与其他操作系统有什么不同之处?2. 请简要解释Linux的内核是什么,并列举几个常见的内核版本。
3. Linux的文件系统是如何组织和管理文件的?4. 如何查看Linux系统的网络配置信息?5. 请解释Linux的用户和权限管理机制。
二、Linux命令1. 请列举几个常用的文件和目录操作命令,并解释其功能。
2. 如何查看Linux系统的进程信息?如何杀死一个进程?3. 如何查看系统的内存使用情况?如何释放内存?4. 请列举几个常用的网络命令,并解释其功能。
5. 如何在Linux系统上查找文件或目录?三、实用工具1. 请介绍一下常用的文本编辑器,比较它们的优缺点。
2. 如何使用Linux的压缩和解压缩工具?3. 如何在Linux系统上安装软件包?4. 请介绍一下Linux的远程登录工具。
5. 如何在Linux系统上实现定时任务?四、网络与安全1. 如何配置Linux系统的网络接口?2. 请解释Linux的防火墙是什么,并介绍一些常用的防火墙配置命令。
3. 如何在Linux系统上实现远程登录的安全访问?4. 请介绍一下Linux的日志管理机制,以及如何查看和分析系统日志。
5. 如何进行Linux系统的性能监控和故障排查?总结本文主要讨论了Linux面试中常见的问题。
通过了解和掌握文章中列举的Linux基础知识、常用命令和实用工具等内容,可以帮助应聘者更好地准备Linux面试,并展示出自己在Linux操作系统方面的知识和技能。
在实践中不断积累经验和扩展技能,将有助于进一步提升在Linux领域的专业能力。
11个常见的linux基础面试题

Q.10:一般的Linux命令的语法格式是:
command [选项] [参数]
command选项[参数]
command [选项] [参数]
command选项参数
答: Linux命令的正确语法是, Command [选项] [参数]。
注:代码行数每天都在变动,平均每天超过3,509行代码添加到内核。
Q.4:起初,Linux是为Intel X86架构编写的,但是后来比其他操作系统移植的硬件平台都多,是这样吗?
答:是的,我同意。Linux那时候是为x86机器写的,而且现已移至到所有类型的平台。今天超过90%的超级计算机都在使用Linux。Linux在移动手机和平板电脑领域前景广阔。事实上我们被Linux包围着,远程遥控,太空科学,研究,Web,桌面计算等等,举之不尽。
11个常见的linux面试题
Q.1: Linux操作系统的核心是什么?
Shell
Kernel
Command
Script
Terminal
答:内核(Kernel)是Linux操作系统的核心。Shell是一个命令行解释器,命令(Command)是针对计算机的指令,脚本(Script)是存储在文件中的命令的集合,终端(Termial)是命令行接口。
Q.11:挑出来一个与众不同的来。
Vi
vim
cd
nano
答: cd与其他命令不同。Vi,vim和nano都是编辑器,用于编辑文档,而cd是用于切换目录的命令。
就这么多了。上述问题你学到手几个?效果如何?我们期待着你的评论。下周,会有新的问题,让我们拭目以待。保持健康,锁定链接,记得来Tecmint哦。
linux的面试题及答案

linux的面试题及答案Linux操作系统是一种常见的开源操作系统,广泛应用于服务器、嵌入式设备和个人计算机等领域。
对于Linux的面试而言,除了基础知识的考察,还会涉及到系统管理、网络配置、命令行操作、安全性等方面的问题。
本文将为您整理一些常见的Linux面试题及其答案,希望能够帮助您在面试中取得更好的表现。
1. 什么是Linux操作系统?Linux是一种基于UNIX的开源操作系统,由Linux内核及各种用户空间工具和应用程序组成。
它具有稳定、安全、高性能和多用户多任务等特点,被广泛应用于服务器、嵌入式设备和个人计算机等领域。
2. Linux系统中如何查看当前目录下的文件列表?可以使用ls命令来查看当前目录下的文件列表。
ls命令的常用参数有:- -l:以长格式显示文件信息;- -a:显示所有文件,包括隐藏文件;- -h:以人类可读的方式显示文件大小。
3. 如何在Linux系统中安装软件包?在Linux系统中,可以使用包管理器来安装软件包。
常见的包管理器有apt、yum、dnf等。
以apt为例,可以使用以下命令安装软件包:sudo apt-get install 软件包名称4. 如何查看Linux系统的版本信息?可以使用以下命令来查看Linux系统的版本信息:- cat /etc/issue:查看发行版信息;- lsb_release -a:查看详细发行版信息;- uname -a:查看内核版本信息。
5. 如何在Linux系统中创建用户?可以使用useradd命令来创建用户。
例如,要创建一个名为"username"的用户,可以使用以下命令:sudo useradd username6. 如何修改Linux用户的密码?可以使用passwd命令来修改Linux用户的密码。
例如,要为用户"username"修改密码,可以使用以下命令:sudo passwd username7. 如何查看Linux系统中运行的进程?可以使用ps命令来查看Linux系统中运行的进程。
Linux面试题大全(带答案)

Linux⾯试题⼤全(带答案)⼀.填空题:1. 在Linux系统中,以⽂件⽅式访问设备。
2. Linux内核引导时,从⽂件 /etc/fstab 中读取要加载的⽂件系统。
3. Linux⽂件系统中每个⽂件⽤索引节点来标识。
Linux⽂件系统使⽤索引节点来记录⽂件信息,作⽤于Windows的⽂件分配表类似,索引节点是⼀个数据结构,它包含了⼀个⽂件的⽂件名,位置,⼤⼩,建⽴或修改时间,访问权限,所属关系等⽂件控制信息,⼀个⽂件系统维护了⼀个索引节点的数组,每个⽂件或⽬录都与索引结点数组中的唯⼀⼀个元素对应,系统为每个索引结点分配了⼀个号码,也就是该结点在数组中的索引号,称为索引结点号。
Linux⽂件系统将⽂件索引结点号和⽂件名同时保存在⽬录中,所以⽬录只是将⽂件的名称和它的索引结点号结合在⼀起的⼀张表。
⽬录中每⼀对⽂件名称和索引结点号称为⼀个连接。
4. 全部磁盘块由四个部分组成,分别为引导块、专⽤块、 i节点表块和数据存储块。
Linux系统中的每个⽂件都被赋予⼀个唯⼀的数值,这个数值称做索引节点。
索引节点存储在⼀个称作索引节点表< inode table>中,该表在磁盘格式化时被分配。
每个实际的磁盘或分区都有其⾃⼰的索引节点表。
⼀个索引节点包含⽂件的所有信息,包括磁盘上数据的地址和⽂件类型。
⽂件类型包括如普通⽂件、⽬录和特殊⽂件这样的信息。
linux硬盘组织⽅式为:引导区、超级块(superblock),索引结点(inode),数据块(datablock),⽬录块(diredtory block)。
其中超级块中包含了关于该硬盘或分区上的⽂件系统的整体信息,如⽂件系统的⼤⼩等;超级块后⾯的数据结构是索引结点,它包含了针对某⼀个具体⽂件的⼏乎全部信息,如⽂件的存取权限、所有者、⼤⼩、建⽴时间以及对应的⽬录块和数据块等;数据块是真正存储⽂件内容的位置。
但是索引结点中不包括⽂件的名字,⽂件名是放在⽬录块⾥的。
关于linux的面试题

关于linux的面试题Linux是一种广泛应用于服务器和嵌入式设备的操作系统。
在面试过程中,掌握Linux相关知识是非常重要的。
下面,我们将介绍一些常见的Linux面试题,帮助你更好地准备面试。
1. 什么是Linux操作系统?Linux是一种类UNIX操作系统,它采用开放源代码的方式开发,是自由软件和开源软件的典范之一。
它具有稳定性、安全性和灵活性等优点,广泛应用于服务器、超级计算机和嵌入式设备等领域。
2. 请解释什么是内核(Kernel)?内核是Linux操作系统的核心部分,它负责管理操作系统的各种资源和提供各种服务,如进程管理、内存管理和设备驱动等。
内核是操作系统与硬件之间的桥梁,它提供了一个抽象的接口,使得应用程序可以方便地访问和使用硬件资源。
3. 请解释什么是Shell?Shell是Linux操作系统的命令行解释器,它接收用户输入的命令并执行相应的操作。
Shell也提供了一系列的内建命令和功能,如文件操作、进程管理和环境配置等。
在Linux中,常用的Shell包括Bash、Ksh和Zsh等。
4. 如何查看Linux系统的版本信息?要查看Linux系统的版本信息,可以使用以下命令:```$ cat /etc/*-release```此命令将打印出包含版本信息的文件内容。
5. 如何查看系统中已安装的软件包?要查看系统中已安装的软件包,可以使用以下命令之一:```$ dpkg --list // 适用于Debian系列的发行版$ rpm -qa // 适用于Red Hat系列的发行版```上述命令将列出系统中已安装的软件包及其版本信息。
6. 如何在Linux系统上安装新的软件包?要在Linux系统上安装新的软件包,可以使用以下命令之一:```$ apt-get install <package> // 适用于Debian系列的发行版$ yum install <package> // 适用于Red Hat系列的发行版```上述命令将自动下载并安装指定的软件包及其依赖。
linux面试题及答案基础

linux面试题及答案基础Linux是一种开源操作系统,广泛应用于服务器和嵌入式设备上。
作为一个常见的面试题目,了解Linux面试题及答案的基础知识非常重要。
本文将为你提供一些常见的Linux面试题及答案,帮助你在面试中更好地应对。
一、Linux基础知识1. 什么是Linux?它有哪些特点?答:Linux是一种开源操作系统,它具有稳定性、安全性、高效性和灵活性等特点。
Linux可以运行在各种硬件平台上,并且支持多任务、多用户的操作。
2. 什么是Shell?答:Shell是Linux操作系统中的命令解释器,它接收用户输入的命令并执行相应的操作。
3. Linux文件权限是什么意思?答:Linux文件权限分为三个部分,分别是所有者权限、所属组权限和其他人权限。
每个部分分别具有读(r)、写(w)和执行(x)的权限。
4. 什么是Linux文件系统?答:Linux文件系统是Linux操作系统中用于存储文件和目录的方式,它可以将硬盘划分为多个分区,并分别格式化和挂载。
5. 什么是进程?答:进程是计算机中正在运行的程序的实例。
每个进程都有自己的程序计数器、寄存器集、栈和内存空间等。
Linux操作系统使用进程来管理和控制系统资源的分配。
6. 如何查看Linux系统的运行状态?答:可以使用命令top或者htop来查看系统的运行状态,包括CPU 使用率、内存使用率、进程列表等。
二、Linux命令行操作1. 如何在Linux中创建一个新的目录?答:可以使用命令mkdir加上目录名来创建新的目录。
例如,mkdir new_folder。
2. 如何在Linux中复制文件?答:可以使用命令cp加上源文件和目标文件的路径来复制文件。
例如,cp source_file.txt target_file.txt。
3. 如何在Linux中删除一个文件?答:可以使用命令rm加上要删除的文件路径来删除文件。
例如,rm file.txt。
4. 如何列出Linux中的所有文件和目录?答:可以使用命令ls来列出当前目录下的所有文件和目录。
linux面试题及答案2023

linux面试题及答案20231. 什么是Linux内核?答案:Linux内核是Linux操作系统的核心部分,负责管理系统资源,如CPU、内存、硬盘等,并提供应用程序运行的环境。
2. 如何查看当前Linux系统的版本?答案:可以使用`uname -r`命令查看当前Linux系统的内核版本。
3. 解释什么是文件描述符。
答案:文件描述符是一个非负整数,用于在程序中唯一标识打开的文件。
每个打开的文件都会分配一个文件描述符。
4. 如何查看当前Linux系统中正在运行的进程?答案:可以使用`ps`命令查看当前系统中正在运行的进程。
5. 解释什么是硬链接和软链接。
答案:硬链接是文件系统中的文件的直接引用,而软链接(也称为符号链接)是指向另一个文件或目录的引用。
6. 如何查看Linux系统中的磁盘空间使用情况?答案:可以使用`df`命令查看磁盘空间使用情况。
7. 解释什么是管道(pipe)。
答案:管道是一种UNIX和Linux系统的特性,允许将一个程序的输出作为另一个程序的输入。
8. 如何在Linux中查找文件?答案:可以使用`find`命令在Linux中查找文件。
9. 解释什么是Linux中的inode。
答案:inode是文件系统中存储文件元数据的数据结构,每个文件和目录都有一个inode。
10. 如何查看Linux系统中的网络配置?答案:可以使用`ifconfig`(在较新的系统中是`ip addr`)命令查看网络配置。
11. 解释什么是Linux中的chroot。
答案:chroot是一种改变当前进程根目录的命令,用于限制进程访问文件系统的特定部分。
12. 如何在Linux中查看当前路径?答案:可以使用`pwd`命令查看当前工作目录的完整路径。
13. 解释什么是Linux中的守护进程。
答案:守护进程是运行在后台的进程,通常用于执行长期任务或等待特定事件。
14. 如何在Linux中查看当前登录用户?答案:可以使用`who`命令查看当前登录的用户。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
有关linux内核面试题1. Linux中主要有哪几种内核锁?ssdddsssqLinux的同步机制从2.0到2.6以来不断发展完善。
从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。
这些同步机制的发展伴随Linux从单处理器到对称多处理器的过渡;伴随着从非抢占内核到抢占内核的过度。
Linux的锁机制越来越有效,也越来越复杂。
Linux的内核锁主要是自旋锁和信号量。
自旋锁最多只能被一个可执行线程持有,如果一个执行线程试图请求一个已被争用(已经被持有)的自旋锁,那么这个线程就会一直进行忙循环——旋转——等待锁重新可用。
要是锁未被争用,请求它的执行线程便能立刻得到它并且继续进行。
自旋锁可以在任何时刻防止多于一个的执行线程同时进入临界区。
Linux中的信号量是一种睡眠锁。
如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠。
这时处理器获得自由去执行其它代码。
当持有信号量的进程将信号量释放后,在等待队列中的一个任务将被唤醒,从而便可以获得这个信号量。
信号量的睡眠特性,使得信号量适用于锁会被长时间持有的情况;只能在进程上下文中使用,因为中断上下文中是不能被调度的;另外当代码持有信号量时,不可以再持有自旋锁。
Linux内核中的同步机制:原子操作、信号量、读写信号量和自旋锁的API,另外一些同步机制,包括大内核锁、读写锁、大读者锁、RCU (Read-Copy Update,顾名思义就是读-拷贝修改),和顺序锁。
2. Linux中的用户模式和内核模式是什么含意?MS-DOS等操作系统在单一的CPU模式下运行,但是一些类Unix的操作系统则使用了双模式,可以有效地实现时间共享。
在Linux机器上,CPU要么处于受信任的内核模式,要么处于受限制的用户模式。
除了内核本身处于内核模式以外,所有的用户进程都运行在用户模式之中。
内核模式的代码可以无限制地访问所有处理器指令集以及全部内存和I/O空间。
如果用户模式的进程要享有此特权,它必须通过系统调用向设备驱动程序或其他内核模式的代码发出请求。
另外,用户模式的代码允许发生缺页,而内核模式的代码则不允许。
在2.4和更早的内核中,仅仅用户模式的进程可以被上下文切换出局,由其他进程抢占。
除非发生以下两种情况,否则内核模式代码可以一直独占CPU:(1)它自愿放弃CPU;(2)发生中断或异常。
2.6内核引入了内核抢占,大多数内核模式的代码也可以被抢占。
3. 怎样申请大块内核内存?在Linux内核环境下,申请大块内存的成功率随着系统运行时间的增加而减少,虽然可以通过vmalloc系列调用申请物理不连续但虚拟地址连续的内存,但毕竟其使用效率不高且在32位系统上vmalloc的内存地址空间有限。
所以,一般的建议是在系统启动阶段申请大块内存,但是其成功的概率也只是比较高而已,而不是100%。
如果程序真的比较在意这个申请的成功与否,只能退用“启动内存”(Boot Memory)。
下面就是申请并导出启动内存的一段示例代码:void* x_bootmem= NULL;EXPORT_SYMBOL(x_bootmem);unsigned long x_bootmem_size= 0;EXPORT_SYMBOL(x_bootmem_size);static int __init x_bootmem_setup(char *str){x_bootmem_size= memparse(str, &str);x_bootmem= alloc_bootmem(x_bootmem_size);printk("Reserved %lu bytes from %p for x\n", x_bootmem_size, x_bootmem);return 1;}__setup("x-bootmem=", x_bootmem_setup);可见其应用还是比较简单的,不过利弊总是共生的,它不可避免也有其自身的限制:内存申请代码只能连接进内核,不能在模块中使用。
被申请的内存不会被页分配器和slab分配器所使用和统计,也就是说它处于系统的可见内存之外,即使在将来的某个地方你释放了它。
一般用户只会申请一大块内存,如果需要在其上实现复杂的内存管理则需要自己实现。
在不允许内存分配失败的场合,通过启动内存预留内存空间将是我们唯一的选择。
4. 用户进程间通信主要哪几种方式?(1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。
(2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。
命名管道在文件系统中有对应的文件名。
命名管道通过命令mkfifo或系统调用mkfifo来创建。
(3)信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal 外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。
(4)消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。
有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。
消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺(5)共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。
是针对其他通信机制运行效率较低而设计的。
往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。
(6)信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。
(7)套接字(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。
起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。
5. 通过伙伴系统申请内核内存的函数有哪些?在物理页面管理上实现了基于区的伙伴系统(zone based buddy system)。
对不同区的内存使用单独的伙伴系统(buddy system)管理,而且独立地监控空闲页。
相应接口alloc_pages(gfp_mask, order),_ _get_free_pages(gfp_mask, order)等。
补充知识:1.原理说明Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表。
*页全局目录(Page Global Directory)*页上级目录(Page Upper Directory)*页中间目录(Page Middle Directory)*页表(Page Table)页全局目录包含若干页上级目录的地址,页上级目录又依次包含若干页中间目录的地址,而页中间目录又包含若干页表的地址,每一个页表项指向一个页框。
Linux中采用4KB大小的页框作为标准的内存分配单元。
多级分页目录结构1.1.伙伴系统算法在实际应用中,经常需要分配一组连续的页框,而频繁地申请和释放不同大小的连续页框,必然导致在已分配页框的内存块中分散了许多小块的空闲页框。
这样,即使这些页框是空闲的,其他需要分配连续页框的应用也很难得到满足。
为了避免出现这种情况,Linux内核中引入了伙伴系统算法(buddy system)。
把所有的空闲页框分组为11个块链表,每个块链表分别包含大小为1,2,4,8,16,32,64,128,256,512和1024个连续页框的页框块。
最大可以申请1024个连续页框,对应4MB大小的连续内存。
每个页框块的第一个页框的物理地址是该块大小的整数倍。
假设要申请一个256个页框的块,先从256个页框的链表中查找空闲块,如果没有,就去512个页框的链表中找,找到了则将页框块分为2个256个页框的块,一个分配给应用,另外一个移到256个页框的链表中。
如果512个页框的链表中仍没有空闲块,继续向1024个页框的链表查找,如果仍然没有,则返回错误。
页框块在释放时,会主动将两个连续的页框块合并为一个较大的页框块。
1.2.slab分配器slab分配器源于Solaris 2.4的分配算法,工作于物理内存页框分配器之上,管理特定大小对象的缓存,进行快速而高效的内存分配。
slab分配器为每种使用的内核对象建立单独的缓冲区。
Linux内核已经采用了伙伴系统管理物理内存页框,因此slab分配器直接工作于伙伴系统之上。
每种缓冲区由多个slab组成,每个slab就是一组连续的物理内存页框,被划分成了固定数目的对象。
根据对象大小的不同,缺省情况下一个slab最多可以由1024个页框构成。
出于对齐等其它方面的要求,slab中分配给对象的内存可能大于用户要求的对象实际大小,这会造成一定的内存浪费。
2.常用内存分配函数2.1.__get_free_pagesunsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order)__get_free_pages函数是最原始的内存分配方式,直接从伙伴系统中获取原始页框,返回值为第一个页框的起始地址。
__get_free_pages在实现上只是封装了alloc_pages函数,从代码分析,alloc_pages函数会分配长度为1<2.2.kmem_cache_allocstruct kmem_cache *kmem_cache_create(const char *name, size_t size,size_t align, unsigned long flags,void (*ctor)(void*, struct kmem_cache *, unsigned long),void (*dtor)(void*, struct kmem_cache *, unsigned long))void *kmem_cache_alloc(struct kmem_cache *c, gfp_t flags)kmem_cache_create/ kmem_cache_alloc是基于slab分配器的一种内存分配方式,适用于反复分配释放同一大小内存块的场合。
首先用kmem_cache_create创建一个高速缓存区域,然后用kmem_cache_alloc从该高速缓存区域中获取新的内存块。