首页 文章 精选 留言 我的

精选列表

搜索[内核模块],共402篇文章
优秀的个人博客,低调大师

漫谈Huawei LiteOS五大内核模块

【摘要】 Huawei LiteOS是华为面向IoT领域,构建的“统一物联网操作系统和中间件软件平台”,以轻量级(内核小于10k)、低功耗(1节5号电池最多可以工作5年),快速启动,互联互通,安全等关键能力,为开发者提供“一站式”完整软件平台,有效降低开发门槛、缩短开发周期。下面对LiteOS基础内核的 任务管理、内存管理、中断管理、信号量、互斥锁 五大模块进行简单介绍。 LiteOS内核的任务管理 基本概念和功能 任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、使用内存空间等系统资源,并独立于其它任务运行。 Huawei LiteOS是一个支持多任务的操作系统,一个任务就表示一个线程,任务之间可以进行切换和通信。LiteOS的任务管理模块提供任务创建、删除、延时、挂起和恢复、更改任务优先级、锁定任务调度和解锁任务调度、根据任务控制块查询任务 ID、根据 ID 查询任务控制块信息等功能。 因为LiteOS内核是抢占式调度内核,所以高优先级的任务可以打断低优先级任务,低优先级任务必须在高优先级任务阻塞或结束后才能得到调度,同优先级任务会进行时间片轮转调度。优先级表示任务执行的优先顺序,决定了在发生任务切换时即将要执行的任务。LiteOS中的任务一共有32个优先级 (0-31),最高优先级为 0,最低优先级为31。 任务控制块TCB 每一个任务都含有一个任务控制块(TCB)。TCB 包含了任务上下文栈指针(stack pointer)、任务状态(包括就绪、运行、阻塞、退出4种状态)、任务栈大小(任务栈里保存着局部变量、寄存器、函数参数、函数返回地址等)、任务优先级、任务ID、任务名等信息。 TCB相当于每个任务在内核中的身份证,可以反映出每个任务运行情况 。 运作机制 在任务模块初始化时,系统会先申请TCB需要的内存空间。如果任务初始化成功,则系统对TCB内容进行初始化。用户创建任务时,系统会将任务栈进行初始化,预置上下文。此外,系统还会将“任务入口函数”地址放在相应位置。这样在任务第一次启动进入运行态时,将会执行“任务入口函数”。 LiteOS内核的内存管理 主要功能 Huawei LiteOS的内存管理模块管理系统的内存资源,主要包括内存的初始化、分配及释放,是操作系统的核心模块之一。 在系统运行过程中,内存管理模块通过对内存的申请/释放操作,来管理用户和OS对内存的使用, 使内存的利用率和使用效率达到最优,同时最大限度地解决系统的内存碎片问题 。 Huawei LiteOS的内存管理分为动态内存管理和静态内存管理。 动态内存管理 在动态内存池中分配用户指定大小的内存块。 优点: 按需分配 。 缺点:内存池中可能出现碎片。 静态内存管理 在静态内存池中 分配用户初始化时预设(固定)大小的内存块,初始化后块大小不可变更 。 优点:分配和释放效率高,静态内存池中无碎片。 缺点:只能申请到初始化预设大小的内存块,不能按需申请。 LiteOS内核的中断管理 中断的介绍 中断是指出现需要时,CPU暂停执行当前程序,转而执行新程序的过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的事务。此时,CPU暂时中止当前程序的执行转而处理这个事务,这个过程就叫做中断。 为什么需要中断 众多周知,CPU的处理速度比外设的运行速度快很多,外设可以在没有CPU介入的情况下完成一定的工作,但某些情况下需要CPU为其做一定的工作。通过中断机制,在外设不需要CPU介入时,CPU可以执行其它任务,而当外设需要CPU时通过产生中断信号使CPU立即中断当前任务来响应中断请求。 用户通过中断申请,注册中断处理程序,可以指定CPU响应中断请求时所执行的具体操作 。这样可以使CPU避免把大量时间耗费在等待、查询外设状态的操作上,因此将大大提高系统实时性以及执行效率。 相关的硬件 与中断相关的硬件可以划分为三类:设备、中断控制器、CPU本身。 设备:发起中断的源,当设备需要请求CPU时,产生一个中断信号,该信号连接至中断控制器。 中断控制器:中断控制器是 CPU 众多外设中的一个,它一方面接收其它外设中断引脚的输入,另一方面,它会发出中断信号给CPU。可以通过对中断控制器编程实现对中断源的优先级、触发方式、打开和关闭源等设置操作。常用的中断控制器有VIC(Vector Interrupt Controller)和GIC(General Interrupt Controller),在 ARM Cortex-M 系列中使用的中断控制器是NVIC(Nested Vector Interrupt Controller)。 CPU:CPU会响应中断源的请求,中断当前正在执行的任务,转而执行中断处理程序。 主要功能 Huawei LiteOS支持: 中断初始化 中断创建 开/关中断 恢复中断 中断使能 中断屏蔽 LiteOS内核的信号量 基本概念和功能 信号量(Semaphore)是一种实现任务间通信的机制,可以用于任务之间同步或临界资源的互斥访问。 信号量可以被任务获取或者申请,不同的信号量通过信号量索引号来唯一确定,每个信号量都有一个计数值和任务队列。 通常信号量的计数值表示有效的资源数,即剩下的可被占用的互斥资源数。 当任务申请(Pend)信号量时,如果申请成功,则信号量的计数值递减,如申请失败,则挂起在该信号量的等待任务队列上,一旦有任务释放该信号量,则等待任务队列中的任务被唤醒开始执行。 信号量运作示意图 使用场景 信号量是一种非常灵活的同步方式,可以运用在多种场合中,实现锁、同步、资源计数等功能,也能方便的用于任务与任务,中断与任务的同步中。 任务间互斥 用作互斥时,信号量创建后记数是满的,在需要使用临界资源时,先申请信号量,使其变空,这样其他任务需要使用临界资源时就会因为无法申请到信号量而阻塞,从而保证了临界资源的安全。 任务间同步 用作同步时,信号量在创建后被置为空,任务1申请信号量而阻塞,任务2在某种条件发生后,释放信号量,于是任务1得以进入READY或RUNNING态,从而达到了两个任务间的同步。 资源计数 用作资源计数时,信号量的作用是一个特殊的计数器,可以递增或者递减,但是值永远不能为负值,典型的应用场景是生产者与消费者的场景。 中断与任务的同步 用作中断与任务的同步时,可以在中断未触发时将信号量的值置为0,从而堵塞中断服务处理任务,一旦中断被触发,则唤醒堵塞的中断服务处理任务进行中断处理。 LiteOS内核的互斥锁 基本概念和功能 互斥锁(mutex)又称互斥型信号量,是一种 特殊的二值信号量 ,用于实现对共享资源的独占式处理。互斥锁主要使用在多任务环境下,此时往往存在多个任务竞争同一共享资源的应用场景。另外,Huawei LiteOS通过优先级继承算法,解决了信号量存在的优先级翻转问题。 运作机制 任意时刻互斥锁只有两种状态:开锁或闭锁。 当有任务持有时,互斥锁处于闭锁状态 ,这个任务获得该互斥锁的所有权。 当该任务释放它时,该互斥锁被开锁 ,任务失去该互斥锁的所有权。当一个任务持有互斥锁时,其他任务将不能再对该互斥锁进行开锁或持有,所以其他任务此时访问这个公共资源将会被阻塞,直到互斥锁被持有该锁的任务释放后,其他任务才能重新访问该公共资源。 互斥锁运作示意图 如果大家对LiteOS感兴趣,还可以报名参与我们的Huawei LiteOS设备开发实战营活动 点击关注,第一时间了解华为云新鲜技术~

