linux系统编程第一章

来源:互联网 发布:js 数组长度限制 编辑:程序博客网 时间:2024/05/01 14:59

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中储存

特殊文件忽略执行权限

目录读是列出,写是添加链接,执行?
















0 0