linux kernel -- FileSystem


文件系统类型
static struct file_system_type *file_systems = (struct file_system_type *) NULL; struct file_system_type { struct super_block *(*read_super)(); /* 读出该文件系统在外存的super_block */ const char *name; /* 文件系统的类型名 */ int requires_dev; /* 支持文件系统的设备 */ struct file_system_type * next; /* 文件系统类型链表的后续指针 */ };
file_system_ty pe
file_system_ty pe
文件系统的安装(MOUNT)
/
bin
/ etc usr
bin
dev
lib
man
Root filesystem /
bin
/usr filesystem
dev
etc
bin
usr lib man
Complete hierarchy after mounting /usr
特定于文件系统 全局数据结构 include/fs/fs.h mount的时候进入内存 umount的时候移除

super_block
INODE 描述文件状态的元数据 保存实际文件内容的数据段

基于VFS的文件访问
VFS的目录项(DENTRY) 根目录
d_parent d_subdirs 子目录 d_subdirs 子目录 d_child 文件 d_child 子目录 d_child 子目录


文件系统类型
磁盘/设备 虚拟 系统调用 网络

app
app
app
libc
VFS Ext2/3 reiserf s ntfs fat32
用户空间
内核空间
SYSTEM CALL
系统调用名 mount/umount sysfs statfs/fstatfs/ustat chroot chdir/fchdir/getcwd mkdir/rmdir getdents/readdir/link/unlink/rename readlink/symlink chown/fchown/lchown chmod/fchmod/utime stat/fstat/lstat/access open/close/creat/umask dup/dup2/fcntl select/poll truncate/ftruncate lseek/_llseek read/write/readv/writev/sendfile pread/pwrite mmap/munmap fdatasync/fsync/sync/msync flock 功能 安装/卸载文件系统 获取文件系统信息 获取文件系统统计信息 更改根目录 更改当前目录 创建/删除目录 对目录项进行操作 对软链接进行操作 更改文件所有者 更改文件属性 读取文件状态 打开/关闭文件 对文件描述符进行操作 异步I/O通信 更改文件长度 更改文件指针 文件I/O操作 搜索并访问文件 文件内存映射 同步访问文件数据 处理文件锁
打开文件表
linux系统运行期间维护一张以struct file (在
include/linux/fs.h 中)作为节点的双向链表(系统 打开文件表)。表头由first_file给出。
struct file *first_file = NULL; /* fs/file_table.c */
对于每个进程,struct task_struct中的files指向 的files_struct结构中有一个fd指针数组,即维护一 张进程打开文件表。数组元素即是指向系统打开文 件表中某一节点的指针。
进程中的文件
struct fdtable { unsigned int max_fds; struct file ** fd; /* current fd array */ struct task_struct {{ struct files_struct fd_set *close_on_exec; /* ... fd_set *open_fds; * read/* file system info */ mostly part */ int link_count, total_link_count; struct rcu_head rcu; struct files_struct *free_files; ... atomic_t count; struct fdtable *next; /* filesystem information */ struct fdtable __rcu *fdt; }; struct fs_struct *fs; struct fdtable fdtab; /* /* open file information */ * written part on a separate cache line in SMP struct files_struct *files; */ /* namespaces */ struct nsproxy *nsproxy; spinlock_t file_lock ____cacheline_aligned_in_smp; struct fs_struct { ... next_fd; int atomic_t count; } struct embedded_fd_set close_on_exec_init; int umask; struct embedded_fd_set open_fds_init; struct dentry * root, struct file __rcu * fd_array[NR_OPEN_DEFAULT]; * pwd, * altroot; }; struct vfsmount * rootmnt, * pwdmnt, * altrootmnt; };
保持了链接结构的优点,又解决了其 缺点: 较多的寻道次数和寻道时间 索引 即能顺序存取,又能随机存取 索引表本身带来了系统开销 结构 满足了文件动态增长、插入删除要 如:内外存空间,存取时间 求 能充分利用外存空间
EXT2文件系统
Block size 1,024 2,048 4,096 Maximum file size 16 GiB 256 GiB 2 TiB
文件系统
everpan@ 2012-05
LINUX 内核
进程和文件 文件和通用接口 VFS、文件和文件系统 磁盘和文件 Ext2文件系统

FILE SYSTEM

