目录
文章目录
面向线程设计的 Linux 操作系统
在早期面向进程设计的计算机系统中(e.g. UNIX),Process 作为应用程序的基本执行实体,拥有并管理着诸如 CPU、Memory、File Descriptor、Signal Processing 等的计算机软硬件平台资源。
而在现代面向线程设计的计算机系统中(e.g. Linux Kernel),Thread 取代了 Process 作为应用程序的基本执行实体,同时 Process 的概念仍旧存在,但 Process 的定位则更趋于逻辑层面,作为 Thread 和计算机软硬件平台资源的容器,一个 Process 可以拥有多个且至少拥有一个 Thread 作为它的指令执行体。
计算机的基本执行单元从 Process 向 Thread 的演化,是为了解决创建进程(分配资源)、销毁进程(回收资源)、进程间通信(使用外部共享资源)以及进程间切换(上下文数据内存地址空间的转移)等操作的高耗低效问题。简单来说就是 Process 太重(拥有太多资源)了,导致了程序并发性能差。
下面从理论上列举出操作系统中常见的几种线程系统实现模型的比较。