Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux是实时系统还是分时操作系统?

Linux是实时系统还是分时操作系统?

作者头像
混说Linux
发布于 2023-02-24 08:15:04
发布于 2023-02-24 08:15:04
2.4K0
举报
文章被收录于专栏:混说Linux混说Linux

第一时间看干货文章

1

我们平时分享的µC/OS、FreeRTOS、RT-Thread、ThreadX这些都是实时操作系统(RTOS),那么有读者问:什么是分时操作系统,Linux属于实时操作系统吗?

实时操作系统(RTOS)

RTOS,英文全称Real Time Operating System,即实时操作系统。

1.实时操作系统定义 实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。

因而,提供及时响应和高可靠性是其主要特点。

实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的。

软实时则只要按照任务的优先级,尽可能快地完成操作即可。我们通常使用的操作系统在经过一定改变之后就可以变成实时操作系统。

实时操作系统是保证在一定时间限制内完成特定功能的操作系统。例如,可以为确保生产线上的机器人能获取某个物体而设计一个操作系统。在“硬”实时操作系统中,如果不能在允许时间内完成使物体可达的计算,操作系统将因错误结束。

在“软”实时操作系统中,生产线仍然能继续工作,但产品的输出会因产品不能在允许时间内到达而减慢,这使机器人有短暂的不生产现象。一些实时操作系统是为特定的应用设计的,另一些是通用的。

一些通用目的的操作系统称自己为实时操作系统。但某种程度上,大部分通用目的的操作系统,如微软的Windows NT或IBM的OS/390有实时系统的特征。这就是说,即使一个操作系统不是严格的实时系统,它们也能解决一部分实时应用问题。

2.实时操作系统的特征 1)多任务; 2)有线程优先级 3)多种中断级别

小的嵌入式操作系统经常需要实时操作系统,内核要满足实时操作系统的要求。

3.实时操作系统的相关概念 (1)基本概念 代码临界段:指处理时不可分割的代码。一旦这部分代码开始执行则不允许中断打入;

资源:任何为任务所占用的实体;

共享资源:可以被一个以上任务使用的资源;

任务:也称作一个线程,是一个简单的程序。每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。典型地,每个任务都是一个无限的循环,每个任务都处在以下五个状态下:休眠态,就绪态,运行态,挂起态,被中断态;

任务切换:将正在运行任务的当前状态(CPU寄存器中的全部内容)保存在任务自己的栈区,然后把下一个将要运行的任务的当前状态从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行;

内核:负责管理各个任务,为每个任务分配CPU时间,并负责任务之间通讯。分为不可剥夺型内核于可剥夺型内核;

调度:内核的主要职责之一,决定轮到哪个任务运行。一般基于优先级调度法;

(2)关于优先级的问题 任务优先级:分为优先级不可改变的静态优先级和优先级可改变的动态优先级;

优先级反转:优先级反转问题是实时系统中出现最多的问题。共享资源的分配可导致优先级低的任务先运行,优先级高的任务后运行。解决的办法是使用“优先级继承”算法来临时改变任务优先级,以遏制优先级反转。

(3)互斥 虽然共享数据区简化了任务之间的信息交换,但是必须保证每个任务在处理共享共享数据时的排他性。使之满足互斥条件的一般方法有:关中断,使用测试并置位指令(TAS),禁止做任务切换,利用信号量。

因为采用实时操作系统的意义就在于能够及时处理各种突发的事件,即处理各种中断,因而衡量嵌入式实时操作系统的最主要、最具有代表性的性能指标参数无疑应该是中断响应时间了。中断响应时间通常被定义为:

中断响应时间=中断延迟时间+保存CPU状态的时间+该内核的ISR进入函数的执行时间。

中断延迟时间=MAX(关中断的最长时间,最长指令时间) + 开始执行ISR的第一条指令的时间。

分时操作系统(TSOS)

TSOS,英文全称Time-sharing Operating System,即分时操作系统。

使一台计算机同时为几个、几十个甚至几百个用户服务的一种操作系统叫分时操作系统。把计算机与许多终端用户连接起来,分时操作系统将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。

由于时间间隔很短,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是可有效增加资源的使用率。例如UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。

产生分时系统是为了满足用户需求所形成的一种新型 OS 。它与多道批处理系统之间,有着截然不同的性能差别。用户的需求具体表现在以下几个方面: 人—机交互 共享主机 便于用户上机

1.分时系统的基本思想 时间片:是把计算机的系统资源(尤其是 CPU时间)进行时间上的分割,每个时间段称为一个时间片,每个用户依次轮流使用时间片。

