《Cisco IOS XR技术精要》一1.3 操作系统概念

简介:

本节书摘来自异步社区《Cisco IOS XR技术精要》一书中的第1章,第1.3节,作者 【美】Mobeen Tahir , Mark Ghattas , Dawit Birhanu , Syed Natif Nawaz,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.3 操作系统概念

Cisco IOS XR技术精要
计算机系统,包括路由器之类的嵌入式系统,都会带有一个负责向应用提供服务的操作系统。操作系统还提供了协调进程活动和访问硬件资源(如内存、网络接口、硬盘)等重要功能。图1-1给出了操作系统、应用,以及硬件资源之间的逻辑关系图。


e5f491a1fbe4a12817f372e10621f8dbfa49f89f

操作系统基本功能
操作系统为应用提供了多种多样的服务。可提供的基本功能包括进程调度、中断处理、内存管理、进程间通信,以及常见例行程序(常见库)。本节将对操作系统的这些基本功能做更详细的介绍。

1.进程调度
所谓进程(process),是指在具有执行多程序实例能力的系统上运行的软件程序执行实例。一个程序可并发生出多个进程。在一个多任务处理的操作系统上,多个进程可以分时请求CPU资源,使用户感觉多个进程是同时进行处理的。在多任务处理系统中,进程很可能需要在完成其当前任务之前交出对CPU的控制。

在协同多任务处理(cooperative multitasking)系统中,进程只有在完成执行任务或等待任务事件时才会主动地交出CPU控制权。这可能会导致其他进程在等待当前进程执行完毕的期间造成CPU饿死。

另一方面,抢占多任务处理(preemptive multitasking)系统中,当前运行的进程有可能会被强制交出CPU控制权。这种行为被称为抢占(preemption),有可能发生在高优先级进程准备就绪或当前进程已经运行满一定的时长的情况下。

当操作系统对进程进行抢占时,在向其他进程交出控制权之前保留进程状态是非常重要的,这样可以保证进程在重获CPU控制权时可以恢复之前的操作。内容交换(context switching)机制可以使进程在被抢占和重获控制的时候执行保存和恢复操作。

大多数今天的操作系统支持并发运行同一进程的多个实例,这种类型的操作系统被称为多线程(multithread)系统。线程是进程中的最小执行单元。

2.中断处理
中断(interrupt)是一种从硬件或软件发出的信号,用来指示CPU必须立刻进行处理。中断行为会导致操作系统挂起当前运行进程,转而去处理新的例行程序或进程。运行着的进程同样可以执行一个中断指令并触发中断处理例行程序的内容交换行为。当运行重要例行程序时,操作系统会阻止某些中断操作直至重要例行程序处理完毕。这种功能叫做中断屏蔽(interrupt masking)。

3.内存管理
操作系统负责管理全部的系统内存,包括对进程的内存分配,以及确保进程不会损坏分配给其他进程的内存数据。内存保护(memory protection)机制用来阻止进程去访问未分配给自身的内存空间。使用内存保护功能,每个进程各自运行在自身的内存空间中。某个进程的缺陷或针对某个进程的恶意攻击不会影响到其他进程。

在支持内存保护功能的操作系统中,进程间某些形式的通信可以使用共享内存(shared memory)来得到更好的处理。所谓共享内存,指的是可以由多个进程访问的内存资源。操作系统在共享内存区域执行读或写操作的进程之间提供了差异同步机制。

在单片式操作系统(monolithic operating system)中,所有进程共享相同的地址空间,而且不提供进程间的故障隔离机制。单片式系统具有更短的CPU周期,这是因为在内存访问、进程间通信、内容交换方面,单片式系统具有更低的负载,这适用于CPU资源密集和带有少量代码的简单系统场景中。

在支持内存保护功能的操作系统中,OS进程负责管理其他进程、内存以及其他被称为内核(kernel)的系统资源,因此这种OS也常被叫做基于内核的操作系统(kernel-based OS)。内核也可以包含其他服务,取决于其实现方式。内核运行在系统外的单独内存空间中,并且保护其不受内核外的其他进程引起的内存数据损坏。

非内核进程中的故障不会影响到内核以及其他进程。不过,内核进程中的故障将会影响所有应用。在微内核(microkernel)系统中,仅有关键性的核心OS服务被放置在内核中。所有其他服务,包括设备驱动器和网络驱动器,都被放置在自身所属的地址空间中。这种系统具有优秀的弹性,因为设备或网络驱动器内的故障将会自行控制而不会影响到内核或其他应用。设备和网络驱动器也可以在不重启整个系统的条件下完成单独重启。

4.同步
当多个应用同时运行并试图访问某个资源(例如硬盘)时,确保维护数据的完整性和资源的公平分配是非常重要的。网络操作系统可提供多种机制来同步事件和资源访问。

5.进程间通信
由于许多进程不能使用内存来交换数据,因此运行在独立的的地址空间中。操作系统为这些进程提供了进程间通信(IPC)机制。IPC通信同样可以在运行于主RP上的进程和运行于设备不同组件中的进程之间使用,包括线卡和电源。

