【TLPI读书笔记】 八、用户和组
密码文件:/etc/passwd
针对系统的每个用户账号,系统密码文件/etc/passwd
会专列一行进行描述。每行都包含7个字段,之间用冒号分割,如下所示:
- 登录名
- 经过加密的密码
- 用户ID(UID)
- 组ID(GID)
- 注释
- 主目录
- 登录shell
/etc/passwd
针对系统的每个用户账号,系统密码文件/etc/passwd
会专列一行进行描述。每行都包含7个字段,之间用冒号分割,如下所示:
进程可以通过增加堆的大小来分配内存,所谓堆是一段长度可变的连续虚拟内存,始于进程的未初始化数据段末尾,随着内存的分配和释放而增减。通常将堆的当前内存边界称为“program break
”。
program break
:brk()
和sbrk()
改变堆的大小其实就是命令内核改变进程program break
的位置,最初program break
正好位于未初始化数据段末尾之后。
在program break
位置抬升后,程序可以访问新分配区域内的任何内存地址,而此时物理内存尚未分配。内核会在进程首次试图访问这些虚拟内存地址时自动分配新的屋里内存页。
程序是包含了一系列信息的文件,这些信息描述了如何在运行时创建一个进程,所包含的内容如下所示:
原子操作:
当同时指定O_EXCL
与O_CREAT
作为open()
的标志位时,如果要打开的文件已然存在,则open()
将返回一个一个错误,这提供了一种机制:保证进程是打开文件的创建者。对文件是否存在的检查和创建文件属于同一原子操作。
多个进程同时向一个文件尾部追加数据,为避免进程间互相覆盖数据,应在打开文件时加入O_APPEND
标志可以保证原子操作。