服务器运维栏目提供服务器相关知识点,还有服务器安全知识等你学。
前面说,进程是执行的程序,这是一种非正式的说法。 进程不只是程序代码(文本段或代码段),通常还还包括以下内容: 当前活动,如程序计数器的值和处理器寄存器的内容等。 进
在计算机设计早期,为了响应更多计算性能的需要,单处理器系统发展成为多处理器系统。更现代的、类似的系统设计趋势是将多个计算核放到单个芯片。无论多个计算核是在多个CPU芯
套接字(socket) 为通信的端点,每个套接字由一个 IP 地址和一个端口号组成。 通过网络通信的每对进程需要使用一对套接字,即每个进程各有一个。 通常,套接字采用客户机-服务器
操作系统内的每个进程表示,釆用 进程控制块 (Process Control Block, PCB ),也称为 任务控制块 。 图 1 进程控制块(PCB) 每个进程控制块如图 1 所示,它包含许多与当前进程相关的信息
学习 线程 时,我们描述了一个多线程的 Web 服务器,每当服务器接收到一个请求时,它都会创建一个单独线程来处理请求。虽然创建一个单独线程肯定优于创建一个单独进程,但是多线
操作系统内的并发执行进程可以是独立的也可以是协作的: 如果一个进程不能影响其他进程或受其他进程影响,那么该进程是独立的,换句话说,不与任何其他进程共享数据的进程是独
几乎所有现代操作系统都允许一个进程包含多个线程。 每个线程是 CPU 使用的一个基本单元,它包括线程 ID、程序计数器、寄存器组和堆栈。 进程与同一进程的其他线程共享代码段、数
本节讨论操作系统设计和实现面临的问题。虽然这些问题没有完整的解决方案,但是有些方法还是行之有效的。 设计目标 系统设计的首要问题是,定义目标和规范。从高层来说,系统设
远程过程调用 ,简称 RPC ,是一种最为常见的远程服务。RPC 对于通过网络连接系统之间的过程调用进行了抽象。它在许多方面都类似于 IPC 机制,并且通常建立 在 IPC 之上。不过,因为
系统调用(system call) 提供操作系统服务接口。这些调用通常以 C 或 C++ 编写,当然,对某些底层任务(如需直接访问硬件的任务),可能应以汇编语言指令编写。 在讨论操作系统如何
无名管道 提供了一个简单机制,允许一对进程通信。然而,只有当进程相互通信时,普通管道才存在。对于 UNIX 和 Windows 系统,一旦进程已经完成通信并且终止了,那么普通管道就不存
大多数系统的进程能够并发执行,它们可以动态创建和删除。因此,操作系统必须提供机制,用于创建进程和终止进程。 进程创建 进程在执行过程中可能创建多个新的进程。 创建进程
现代操作系统的另一特点是一组系统程序。回想一下图1-1,它描述了计算机的逻辑层次。最低层是硬件,接着是操作系统,然后是系统程序,最后是应用程序。 系统程序(system program)
迄今为止,我们只是泛泛地讨论了线程。不过,有两种不同方法来提供线程支持: 用户层的用户线程 或 内核层的内核线程 。 用户线程位于内核之上,它的管理无需内核支持;而内核线
互斥锁,我们刚刚讨论过了,通常认为是最简单的同步工具。本节将会讨论一个更棒的工具,它的功能类似于互斥锁,但是它能提供更为高级的方法,以便进程能够同步活动。 一个信号
我们从讨论所谓的临界区问题开始考虑进程同步。 假设某个系统有 n 个进程 {P 0 ,P 1 ,,P n-1 }。每个进程有一段代码,称为临界区,进程在执行该区时可能修改公共变量、更新一个表
毫无疑问,最简单的 CPU 调度算法是先到 先服务(FCFS)调度箅法 。釆用这种方案,先请求 CPU 的进程首先分配到 CPU。 FCFS 策略可以通过 FIFO 队列容易地实现。当一个进程进入就绪队列时
Windows 采用基于优先级的、抢占调度算法来调度线程。 用于处理调度的 Windows 内核部分称为 调度程序 ,Windows 调度程序确保具有最高优先级的线程总是在运行的。由于调度程序选择运行
在进程容易分成不同组的情况下,可以有另一类调度算法。例如,进程通常分为前台进程(或交互进程)和后台进程(或批处理进程)。这两种类型的进程具有不同的响应时间要求,进
不同的 CPU 调度算法具有不同属性,选择一个特定算法会对某些进程更为有利。为了选择算法以便用于特定情景,我们必须考虑各个算法的属性。 为了比较 CPU 调度算法,可以采用许多比
通常在使用多级队列调度算法时,进程进入系统时被永久地分配到某个队列。例如,如果前台和后台进程分别具有单独队列,那么进程并不从一个队列移到另一个队列,这是因为进程不
SJF 算法是通用优先级调度算法的一个特例。每个进程都有一个优先级与其关联,而具有最高优先级的进程会分配到 CPU。具有相同优先级的进程按FCFS顺序调度。SJF 算法是一个简单的优先
操作系统设计人员构建软件工具,以解决临界区问题,最简单的工具就是 互斥锁(mutex lock) 。我们采用互斥锁保护临界区,从而防止竞争条件。 也就是说,一个进程在进入临界区时应
时间片轮转(RR)调度算法 是专门为分时系统设计的。它类似于 FCFS调度 ,但是增加了抢占以切换进程。 该算法中,将一个较小时间单元定义为 时间量 或 时间片 。时间片的大小通常
本节说明一个经典的基于软件的临界区问题的解决方案,称为 Peterson 算法 。 Peterson 算法提供了解决临界区问题的一个很好的算法,并能说明满足互斥、进步、有限等待等要求的软件设
最短作业优先(SJF)调度算法 将每个进程与其下次 CPU 执行的长度关联起来。当 CPU 变为空闲时,它会被赋给具有最短 CPU 执行的进程。如果两个进程具有同样长度的 CPU 执行,那么可以
单调速率(RMS)调度算法 采用抢占的、静态优先级的策略,调度周期性任务。 当较低优先级的进程正在运行并且较高优先级的进程可以运行时,较高优先级进程将会抢占低优先级。在
最早截止期限优先(EDF)调度 根据截止期限动态分配优先级。截止期限越早,优先级越高;截止期限越晚,优先级越低。 根据 EDF 策略,当一个进程可运行时,它应向系统公布截止期限
Linux 进程调度 有一个有趣历史。在 2.5 版本之前,Linux 内核采用传统 UNIX 调度算法。然而,由于这个算法并没有考虑 SMP 系统,因此它并不足够支持 SMP 系统。此外,当有大量的可运行进
假设有 5 个哲学家,他们的生活只是思考和吃饭。这些哲学家共用一个圆桌,每位都有一把椅子。在桌子中央有一碗米饭,在桌子上放着 5 根筷子(图 1 )。 图 1 就餐哲学家的情景 当一