你了解的文件系统类型有哪些?
ext2 ext3 ext4 reiserfs … hpfs hfs iso9660 udf … ms-dos vfat fat fat32 ntfs 40多种
文件系统注册与注销
文件系统类型的注册和注销函数 int register_filesystem(struct file_system_type * fs) int unregister_filesystem(struct file_system_type * fs)

file_systems
file_system_ty pe
返回时,struct
nameidata中的dentry和mnt标识 找到的文件或目录
/*include/linux/fs.h*/ /*找到的dentry指针*/ /*找到的文件所在文件系统*/
struct nameidata { struct dentry *dentry; struct vfsmount *mnt; struct qstr last; unsigned int flags; int last_type;};
d_parent d_mounts d_covers
新文件系统根
VFS的dentry定义在include/linux/dcache.h中 为了加快文件的查找,每一个曾被读取的目录或文件都可 能在目录高速缓存(directory cache)中有一个dentry项; den的结构
文件和文件系统(抽象) 1) inode文件内容和元数据 2) 文件系统和超级块

超级块(super_block) 索引节点(inode) 目录项(dentry) 文件(file) 特点: 只存在于内存中 充分考虑兼容

[文件系统控制块] [ 文件控制块]
SUPER BLOCK
文件分类
逻辑结构 是从用户角度研究文件的组织形式 无结构文件 有结构文件 流式文件;记录式文件 按文件的物理结构分类 顺序文件(连续) 链接文件 索引文件
物理结构
简单 支持顺序存取和随机存取 连续 顺序存取速度快 结构 所需的磁盘寻道次数和寻道时间最 少 提高了磁盘空间利用率,不存在外部 链式 碎片问题 结构 有利于文件插入和删除 有利于文件动态扩充 文件不能动态增长 预留空间:浪费 重新分配和移动 不利于文件插入和删除 外部碎片问题 存储压缩技术 存取速度慢,不适于随机存取 可靠性问题,如指针出错 更多的寻道次数和寻道时间 链接指针占用一定的空间
Scheduler
Device Driver Hardware
Memory manageme nt
VFS重要数据结构
files_struct (在sched.h); file (在fs.h); dentry (在 dcache.h); superblock(在 fs.h);
inode (在 fs.h)
Virtual FileSystem
User Programs
System Call Interface
Virtual File System
合集下载

(7条消息)ubuntu16.04 安装交叉编译工具aarch64

(7条消息)ubuntu16.04 安装交叉编译工具aarch64

(7条消息)ubuntu16.04 安装交叉编译工具aarch64前言最近需要把人脸识别代码放到RK3399Pro的嵌入式板子上,所以编写好的c++ 代码要放到板子上编译,或者在ubuntu系统上使用交叉编译工具,编译好可执行文件在放到板子里运行。

为了在能在ubuntu系统上能交叉编译,安装aarch64-linux-gnu-gcc/g++交叉编译工具链。

介绍The GNU Compiler Collection - cross compiler for ARM64 target. aarch64-linux-gnu-gcc/g++ 是一个交叉编译工具链,可以在其他架构的系统中,编译安装64 位arm 架构的程序。

常用在嵌入式代码的移植中。

aarch64-linux-gnu-gcc/g++ 是由非盈利组织Linaro 基于 GCC/G++ 推出的 ARM 交叉编译工具。

可用于交叉编译ARMv8 64 位目标中的裸机程序、u-boot、Linux kernel、filesystem 和 App 应用程序。

aarch64-linux-gnu-gcc/g++ 交叉编译器必须安装在 64 位主机上,才能编译目标代码。

安装# 查看可以安装的版本apt-cache search aarch64# 选择可以安装的版本进行安装# 此处选择gcc-5-aarch64-linux-gnu以及g++-5-aarch64-linux-gnu进行安装sudo apt-get install gcc-5-aarch64-linux-gnusudo apt-get install gcc-5-aarch64-linux-gnu# 安装依赖sudo apt --fix-broken install# 安装一个没有版本号的gcc和g++sudo apt-get install gcc-aarch64-linux-gnusudo apt-get install gcc-aarch64-linux-gnu# 查看版本aarch64-linux-gnu-g++ -vaarch64-linux-gnu-gcc -v测试c++文件交叉编译1.test.cpp文件/** test.cpp* for cplusplus* test aarch64-linux-gnu-g++*/# include<iostream>int main(int argc,char **argv){std::cout << "hello world!" <<std::endl;return 0;}2.交叉编译# 生成可执行文件test命令cd test # 切换到test 目录下aarch64-linux-gnu-g++ test_arm.cpp -o test # 将生成的可执行文件放到嵌入式板子上运行./test # 若显示hello world!表示成功。

