操作系统基础 | 2.6 linux组成概述4
伪终端(Pseudoterminals)
- 伪终端是一对虚拟设备,称为 master(主)和 slave(从)。
- 这对设备提供了一个双向通信的 IPC 通道,可以在两端传递数据。
- 伪终端的关键在于:slave 设备的接口行为和真实终端一样,这样可以让面向终端的程序连接到 slave 端,而另一个程序通过 master 端驱动它。
- 驱动程序写入 master 的输出会经过终端驱动的常规输入处理(如回车转为换行),然后作为输入传递给连接在 slave 的终端程序。终端程序写入 slave 的内容也会经过输出处理后传递给驱动程序。
- 换句话说,驱动程序扮演了传统终端用户的角色。
- 伪终端广泛用于 X Window 系统下的终端窗口、telnet、ssh 等网络登录服务的实现。
日期与时间(Date and Time)
- 进程关心两类时间:
- 实时时间(real time):以某个标准点(如日历时间)或进程生命周期的某个固定点(如启动时刻)为基准。UNIX 系统的日历时间以自 1970 年 1 月 1 日 0 点(UTC)以来的秒数计,这一时刻称为 Epoch。
- 进程时间(process time/CPU
time):进程自启动以来所用的 CPU 时间,包括:
- 系统 CPU 时间:在内核态执行(如系统调用)所用时间
- 用户 CPU 时间:在用户态执行普通代码所用时间
time
命令可以显示进程的实时时间、系统 CPU 时间和用户 CPU 时间。
客户端-服务器架构(Client-Server Architecture)
- 客户端-服务器应用由两部分组成:
- 客户端(client):向服务器发送请求消息,请求服务
- 服务器(server):接收请求,执行操作,并返回响应消息
- 客户端和服务器之间可能有多轮请求-响应的对话。
- 通常,客户端与用户交互,服务器则提供对某些共享资源的访问。常见情况是多个客户端进程与一个或少数几个服务器进程通信。
- 客户端和服务器可以在同一台主机,也可以在通过网络连接的不同主机上。它们之间通过 IPC 机制进行通信。
- 将服务封装在单一服务器中的好处包括:
- 效率:集中管理资源(如打印机)比每台机器都配备资源更经济。
- 控制、协调与安全:集中资源便于统一管理、协调访问和安全控制(如防止多个客户端同时修改同一数据)。
- 异构环境兼容:在网络中,客户端和服务器可以运行在不同硬件和操作系统平台上。
实时(Realtime)
- 实时应用(realtime applications)是指需要对输入做出及时响应的应用。通常,这类输入来自外部传感器或专用输入设备,输出则用于控制外部硬件。
- 典型例子包括:自动化装配线、银行ATM、飞机导航系统等。
- 许多实时应用要求快速响应,但其本质特征是:系统必须保证在触发事件后的一定时间内完成响应(有严格的截止时间)。
- 实现高实时性(尤其是极短响应时间)需要操作系统的支持。大多数操作系统并不原生支持实时性,因为实时需求与多用户分时系统的需求可能冲突。传统 UNIX 不是实时操作系统,但有实时变种。Linux 也有实时版本,且新内核正逐步支持原生实时应用。
- POSIX.1b 标准为实时应用定义了一系列扩展,包括:异步I/O、共享内存、内存映射文件、内存锁定、实时时钟和定时器、可选调度策略、实时信号、消息队列和信号量等。虽然大多数 UNIX 实现并非严格意义上的实时系统,但现在普遍支持这些扩展中的部分或全部。
- “real time”指日历时间或经过时间,“realtime”专指具备上述响应能力的操作系统或应用。
/proc 文件系统
- 和其他一些 UNIX 实现类似,Linux 提供了
/proc
文件系统,它是一组挂载在/proc
目录下的目录和文件。 /proc
是虚拟文件系统,它以文件和目录的形式向用户提供内核数据结构的接口,便于查看和修改各种系统属性。/proc
下有一组以/proc/PID
命名的目录(PID为进程ID),用于查看系统中每个进程的信息。/proc
文件内容通常为人类可读的文本,可被 shell 脚本解析。程序可以直接打开、读取或写入这些文件。大多数情况下,只有特权进程才能修改/proc
下的文件内容。- 本书在介绍 Linux 编程接口时,也会介绍相关的
/proc
文件。更多信息见第12.1节。需要注意,/proc
文件系统不是标准规定的,具体细节是 Linux 特有的。