分时技术:把处理机的运行时间分为很短的时间片,按时间片轮流把处理机分给各联机作业使用。

分时操作系统:是一种联机的多用户交互式的操作系统。一般采用时间片轮转的方式使一台计算机为多个终端服务。对每个用户能保证足够快的响应时间,并提供交互会话能力。

设计目标:对用户的请求及时响应,并在可能条件下尽量提高系统资源的利用率。

适合办公自动化、教学及事务处理等要求人机会话的场合。

2.工作方式 一台主机连接了若干个终端;每个终端有一个用户在使用;交互式地向系统提出命令请求;系统接受每个用户的命令;采用时间片轮转方式处理服务请求;并通过交互方式在终端上向用户显示结果;用户根据上步结果发出下道命令

分时系统实现中的关键问题:及时接收。及时处理。

3.特征 交互性:用户与系统进行人机对话。 多路性:多用户同时在各自终端上使用同一CPU。 独立性:用户可彼此独立操作,互不干扰,互不混淆。 及时性:用户在短时间内可得到系统的及时回答。 影响响应时间的因素:终端数目多少、时间片的大小、信息交换量、信息交换速度。

区别

RTOS和TSOS各有各的特点,RTOS一般用于相对低速的MCU,比如运动控制类、按键输入等动作要求实时处理的系统,一般要求ms级,甚至us级响应。

分时:现在流行的PC,服务器都是采用这种运行模式,即把CPU的运行分成若干时间片分别处理不同的运算请求。

实时:一般用于单片机上,比如电梯的上下控制中,对于按键等动作要求进行实时处理。

最后

分通过以上分析,可以明确linux是分时系统,不过可以改成实时的如:ucLinux就是linux修改而来的实时系统,至于他们的区别,可以引用百度中的类似回答:

分时系统是一个系统可以同时为两个或两个以上的账户服务!

实时系统是能立即对指令做出反应的操作系统!微软的常见系统不能吧!而且还死机!战斗机中的操作系统就是实时的系统,想想如果别人打仗时战斗机中的电脑反应的是飞行员上一条指令或死机了,谁还敢开这架飞机呢?

原文:https://www.cnblogs.com/xiawen/p/3317302.html

往期推荐

C语言 宏嵌套的展开规则

分享一个开源的QT的串口示波器

C语言回调函数,提升C技巧必备

