- 主题:哪些特性限制了kernel不是实时操作系统?
你先举几个实时操作系统的feature上来,证明你知道什么是实时操作系统。
【 在 wjhtingerx (ca6140) 的大作中提到: 】
: 能具体举几个例子吗?
--
FROM 182.92.253.*
比如说,一个任务条件满足后,会立即启动任务切换,而且切换时间是严格限制的。
【 在 weign 的大作中提到: 】
: 你先举几个实时操作系统的feature上来,证明你知道什么是实时操作系统。
:
:
--
FROM 106.3.192.*
要做成实时操作系统,需要对核心服务、重要资源的使用进行设计上、实际运行验证,尽量少用磁盘IO或其他时间不可控的操作,保证特定进程能够几乎百分之百地在指定时间内完成对事件的响应动作。
普通linux只是根据优先级进行调度,只是try the best,至于能不能在规定时间里完成响应,就不管了。所以普通linux不是实时操作系统
【 在 wjhtingerx 的大作中提到: 】
: 能具体举几个例子吗?
:
--
FROM 202.120.235.*
学习了
【 在 lambdago 的大作中提到: 】
: 1 内核不可抢占,导致用户态程序的响应时间不可确定,这也是preempt-RT做的最大工作。
:
: 2 内核少量关键区还是用的spin lock,这也是不可抢占的,us级别左右。
:
: 3 存在优先级反转,即高优先级由于资源不满足(被低优先级把持)也无法运行。
:
: 4
: ..................
发自「今日水木 on iPhone 8」
--
FROM 123.147.250.*
你可以去代码里搜索preempt_disable
比如spinlock检查时就需要关掉抢占。
【 在 wjhtingerx 的大作中提到: 】
: 我就想知道到底哪些代码不能抢占?哪种场景
--
FROM 221.222.187.*
1 内核不可抢占,导致用户态程序的响应时间不可确定,这也是preempt-RT做的最大工作。
kernel是抢占的,SHCED_RR和SCHED_FIFO都是高优先级可以抢占低优先级。
2 内核少量关键区还是用的spin lock,这也是不可抢占的,us级别左右。
在单核cpu中,spin lock有效吗?
3 存在优先级反转,即高优先级由于资源不满足(被低优先级把持)也无法运行。
其他适时操作系统怎么处理优先级反转的?
4 Linux系统是多任务系统,任务队列、优先级和上下文切换都会带来不可预期的调度时间。
其他适时操作系统都是多任务啊。
5 Linux内核硬中断和部分内核线程有最高优先级,进程调度时,可能会抢占低优先级的实时线程。
6 现代计算机的系统结构也或多或少影响了其不确定性,如多级存储结构,cache到内存的数据存在可调度队列,以最大内存带宽的并行性;CPU的乱序执行;PCI总线的延迟变化等。
【 在 lambdago 的大作中提到: 】
: 1 内核不可抢占,导致用户态程序的响应时间不可确定,这也是preempt-RT做的最大工作。
: 2 内核少量关键区还是用的spin lock,这也是不可抢占的,us级别左右。
: 3 存在优先级反转,即高优先级由于资源不满足(被低优先级把持)也无法运行。
: ...................
--
FROM 222.131.245.*
2 内核少量关键区还是用的spin lock,这也是不可抢占的,us级别左右。
在单核cpu中,spin lock有效吗?
单核CPU上spin lock只是关闭了内核抢占。我感觉只要内核能任何状态下都支持抢占,应该就能作为实时操作系统,preempt-RT对spin lock做了很多修改。
【 在 wjhtingerx 的大作中提到: 】
: 1 内核不可抢占,导致用户态程序的响应时间不可确定,这也是preempt-RT做的最大工作。
: kernel是抢占的,SHCED_RR和SCHED_FIFO都是高优先级可以抢占低优先级。
: 2 内核少量关键区还是用的spin lock,这也是不可抢占的,us级别左右。
: ...................
--
FROM 218.30.116.*
可以定制一下,多核处理器拿出几个特定的核不干别的,专门来处理高优先级任务,这个稍微改一下就可以。
【 在 wjhtingerx () 的大作中提到: 】
: 发信人: wjhtingerx (ca6140), 信区: KernelTech
: 标 题: 哪些特性限制了kernel不是实时操作系统?
: 发信站: 水木社区 (Thu Mar 18 10:55:33 2021), 转信
:
--
FROM 113.58.212.*
这事在用户态都能做,但是不解决问题
实时系统需要实时优化过的系统服务。
只要某个服务不够实时,被低优先级任务占用,那实时核的核还是要等。
【 在 beansoflinux 的大作中提到: 】
: 可以定制一下,多核处理器拿出几个特定的核不干别的,专门来处理高优先级任务,这个稍微改一下就可以。
: --
: 发自xsmth (iOS版)
--
FROM 155.64.23.*
所有的都要绑定一下。做实时业务的核不会被打扰的。那些不是业务的东西不管是啥也要绑定到不做业务的核上,包括各种类型中断,后半段之类的。一般来说比如8个核你可以用7个做业务,剩下一个做控制(比如跑个网页命令行之类的控制你的业务)。
此外做业务的核内存管理也最好自己弄一下,如果不愿意弄,那就一次分大点,静态分配,分完就别放回去。这样基本就可以了。
【 在 xiaoju () 的大作中提到: 】
: 这事在用户态都能做,但是不解决问题
:
: 实时系统需要实时优化过的系统服务。
:
--
FROM 113.58.18.*