6.动态链接库
多个应用使用一组常用例行程序的例子是很常见的。当这些应用各自运行在受保护的内存地址空间中时,常用例行程序将在每个地址空间中被复制一次,这将造成内存空间的浪费。为了避免这种问题的发生,操作系统提供了一种共享常用例行程序的机制,称作动态链接库(DLL)或Libc(C标准库)。该机制允许OS仅将活动库加载进设备内存,并启动不同的进程来共享相同的库。这是一种健壮的错误控制和软件模块化机制。该机制还可允许常用代码在不同应用之间进行共享。

7.可移植操作系统接口
可移植操作系统接口(POSIX)是一套用来规定内核API、线程接口、内核应用等技术的IEEE规范。POSIX还定义了一致性测试程序组。通过了测试程序的操作系统将被称为POSIX一致OS。遵循POSIX规范的OS被认为具有高度的灵活性,并可以为日后的特性或应用部署提供最大的可移植性。一款基于POSIX OS规范开发的应用程序可以方便、轻松地移植到另一台符合POSIX规范的OS上。

相关文章
|
14天前
|
安全 Android开发 iOS开发
安卓与iOS的较量:技术特性与用户体验的深度解析
在移动操作系统的战场上,安卓和iOS一直占据着主导地位。本文将深入探讨这两大平台的核心技术特性,以及它们如何影响用户的体验。我们将从系统架构、应用生态、安全性能和创新功能四个方面进行比较,帮助读者更好地理解这两个系统的异同。
44 3
|
20天前
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
|
7天前
|
人工智能 Linux 云栖大会
看过来!2024 云栖大会操作系统技术 Workshop 怎么玩?
报名倒计时2天啦,欢迎大家来“操作系统技术Workshop”打卡。专家讲解原理、现场实战演练,AI、C++ 20专场任选。
看过来!2024 云栖大会操作系统技术 Workshop 怎么玩?
|
6天前
|
安全 Android开发 数据安全/隐私保护
安卓与iOS的对决:移动操作系统的性能与创新
在当今智能手机市场,安卓和iOS两大操作系统一直处于竞争状态。本文将深入探讨它们在性能、安全性和用户体验方面的不同,并分析这些差异如何影响用户的选择。
26 3
|
5天前
|
API Android开发 iOS开发
掌握安卓与iOS应用开发中的依赖注入技术
本文探讨了在安卓和iOS应用开发中,如何有效利用依赖注入技术来提升代码的模块化、可测试性和可维护性。通过对比分析两种平台下依赖注入的实现方式与工具,本文旨在为开发者提供一套清晰、实用的依赖管理策略,助力打造高质量软件产品。
|
9天前
|
开发工具 Android开发 iOS开发
安卓与iOS开发:一场操作系统的较量
在数字时代的浪潮中,安卓和iOS这两大操作系统如同海上的两艘巨轮,各自承载着不同的使命与梦想。本文将深入浅出地探讨这两个系统在开发领域的异同,从用户体验、开发工具、市场趋势等多个维度进行比较分析。通过这场技术的较量,我们可以更好地理解每个系统的优势与局限,以及它们如何影响我们的日常生活和工作。
|
14天前
|
人工智能 安全 Android开发
安卓与iOS:操作系统的巨人较量
在数字时代的浪潮中,安卓和iOS作为两大主导力量,引领着智能手机市场的发展。本文将深入探讨这两个操作系统的设计哲学、用户界面、应用生态、安全性以及未来趋势,为读者提供一个全面的视角来理解它们之间的差异和各自的优势。
33 5
|
13天前
|
安全 Android开发 iOS开发
安卓与iOS的较量:技术特性与用户体验的深度剖析
在移动操作系统的战场上,安卓和iOS一直是两个重量级选手。本文将深入探讨两者的技术架构、安全性、应用生态以及用户体验等方面的差异,并尝试从用户和开发者的角度出发,分析这两个系统的优势与不足。通过比较,我们不仅能更好地理解各自的特点,还能洞察未来移动技术的发展趋势。
|
21天前
|
移动开发 搜索推荐 Android开发
安卓与iOS开发:一场跨平台的技术角逐
在移动开发的广阔舞台上,两大主角——安卓和iOS,持续上演着激烈的技术角逐。本文将深入浅出地探讨这两个平台的开发环境、工具和未来趋势,旨在为开发者揭示跨平台开发的秘密,同时激发读者对技术进步的思考和对未来的期待。
|
1天前
|
Android开发 Swift iOS开发
掌握安卓与iOS应用开发:关键技术与市场趋势
本文深入探讨了安卓和iOS平台的应用开发,通过分析关键技术如Kotlin、Swift及Flutter,并结合当前市场趋势,为开发者提供全面的技术指南。同时,比较了两大平台的优劣势,帮助开发者做出更明智的决策。