麒麟Linux操作系统内核简介

麒麟Linux操作系统内核简介
•内核模块的存在方式:
–每个模块的代码都保存在单独的目标文件中,扩展名 为.ko; –整个模块集中于/lib/modules/kernelversion/中,多版 本模块可共存
内核模块的基本操作方法
•自劢加载:
–系统启劢并检测到硬件会根据配置信息自劢加载相应 模块; –定位设备在系统上是否有驱劢支持及使用哪个驱劢模 块的方法:
–# sysctl -p 修改完/etc/sysctl.conf中执行以生效; –# sysctl -w 直接应用修改;
•临时修改系统内核参数:
–# echo “something” > /proc/xxx –# echo “something” > /sys/xxx
•在系统启劢的时候追加参数:
–在grub-shell中使用e编辑或修改/boot/grub.conf文件; –启劢参数和sysctl可调参数参见:
系统中各种系统信息的获取
•和系统内核运行相关的信息和常用文件;
–/proc/cpuinfo 处理器信息 –/proc/meminfo 系统内存使用(free,vmstat) –/proc/partition 内存识别的块设备 –/proc/filesystem 被支持的文件系统 –/proc/mounts 挂载的文件系统 –/proc/modules 劢态装载模块 –/proc/swaps 系统内存使用(free,vmstat)例如 SCSI 控制器。 •需要新的特性,例如 USB 驱劢器。 •需要在引导时自劢装载模块。
–使用 mkinitrd 和--with 选项可重建带附加模块的系统:
•mkinitrd --with=module_name /boot/initrd-$(uname r).img\$(uname -r)

在Ubuntu上建立Arm Linux 开发环境

在Ubuntu上建立Arm Linux 开发环境

在Ubuntu上建立Arm Linux 开发环境来源:未知作者:电子电路【大中小】我使用的是友善2410的板子,以前都是用Fedora,现在家里的电脑被我转为Linux专用的了,装的是Ubuntu。

但是嵌入式还是要玩的,在装载过程中也遇到一些小麻烦。

在此记录一下,一来自己比较健忘,二来也希望能给一些没弄过的人一点启示。

目的:把ARM linux的交叉开发环境,kernel, filesystem, bootloder安装,并配置,使其可以编译bootloder, kernel, 可以nfs更新文件系统;资源:arm-linux-toolchains.tgzmatrix5-kernel-v5.5.tgzvivi.tar.gzJflash.tgzroot-for-nfs-v5.5.tgz规划:交叉编译器装在:/usr/local/kernel, bootloder放在: /home/volans/arm/用于启动的nfs文件系统放在:/home/armnfs/准备工作:sudo mkdir /home/armnfssudo chmod 777 /home/armnfsmkdir ~/arm上面前两句的目的是在/home下建立armnfs目录,为了开发的方便,把这个目录设成所有用户可rwx。

然后把上面提到的资源全部拷贝到~/arm/下。

安装配置:安装标准的C开发环境,由于Ubuntu安装默认是不安装的,所以需要先安装一下:sudo apt-get install gcc g++ libgcc1 libg++ make gdb安装交叉编译器cd /sudo tar zxvf /home/volans/arm/arm-linux-toolchains.tgz请在执行完成后查看是否存在/usr/local/arm文件夹。

把交叉编译器的路径加入到PATH,以方便使用:sudo vi /etc/bash_bashrc在后面加入如下代码:if [ -d /usr/local/arm ] ; thenPATH=/usr/local/arm/2.95.3/bin:"${PATH}"fi解压bootloader, kernel和flash烧写工具Jflashcd ~/armtar zxvf matrix5-kernel-v5.5.tgztar zxvf vivi.tar.gztar zxvf Jflash.tgz解压用于启动的NFS文件系统cd /home/armnfstar zxvf /home/volans/root-for-nfs-v5.5.tgz启动NFS服务请参照我前几篇文章,关于启动NFS服务器的相关内容。

