LINUX系统编程,学一下这本书,今天,2015年10月2日,要把这本书看懂,并把要点总结在这篇博客里。
1章
系统软件基于内核,c库实现
3大基石:系统调用,c库,c编译器
调用系统调用,执行内核允许的代码
应用程序用寄存器告诉系统调用哪个系统调用,每个系统调用一个编号。参数也在寄存器中,多的话用一个寄存器指向存储参数的用户空间。
glibc
一切皆文件
内核使用文件描述符,元数据到文件的映射。
写文件是覆盖的,不要顾虑。
文件末尾后追加,中间变0
linux中文件位置符64位
系统为每个打开的文件实例弄一个文件描述符
索引节点与文件关联,在本文件系统中是唯一的,在系统眼里,inode就是文件
链接:文件名--》inode
目录使用文件储存的,目录也有关联的索引节点,这地方不太懂?估计是软链接的集合。
搜索目录的时候是一个索引节点链接到另一个索引节点
目录不同于普通文件,不支持普通操作。
索引节点有链接计数,如果为0就删除文件,软链接算不算链接计数?对,软链接不影响链接计数
软链接跨文件系统,实现快捷方式
字符设备文件,块设备文件:磁盘,设备驱动吧字节映射到可寻址的设备上
fifo特殊文件,命名管道,一个进程的输出是另一个进程的输入
套接字进程间通信
linux系统命名空间是全局的
添加删除文件系统,挂载和卸载,挂载到命名空间的某个位置,哦,在命名空间中找个位置叫挂载
第一个挂载的是根文件系统
内存中的虚拟文件系统
块设备用扇区《文件系统块《内存页
进程关联的系统资源由内核管理
bss段描写不太懂?
linux内核实现了独特的线程模型:可共享某些资源的进程。
用户空间内使用glibc库
进程树,第一个进程是init,如果子进程先死,其父进程是init
僵尸进程?一个数据结构:进程号,运行时间,退出状态。占用进程号,可能造成别的进程没号了。
pid全局唯一
运行的进程对应一个uid
uid是用户标识,/etc/passwd中用户名映射到uid
用户登录后,uid就是shell进程的uid,子进程继承父进程uid。好,连起来了。
root的uid为0
组?
权限:所有者,所有组,其他人,读写执行,在inode中储存
特殊文件忽略执行权限
目录读是列出,写是添加链接,执行?