用C语言实现状态机设计模式

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 混说Linux 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Node.js 中使用 ES6 中的 import / export 的方法大全
Node.js 中使用 ES6 中的 import / export 的方法大全
一个会写诗的程序员
2018/12/06
5.3K0
Node.js 中使用 ES6 中的  import / export 的方法大全
Node.js中CommonJS和ECMAScript有什么区别?
Node.js 既支持 CommonJS 标准,也完全支持 ECMAScript 标准。Node.js 环境下用 js语言编写的文件,有三种格式:.js、.mjs、.cjs。
Learn-anything.cn
2021/11/26
1.1K0
Node.js 22 正式发布,支持 Require() ESM 模块!
Node.js 22 将于十月进入长期支持(LTS)阶段,但在那之前,它将在接下来的六个月内作为“当前”发布版本。我们鼓励您探索此最新版本提供的新功能和优势,并评估它们对您的应用程序的潜在影响。
ConardLi
2024/04/28
5440
Node.js 22 正式发布,支持 Require() ESM 模块!
一杯茶的时间,上手 Node.js
Node.js 太火了,火到几乎所有前端工程师都想学,几乎所有后端工程师也想学。一说到 Node.js,我们马上就会想到“异步”、“事件驱动”、“非阻塞”、“性能优良”这几个特点,但是你真的理解这些词的含义吗?这篇教程将带你快速入门 Node.js,为后续的前端学习或是 Node.js 进阶打下坚实的基础。
一只图雀
2020/04/07
1.1K0
【云+社区年度征文】webpack 学习笔记系列02-模块化开发
三大 JavaScript 主流模块规范:CommonJS、AMD 和 ES6 Module。CommonJS 和 AMD 都未统一浏览器和客户端的模块化规范。目前 Node.js 使用 CommonJS 作为官方的模块解决方案,虽然内置的模块方案促进了 Node.js 的流行,但是也为引入新的 ES Modules(ESM)标准造成了一定的阻碍,不过 Node.js 9.0+ 已经支持 ESM 语法。
CS逍遥剑仙
2020/12/23
1.2K0
【架构师(第九篇)】如何让 Node 环境支持 ES Module
运行程序,发现会报错 Cannot use import statement outside a module ,意思就是不让用 import 语法。
一尾流莺
2022/12/10
1.1K0
【架构师(第九篇)】如何让 Node 环境支持 ES Module
深入了解“前端模块化”发展体系
作为一名前端工程师,每天的清晨,你走进公司的大门,回味着前台妹子的笑容,摘下耳机,泡上一杯茶,打开 Terminal 进入对应的项目目录下,然后 npm run start / dev 或者 yarn start / dev 就开始了一天的工作。
小生方勤
2019/05/31
7560
Node.js 在 2020 年有什么新东西
2019 年,Node.js 已经10岁了,而 NPM 上可用的包数量也超过了 100 万个。Node.js 本身的下载数也仍在上升,同比上年增长 40%。另一个重要的里程碑是 Node.js 最近加入了 OpenJS 基金会,该基金会承诺改善项目的健康度和可持续性,并加强与整个 JavaScript 社区的协作。
coder_koala
2020/03/11
1.3K0
前端模块化规范
完整高频题库仓库地址:https://github.com/hzfe/awesome-interview
HZFEStudio
2021/09/13
7770
Node新版本13.2.0正式支持ES Modules特性
在本月 21 日,即2019.11.21,Node.js 发布了 13.2.0 版本,更新了一些特性。其中最令人兴奋的莫过于正式取消了 --experimental-modules 启动参数。这说明Node.js 正式支持 ES modules。我们一起来看看。
winty
2019/12/20
1.5K0
Node.js宣布新的--experimental-modules【译】
原文:Announcing a new --experimental-modules
ACK
2020/01/14
1.8K0
前端模块化的今生
众所周知,早期 JavaScript 原生并不支持模块化,直到 2015 年,TC39 发布 ES6,其中有一个规范就是 ES modules(为了方便表述,后面统一简称 ESM)。但是在 ES6 规范提出前,就已经存在了一些模块化方案,比如 CommonJS(in Node.js)、AMD。ESM 与这些规范的共同点就是都支持导入(import)和导出(export)语法,只是其行为的关键词也一些差异。
ConardLi
2019/12/17
7040
Javascript模块化详解
前端的发展日新月异,前端工程的复杂度也不可同日而语。原始的开发方式,随着项目复杂度提高,代码量越来越多,所需加载的文件也越来越多,这个时候就需要考虑如下几个问题:
Clearlove
2021/03/11
6290
Javascript模块化详解
node.js基础入门
node.js是一个基于Google V8引擎的、跨平台的JavaScript运行环境,不是一个语言
黄啊码
2022/06/20
7990
Node.js的模块解析机制
Node.js的模块解析机制基于CommonJS规范,该规范定义了如何在JavaScript中实现模块功能。在Node.js中,每个文件都被视为一个独立的模块,拥有自己的作用域。模块之间通过require()函数来引入依赖,并通过exports或module.exports来导出模块成员。
jack.yang
2025/04/05
1060
2020 年 Node.js 将会有哪些新功能[每日前端夜话0xFA]
2019 年是 Node.js 诞生的第 10 个年头,npm 上可用的包数量超过了 100 万。Node.js 本身的下载量也在持续增长,同比增长了 40%。另一个重要的里程碑是 最近 Node.js加入了 OpenJS 基金会,该基金会承诺改善项目的状况和可持续性,并改善与整个 JavaScript 社区的协作。
疯狂的技术宅
2019/12/12
1.1K0
2020 年 Node.js 将会有哪些新功能[每日前端夜话0xFA]
前端必知之:前端模块化的CommonJS规范和ES Module规范详解
这种写法很容易存在全局污染和依赖管理混乱问题。在多人开发前端应用的情况下问题更加明显。
肥晨
2024/08/09
3120
前端模块化-CommonJS,AMD,CMD,ES6
随着 JavaScript 工程越来越大,团队协作不可避免,为了更好地对代码进行管理和测试,模块化的概念逐渐引入前端。模块化可以降低协同开发的成本,减少代码量,同时也是“高内聚,低耦合”的基础。
李振
2021/11/26
4240
[译] What's New for Node.js in 2020
Node.js在2019年走到了第十个年头, npm上面的包数量也超过了一百万. NodeJS自身的下载量也在以每年40%的速度持续增长. 而对于NodeJS最近的另一个里程碑便是它加入了OpenJS基金会, 该基金会旨在提高项目的健康度与可持续性, 同时与JavaScript社区有一个紧密的合作.
腾讯IVWEB团队
2020/06/28
2K0
node.js笔记
4、语法: 1)加载 path 模块 2)使用 path.join 方法,拼接路径
打不着的大喇叭
2024/03/11
1720
node.js笔记
推荐阅读
相关推荐
Node.js 中使用 ES6 中的 import / export 的方法大全
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档