Linux kernel内核升级全过程,教你一次成功

Linux kernel内核升级全过程,教你一次成功

序言由于开发环境需要在linux-2.6内核上进行,于是准备对我的虚拟机上的Linux系统升级。

没想到这一弄就花了两天时间(反复装系统,辛苦啊~~),总算把Linux系统从2.4.20-8内核成功升级到了2.6.18内核。

网上虽然有很多介绍Linux内核升级的文章,不过要么过时,下载链接失效;要么表达不清,不知所云;更可气的是很多文章在转载过程中命令行都有错误。

刚开始我就是在这些“攻略”的指点下来升级的,以致于浪费了很多时间。

现在,费尽周折,升级成功,心情很爽,趁性也来写个“升级攻略”吧!于是特意又在虚拟机上重新安装一个Linux系统,再来一次完美的升级,边升级边记录这些步骤,写成一篇Linux内核升级记实录(可不是回忆录啊!),和大家一起分享~~!一、准备工作首先说明,下面带#号的行都是要输入的命令行,且本文提到的所有命令行都在终端里输入。

启动Linux系统,并用根用户登录,进入终端模式下。

1、查看Linux内核版本# uname -a如果屏幕显示的是2.6.x,说明你的已经是2.6的内核,也用不着看下文了,该干什么干什么去吧!~~~如果显示的是2.4.x,那恭喜你,闯关通过,赶快进行下一步。

2、下载2.6内核源码下载地址:/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz23、下载内核升级工具(1)下载module-init-tools-3.2.tar.bz2/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.bz2(2)下载mkinitrd-4.1.18-2.i386.rpm/fedora/linux/3/i386/RPMS.core/mkinitrd-4.1.18-2.i386.rpm(3)下载lvm2-2.00.25-1.01.i386.rpm/fedora/linux/3/i386/RPMS.core/lvm2-2.00.25-1.01.i386.rpm(4)下载device-mapper-1.00.19-2.i386.rpm/fedora/linux/3/i386/RPMS.core/device-mapper-1.00.19-2.i386.rpm(2.6.18内核和这4个升级工具我都有备份,如果以上下载地址失效,请到/guestbook留下你的邮箱,我给你发过去)好啦,2.6内核和4个升级工具都下载完了(少一个也不行,如果没有下载齐全,请不要尝试下面的步骤,升级是不会成功的),下面回到Linux系统中开始配置工作吧。

DS-5编译器的导入

DS-5编译器的导入

DS-5环境下编译器的导入
目录
1. 编译工具介绍 (3)
2. 编译工具的导入 (3)
1.编译工具介绍
说起ARM开发,不得不说的就是编译工具了。

ARM官方的编译工具是ARM Compilers,包括ARM Compiler 5和ARM Compiler 6,DS-5开发软件已包含此编译工具。

DS-5开发环境除了支持官方的编译工具,还支持GUN的Linaro GCC Compiler编译器。

以下是关于所支持编译器的比较:
在开发过程中,可能会遇到其他一些GUN的编译器(例如arm-none-linux-gnueabi-gcc),虽然DS-5开发环境支持此类编译工具,但是在安装完成的DS-5软件中并没找到此编译器。

此时就需要编译工具的导入操作。

2.编译工具的导入
arm-none-linux-gnueabi-gcc是Codesourcery公司(目前已经被Mentor收购)基于GCC 推出的的ARM交叉编译工具。

可用于交叉编译ARM系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。

首先需要下载相应的编译工具的安装文件。

示例的工具可以在Mentor的官网进行下载。

双击安装文件进行安装。

安装完成后,打开DS-5开发环境,在Window菜单下选择Preferences:
打开其中的DS-5下的Toolchains:
点击A dd…,选择刚才安装的路径:
点击NEXT:
点击Finish:
点击Apply,Eclipse会重启。

重启之后,修改生效,您可以在工程的编译工具配置选项中找到该编译工具:。

linux单词

linux单词

