打印

再来个讨论----嵌入式操作系统的定义

[复制链接]
1876|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Simon21ic|  楼主 | 2015-9-3 15:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
a20084666| | 2015-9-6 09:03 | 只看该作者
楼主是怎样定义的

使用特权

评论回复
板凳
keer_zu| | 2015-9-6 09:33 | 只看该作者
好题目。

使用特权

评论回复
地板
Simon21ic|  楼主 | 2015-9-6 14:34 | 只看该作者
我其实不太明白,我自己做的构架,也具备RTOS里的任务管理,IPC,是不是也可以算作为操作系统了呢?

使用特权

评论回复
5
wuhenyouyu| | 2015-9-6 15:39 | 只看该作者
我看了下您写的事件驱动型编程的贴子,也看了下PT协程,有一个地方没有看明白,每个函数都是static型的,岂不会占用大量RAM?

使用特权

评论回复
6
Simon21ic|  楼主 | 2015-9-6 20:20 | 只看该作者
wuhenyouyu 发表于 2015-9-6 15:39
我看了下您写的事件驱动型编程的贴子,也看了下PT协程,有一个地方没有看明白,每个函数都是static型的,岂 ...

static函数会占用RAM?

使用特权

评论回复
7
wuhenyouyu| | 2015-9-6 20:53 | 只看该作者
Simon21ic 发表于 2015-9-6 20:20
static函数会占用RAM?

每个函数的局部变量

使用特权

评论回复
8
Simon21ic|  楼主 | 2015-9-7 02:35 | 只看该作者
wuhenyouyu 发表于 2015-9-6 20:53
每个函数的局部变量

你的意思是函数如果是static的,那么函数用到的局部变量也都是static的?

使用特权

评论回复
9
wuhenyouyu| | 2015-9-7 09:05 | 只看该作者
Simon21ic 发表于 2015-9-7 02:35
你的意思是函数如果是static的,那么函数用到的局部变量也都是static的?

我的意思是函数的局部变量是static的,和函数是不是static没有关系,看了下PT协程,要想实现上下文切换,要保留的局部变量要么定义为static的,要么字节写一个上下文切换的结构体。

使用特权

评论回复
10
wuhenyouyu| | 2015-9-7 09:07 | 只看该作者
yyy71cj 发表于 2015-9-7 08:42
静态占有是无可避免的,除非它根本不存在@wuhenyouyu

明白了,要想实现一些上下文切换,一些开销是必须的。

使用特权

评论回复
11
Simon21ic|  楼主 | 2015-9-7 09:07 | 只看该作者
本帖最后由 Simon21ic 于 2015-9-7 09:08 编辑
wuhenyouyu 发表于 2015-9-7 09:05
我的意思是函数的局部变量是static的,和函数是不是static没有关系,看了下PT协程,要想实现上下文切换, ...

正好面向对象,使用对象的实例的指针不过不是都需要static,我就没用到

使用特权

评论回复
12
wuhenyouyu| | 2015-9-7 09:13 | 只看该作者
Simon21ic 发表于 2015-9-7 09:07
正好面向对象,使用对象的实例的指针不过不是都需要static,我就没用到

我明白了,毕竟要保留的变量非常少,完全可以用全部的。

使用特权

评论回复
13
逍遥派掌门| | 2015-9-7 22:24 | 只看该作者
软件构架和操作系统是两个概念吧?

使用特权

评论回复
14
Simon21ic|  楼主 | 2015-9-8 10:19 | 只看该作者
本帖最后由 Simon21ic 于 2015-9-8 10:44 编辑
逍遥派掌门 发表于 2015-9-7 22:24
软件构架和操作系统是两个概念吧?

愿闻其详,区别在哪里?

操作系统,应该就是由内核和外部组件组成的吧,裸编程也可以实现内核(一般是协作式的内核),也可以实现外部的各种组件。
我不明白操作系统里,实现了哪些东西,在裸编程上无法实现的?

虽然并不是所有裸编的系统都实现这些,但是,对于能够实现这些的裸编系统,是不是就不应该叫裸编了,而是操作系统了?

使用特权

评论回复
15
hunyuanqi| | 2015-9-8 10:44 | 只看该作者
当然是两个概念。

基于操作系统的编程是基于平台的编程,操作系统是一个独立的软件模块,是一个中间件,基于操作系统的编程就是基于一个中间件的编程,在中间件之上通过调用中间件的API函数编应用层程序,层次分明。

裸机编程是不会区分中间件和应用层的,是应用层和中间件的混而为一,在应用层的内部有分布式的隐含的事件处理和任务调度。

使用特权

评论回复
16
hunyuanqi| | 2015-9-8 10:47 | 只看该作者
对于复杂的系统,当然要上嵌入式操作系统。
对于简单的系统,裸机编程就足够了。

对于不大不小的系统,要用具有软件架构的裸机编程。

使用特权

评论回复
17
Simon21ic|  楼主 | 2015-9-8 11:43 | 只看该作者
hunyuanqi 发表于 2015-9-8 10:44
当然是两个概念。

基于操作系统的编程是基于平台的编程,操作系统是一个独立的软件模块,是一个中间件,基 ...

不错,那我更加确信我的构架是属于操作系统了

使用特权

评论回复
18
逍遥派掌门| | 2015-9-10 18:03 | 只看该作者
Simon21ic 发表于 2015-9-8 10:19
愿闻其详,区别在哪里?

操作系统,应该就是由内核和外部组件组成的吧,裸编程也可以实现内核(一般是协 ...

感觉在理解上有不同。

软件的构架,应该是: 业务逻辑流程 + 操作系统(或者是裸跑什么的)。
是涵盖范围很广的东西。

操作系统只是运行在软件构架里的一个组成部分。同时,软件构架可以随便更换操作系统。

使用特权

评论回复
19
Simon21ic|  楼主 | 2015-9-10 20:24 | 只看该作者
逍遥派掌门 发表于 2015-9-10 18:03
感觉在理解上有不同。

软件的构架,应该是: 业务逻辑流程 + 操作系统(或者是裸跑什么的)。

我知道软件设计用,表示层、业务逻辑层、和数据访问层。
嵌入式里,业务逻辑应该就是应用的核心逻辑,下面可以是各个驱动,操作系统,协议栈等,而这些就是我做的东西。
我现在已经基本理解自己做的东西是什么了,我说的构架,其实只是这个操作系统的构架。架构或者构架,我不明白中文意义上有什么区别,高考语文勉强及格,所以就只能进同济了。

诶,不过我一向强调实用主义,自己用了爽就行了,没有必要去计较这个是什么了,哈哈。

使用特权

评论回复
20
Simon21ic|  楼主 | 2015-9-12 17:28 | 只看该作者
看了一下傻孩子的新书,确实可以理清很多概念。
操作系统和裸机的区别在于对任务的调度方式,操作系统使用自动调度,在运行时,根据运行参数和运行情况来决定调度哪个任务
裸机的多任务,一般是协作式调度,也就是手动调度,由代码决定调度哪个任务。

之前让我觉得迷惑的是因为我的系统里,其实兼具这2种调度方式:
1. 事件队列里的事件引起的任务调度,就是系统自动调度的,运行时决定的
2. 不经过事件队列的事件,引发的任务调度,就是合作式调度,代码就决定了调度哪个任务

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

266

主题

2597

帖子

104

粉丝