Linux/UNIX 系统编程手册 - 要点记录

2017-10-14  本文已影响12人  sakura_na

第2章 基本概念
1、内核态和用户态
现代处理器架构一般允许CPU至少在两种不同状态下运行,即:用户态和核心态。执行硬件指令可使CPU在两种状态间来回切换。
与之对应,可将虚拟内存划分为用户空间部分和内核空间部分。
用户态运行时,CPU只允许访问用户空间的内存,核心态时,用户空间和内核空间都可以访问。
仅当CPU处于核心态时,才能执行某些特殊操作,如关闭系统等。
2、进程ID和父进程ID
每一个进程都有一个唯一的整数型进程标识符(PID)。此外,每一个进程还具有一个父进程标识符(PPID)属性,用以标识请求内核创建自己的进程。
3、init进程
系统引导时,内核会创建一个名为init的特殊进程,即“所有进程之父”,该进程的相应程序文件为/sbin/init。
init进程的进程号总为1,PPID为0,且总是以超级用户权限运行,谁都不能kill init进程,只有关闭系统才能结束。
4、/proc文件系统
/proc文件系统是一种虚拟文件系统,以文件系统目录和文件形式,提供一个执行内核数据结构的接口。
此外,还能通过一组以/proc/PID形式命名的目录查看运行进程的相关信息。

第3章 系统变成概念
1、系统调用(syscall)
系统调用是访问内核的入口,进程可以通过系统调用,请求内核以自己的名义去执行某些动作,如创建进程、I/O等。
关注一下几点:
1.1 系统调用将CPU从用户态切换到核心态,以便访问内核内存。
1.2 系统调用的组成是固定的,即是一个枚举集合,每个系统调用都由一个唯一的数字标识,不过程序是通过系统调用的名称来标识的。
1.3 每个系统调用都由自己的一套参数,用于传递信息。
1.4 应用程序通过调用C语言函数库中的外壳(wrapper)函数,来发起系统调用。
1.5 与用户空间的函数调用相比,系统调用会产生显著的开销。

上一篇下一篇

猜你喜欢

热点阅读