Platform 平台Kernel 核心,这里指linux内核General 一般的Swap 交换的Lesser 次要的Dump 倒,卸Postfix 后缀Grand 极好的,宏伟的Bootloader 自举器,引导器,启动器Python 巨蟒,这里指一种编程语言Ruby 红宝石,这里指一种编程语言Perl 一种脚本编程语言Manual 手册,指南Shell 贝壳,框架,命令解释器Expression 表达式List 清单,列表Remove 删除Move 移动Which 哪一个,哪一些Concatenate 连接More 更多Less 更少Head 脑袋,头部Tail 尾巴,尾部Count 计算,统计Executable 执行Symbolic 符号的Package 包Manager 管理者,管理器Configure 配置Prefix 前缀Make 制作Source 来源Erase 擦除,移除Upgrade 升级Freshen 更新Lynx 山猫,这里指一款网页浏览器Axel 这里指一款下载工具Zebra 斑马,这里指一款路由模拟软件Firefox 火狐狸,这里指mozilla 公司出品的网页浏览器程序Identify 确定,识别Owner 所有者Change 更改,改变Ownership 所有权Modify 修改,更改Daemon 后台程序Mode 模式,样式Sticky 粘的,粘性的Shadow 阴影Finger 手指,查找器Block 块Partition 分割,划分Filesystem 文件系统Quota 配额,定额,限量Logical 逻辑的Inode 网点,节点Average 平均Count 计算Manager 管理员,管理器Extend 扩展的,扩充Cylinder 柱面Sectors 扇区Track 磁道Node 节点Initialization 初始化Buffer 缓冲器Process 进程Statistic 统计信息Default 默认的,缺省的Record 记录Master 主要的Cron 克龙,时间单位Spawn 产物Spool 线轴,卷筒Script 脚本,手稿Express 表达式Export 输出,导出Read 读取,阅读Echo 回声,回显Alias 别名,绰号Cut 切割,切分Bash 猛击Bourne 小溪,目的地History 历史Utility 效用,功用Awk 笨拙的,棘手的Source 源,来源If 如果,是否For 对于,为了While 当……的时候Case 情况,案例Until 直到……的时候Shift 移动,改变Great 大的,巨大的Less 小的,少的Equal 相等的,等于Exist 存在Sum 总数Pattern 模式Specified 指定的Counter 计数器Log 日志,记录Rescue 救援Secure 安全Average 平均Stamp 标签Count 计数Startup 启动Mismatch 不匹配Environment 环境Maintenance 维护。

openQRM开源数据中心管理平台

openQRM开源数据中心管理平台openQRM开源数据中心管理平台2011-08-1323:20:40| 分类:虚拟化+云计|字号订阅Tags:kvm,openQRM,virtual,vmware,xen,云存储,系统监控Posted in 系统监控6 Comments参考The openQRM User’s Guide说明一直在使用XEN和KVM虚拟技术来构建集群系统,不过,使用的管理软件比较简陋,只是使用DE&gt;virt-managerDE&gt;。

DE&gt;virt-managerDE&gt;确实很轻量级,使用也很方便,不过比较麻烦的是需要系统管理员采用远程登录Linux系统,使用VNC图形管理界面或者远程X window系统访问。

比较通用的方式是采用WEB 管理,所以考虑部署一个集成的WEB管理平台。

openQRM是一个开源的(GPL)数据中心管理平台,提供完全的插件结构方式构建,专注于自动化,快速和基于应用的部署,监控和高可用并且特别支持多种虚拟技术。

openQRM是一个单一管理控制台,用于完成IT基础构架和提供良好定义API以集成第三方工具作为插件。

在对类似的管理平台做了一些资料对比后,我选择openQRM做了一次尝试,也整理了一下openQRM的介绍资料和实践记录。

初步实践感受在CentOS平台安装非常顺利,稍微有一些小波折,不过,对于一个熟悉Linux开源软件安装的技术人员来说,还是很容易安装完成的。

对发行版还是比较依赖。

我尝试在gentoo平台上部署,出现的问题较多,最后还是放弃了。

从构架上来看,有可取之处,实现的构架正是我以前尝试综合很多开源软件所要达成的目标。

不过,正因为openQRM以一种大而全的构架来实现对虚拟化、集群、存储和系统监控的完全解决方案,所以对使用者屏蔽了很多细节。

这样带来的问题是,使用有些复杂、不易理解。

文档还是感觉比较匮乏,特别是缺乏整个系统底层构架的详细说明,也缺乏相系的配置说明。

8-fs


Mounting
Mounting
● ●
File access -> after file system containing the file must be mounted.(system call mount) mount_root()


