嵌入式Linux网络体系结构设计与TCP/IP协议栈
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.1 进程和系统调用

什么是进程?进程(process)是一个正在执行的程序实例,各进程拥有自己独立的地址空间。进程通常在执行某个应用程序时启动,应用执行完成后结束。创建、控制和结束进程是操作系统内核的一项重要任务。在用户地址空间执行的进程是互斥的,它们只能访问系统分配给它们的存储空间。用户地址空间的进程也不能直接访问内核功能。

当用户进程需要访问设备或使用操作系统内核的功能时,必须通过系统调用(system call)来完成。系统调用将处理器切换到保护模式,随后访问内核的地址空间,在保护模式下,所有的设备和内存资源通过内核实现API访问。

除了常规的进程和系统调用外,在内核中还包含了几种其他活动,这几种活动对网络子系统而言尤其重要,因为网络功能就是在内核中处理的,在本节后面的部分,我们将较详细介绍以下几种活动:

● 内核线程(kernel thread)。

● 中断(硬件中断)。

● 软件中断。

● tasklet。

● bottom half。

在设计内核活动时,最重要的一点是使这些活动能并行执行;另一方面,在多处理器环境下也要考虑同一种活动的同一实例是否可以在不同处理器上并行运行,或同一种活动的两个不同的实例是否可以同时在不同处理器上运行。表1-1 中列出了以上所述活动的相同实例和不同实例是否可以在不同CPU上同时执行的情况。

表1-1 内核中同一活动在不同CPU上同时执行

在这些活动中,另一个需要明确的是,哪种活动的优先级更高,即一种活动是否可以被其他的活动中断。表1-2 列出了以上活动之间是否可被其他活动中断的关系。这些信息特别重要,因为要避免某个活动因不可预期的打断而造成系统数据的破坏。

表1-2 活动间可被其他活动中断的关系