优秀的个人博客,低调大师

OSCS开源安全周报第10期:Linux openvswitch 内核模块提权漏洞 poc 公开

本周安全态势综述 OSCS 社区共收录安全漏洞37个,公开漏洞值得关注的是 Linux Kernel openvswitch 模块权限提升漏洞(CVE-2022-2639),Apache IoTDB grafana-connector 模块存在未授权漏洞(CVE-2022-38370),Indy-Node 远程代码执行漏洞(CVE-2022-31020),Rancher 存在授权不当漏洞(CVE-2022-31247)和 Apache James 存在 IMAP 指令注入漏洞(CVE-2022-28220)。 针对 NPM 仓库,共监测到 4 次投毒事件,涉及 57 个不同版本的 NPM 组件,投毒组件中绝大多数行为是尝试获取主机敏感信息。 重要安全漏洞列表 Linux Kernel openvswitch 模块权限提升漏洞(CVE-2022-2639) 在 Linux Kernel openvswitch 模块中的 reserve_sfa_size 方法存在整数溢出错误,在给定足够多的 actions 时,可能会导致越界写入访问。攻击者可利用此漏洞获取系统 root 权限。 注意:该漏洞 POC、EXP 均已公开,影响从3.13至5.18以前的linux 内核。 参考链接:https://www.oscs1024.com/hd/MPS-2022-53208 Apache IoTDB grafana-connector 模块存在未授权漏洞(CVE-2022-38370) Apache IoTDB是针对时间序列数据收集、存储与分析一体化的数据管理引擎。 在Apache IoTDB grafana-connector 0.13.0 版本中DatabaseConnectController存在未授权漏洞,攻击者可以未授权访问/query、/search接口,进而通过web服务可能会获取数据库的内部结构。 参考链接:https://www.oscs1024.com/hd/MPS-2022-55568 Indy-Node 远程代码执行漏洞(CVE-2022-31020) Indy-Node 是分布式账本的服务端。 受影响版本 Indy-Node 中的 pool-upgrade 请求处理程序允许未经正确身份验证的攻击者在网络内的节点上远程执行代码。攻击者可利用该漏洞进行远程代码执行。 参考链接:https://www.oscs1024.com/hd/MPS-2022-11050 Rancher 存在授权不当漏洞(CVE-2022-31247) Rancher 是一个 Kubernetes 管理平台。 Rancher 的受影响版本中存在授权不当漏洞,任何有权创建/编辑集群角色模板绑定或项目角色模板绑定的用户都可以利用这个漏洞,在同一集群中的另一个项目中或在不同下游集群中的另一个项目中获得所有者权限。 参考链接:https://www.oscs1024.com/hd/MPS-2022-11287 Apache James 存在 IMAP 指令注入漏洞(CVE-2022-28220) Apache James 是用Java编写的开源SMTP和POP3邮件传输代理和NNTP新闻服务器。 Apache James 的受影响版本容易在中间人攻击的情况下受到 IMAP 指令注入的攻击,中间人攻击者在服务端收到客户端的激活 STARTTLS 和 开启 SSL 之间通过条件竞争进行 IMAP 指令注入,导致泄露邮件内容中的敏感信息。 参考链接:https://www.oscs1024.com/hd/MPS-2022-7272 *查看漏洞详情页,支持免费检测项目中使用了哪些有缺陷的第三方组件 投毒风险监测 OSCS针对 NPM 仓库监测的恶意组件数量如下所示。 本周新发现 57 个不同版本的恶意组件,其中 100%的投毒组件为:获取主机敏感信息(获取了主机的用户名、IP 等敏感信息发送给恶意服务器) 其他资讯 微软和云提供商开始禁止基本身份验证 https://www.darkreading.com/cloud/microsoft-cloud-providers-ban-basic-authentication EvilProxy 将反向代理策略用于网络钓鱼,绕过 2FA https://www.darkreading.com/vulnerabilities-threats/evilproxy-commodifies-reverse-proxy-tactic-phishing-bypassing-2fa 情报订阅 OSCS(开源软件供应链安全社区)通过最快、最全的方式,发布开源项目最新的安全风险动态,包括开源组件安全漏洞、事件等信息。同时提供漏洞、投毒情报的免费订阅服务,社区用户可通过配置飞书、钉钉、企业微信机器人,及时获得一手情报信息推送: https://www.oscs1024.com/?src=osc 具体订阅方式详见: https://www.oscs1024.com/docs/vuln-warning/intro/?src=osc

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册