takes care of mounting the first file system(the root file system) be called by setup(system call) after all the file system implementations included in the kernel have been registered. be represented by a super_block structure.

File system : bootblock, superblock, inode blocks, data blocks
● ●
● ●
bootblock : required to boot the OS superblock : holds essential information for managing the file system many inode block : holds inode structures for the file system data block : holds ordinary files, directory entries, indirect block

File system central demand
● ●
speed of access to data facility for random access(by block-oriented devices)

瑞泰DM365开发板实验全过程


5、设置虚拟 拟机பைடு நூலகம்名称,安装目录, 接下 来几个都 都是默认设置 置,直接 Nex xt
6、在这个画 画面设置虚拟 拟硬盘大小,设为 40G,后 后面软件占用 用空间较大
7、点击 Next (3) 虚拟机上安装 Linux 系统 前面设置完后将看到如下画面(图 a):
8、点击 Finish
点击 要的设置:
选择 “Windows 共享” 填入主机的 IP 地址 “连接” 桌面出现连接的目标


复制到/opt 目录下;
在 Linux 服务器下进入到/opt 根目录下,进行解压安装操作,使用命令: Host # tar –jxvf dm365.tar.bz2 该过程将需要的软件安装到/opt 根目录下,安装过程需要 10 分钟以上。 泰瑞-SDK 安装完成后,在/opt/dm365 下创建如下目录:
Host # cd /opt/dm365/project/dm3xx_sd_boot-6 Host # make clean Host # make all Host # make install (若出现执行不成功, 可添加环境变量设置: Host # export PATH=$PATH:./bin.x86:/sbin ) 2) 对 Nand flash 烧写 上面执行成功后,将 SD 卡从主机拔出,插入开发板 SD0 口(开发板默认从 SD0 口 启动) RBL 是固化在 DM365 中 ROM 区的一小段加载程序,上电后复位 ARM 读取[Boot Mode]的设置,然后从相应的硬件媒体中加载并执行 arm ubl,如果没有找到相应的 UBL 则会在下一个媒体设备中继续寻找。 在开发板核心板的右上角,U7 为 BOOT MODE 选择开关,选择启动模式: 将 1、2、3 拨至 0,后面的 4、5、6 开关对应了 BTSEL[2:0]: BTSEL[2:0]= 000 :NAND 启动模式 BTSEL[2:0]= 001 :AEMIF 启动模式(Nor 或者 OneNand) BTSEL[2:0]= 010 :MMC0/SD0 启动模式 BTSEL[2:0]= 011 :UART0 启动模式 BTSEL[2:0]= 100 :USB 启动模式 BTSEL[2:0]= 101 :SPI 0 启动模式 BTSEL[2:0]= 110 :EMAC 启动模式 BTSEL[2:0]= 111 :HPI 启动模式 先将 4、5、6 拨至 010 ,选择 SD 卡 boot 模式 打开 Windows 主机超级终端 “泰瑞 DM365” , 连接串口线 (串口线接开发板 URAT0) 、 5V 电源线 超级终端会出现类似如下打印信息:

linux2.6内核参数详解

Enable extended accounting over taskstats
收集额外的进程统计信息并通过taskstats接口发送到用户空间
Configure standard kernel features (for small systems)
配置标准的内核特性(为小型系统)
Enable 16-bit UID system calls
Subarchitecture Type
处理器的子架构,大多数人都应当选择"PC-compatible"
Processor family
处理器系列,请按照你实际使用的CPU选择
Generic x86 support
通用x86支持,如果你的CPU能够在上述"Processor family"中找到就别选
Initramfs source file(s)
initrd已经被initramfs取代,如果你不明白这是什么意思,请保持空白
Optimize for size (Look out for broken compilers!)
编译时优化内核尺寸(使用"-Os"而不是"-O2"参数编译),有时会产生错误的二进制代码
在多cpu系统中让特权CPU访问x86的MSR寄存器
/dev/cpu/*/cpuid - CPU information support
能从/dev/cpu/x/cpuid获得CPU的唯一标识符(CPUID)
IPC Namespaces
IPC命名空间支持,不确定可以不选
POSIX Message Queues
POSIX消息队列,这是POSIX IPC中的一部分
BSD Process Accounting
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档