Amp

漫谈Huawei LiteOS五大内核模块

我只是一个虾纸丫 提交于 2020-08-16 01:47:15
【摘要】 Huawei LiteOS是华为面向IoT领域,构建的“统一物联网操作系统和中间件软件平台”,以轻量级(内核小于10k)、低功耗(1节5号电池最多可以工作5年),快速启动,互联互通,安全等关键能力,为开发者提供“一站式”完整软件平台,有效降低开发门槛、缩短开发周期。下面对LiteOS基础内核的 任务管理、内存管理、中断管理、信号量、互斥锁 五大模块进行简单介绍。 LiteOS内核的任务管理 基本概念和功能 任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、使用内存空间等系统资源,并独立于其它任务运行。 Huawei LiteOS是一个支持多任务的操作系统,一个任务就表示一个线程,任务之间可以进行切换和通信。LiteOS的任务管理模块提供任务创建、删除、延时、挂起和恢复、更改任务优先级、锁定任务调度和解锁任务调度、根据任务控制块查询任务 ID、根据 ID 查询任务控制块信息等功能。 因为LiteOS内核是抢占式调度内核,所以高优先级的任务可以打断低优先级任务,低优先级任务必须在高优先级任务阻塞或结束后才能得到调度,同优先级任务会进行时间片轮转调度。优先级表示任务执行的优先顺序,决定了在发生任务切换时即将要执行的任务。 LiteOS中的任务一共有32个优先级 (0-31),最高优先级为 0,最低优先级为31。 任务控制块TCB 每一个任务都含有一个任务控制块(TCB

TCPING脚本

谁都会走 提交于 2020-08-16 01:24:19
#!/bin/sh # # tcpping: test response times using TCP SYN packets # URL: https://github.com/deajan/tcpping # Former URL: http://www.vdberg.org/~richard/tcpping.html # # uses recent versions of traceroute supporting TCP sessions # # (c) 2002-2019 Richard van den Berg <richard@vdberg.org> under the GPL # http://www.gnu.org/copyleft/gpl.html # Orsiris de Jong <ozy@netpower.fr> # # 2002/12/20 v1.0 initial version # 2003/01/25 v1.1 added -c and -r options # now accepting all other tcptraceroute options # 2003/01/30 v1.2 removed double quotes around backquotes # 2003/03/25 v1.3 added -x option,

迅为IMX6ULL开发环境搭建详解-搭建SSH服务

淺唱寂寞╮ 提交于 2020-08-15 21:52:11
基于迅为-IMX6ULL开发板 不论是进行 SDK 程序开发还是进行 Linux 系统开发,我们都需要先搭建好开发环境,如果我们有学过 单片机 (51、 STM32 等)开发我们需要在 windows 下安装 MDK、串口调试助手这些工具,这些就是单片机的开发环境。同样我们进行 i.MX6ULL 的开发也需要安装相应的一些软件,安装的这些软件就是我们所说的开发环境。开发环境分为 Ubuntu 和 Windows,我们使用 Windows 进行代码的编写,查看原理图、芯片手册等资料,使用串口调试工具查看发开板的串口输出灯功能,我们使用 Ubuntu 主要是完成代码的编译(安装交叉编译器)。所以本章我们分别在 Ubuntu 和 Windows 下搭建开发需要的环境。 1 4.1 搭建 SSH 服务 服务 开发的过程中我们会经常在 Windows 和 Ubuntu 系统之间进行文件的传输,比如我们在Windows 下编辑好代码,然后把代码放到 Ubuntu 系统下编译,生成最终镜像,然后在把镜像传回 Windows 下,进项烧写。为了实现 Windows 和 Ubuntu 直接文件的互传,我们需要在 Ubuntu 上安装 SSH 服务,在前面 Ubuntu的章节我们讲过 Ubuntu 下通过“apt-get install”命令安装软件,首先我们打开终端,在终端输入“sudo apt

拥有20万辆商用车的车联网平台究竟长什么样?

走远了吗. 提交于 2020-08-15 16:33:33
云妹导读: “堵车真耽误事,今天还要把一车的货物送到仓库,看来剩下的几个小时都不能休息了。”服务区里,老张一边和同行聊着天,一边大口地吃着方便面。来不及享用一顿正餐,也来不及好好休息,很快他就又要匆匆回到卡车里继续赶路。 作为一名货运卡车司机,老张的经历并不是个例。货车司机常常住在车上风餐露宿,一天开十几个小时的车不说,吃饭从来就不会有一个定时,为了赶路一天吃一两顿饭很正常。疲劳驾驶带来的的风险十分巨大,加上因货车质量体积大,一旦出事故都不会是小事故。如何有效的保障货车司机的生命安全,这恰恰也是我们非常关心和关注的问题。 而对于货车的雇主——商用车队而言,对车辆的管控也是一大难题。在路上车辆的运行情况、司机的安全驾驶情况,公司的管理者往往都不是很清楚。除了容易引起事故外,部分司机的不良驾驶行为也会导致货车雇主整体运营成本的增加。 01 如何解决商用车队的管控难题? 京东是全球唯一拥有中小件、大件、冷链、B2B、跨境和众包(达达)六大物流网络的企业,京东物流大件和中小件网络已实现大陆行政区县100%覆盖,自营配送服务覆盖了全国99%的人口,90%以上的自营订单可以在24小时内送达。 为了将这些仓库中的货物快速送到客户手中,京东在全国拥有20多万辆车,将亿级数量的包裹运输到全国各地,货运能力之大超乎想象。那么,京东是如何管控数量庞大的司机、车辆、货物呢? 京东物流车联网的最强支撑—

Spring 数据库接口多实现类,根据数据库类型自动匹配对应的实体

扶醉桌前 提交于 2020-08-15 14:39:04
背景 常用的数据库有mysql,oracle,sql server还有非关系型数据库Redis等,如果希望一套框架能在不同的数据库平台上都能正常运行,而且希望不用做多大的改动. 设计思路 可以将数据库操作抽象成接口,又具体的实现类去完成数据库操作,对用不同的数据库调用不同的实现类,为了兼容mybatis框架,我的设计如下。在传统的框架基础上多加一层daoService,只用于对数据库操作。 后面实现需要知道的知识 1 Autowired注解:最常用的注解之一,该注解根据type注入,如果一个类有多个实现时,将报错; 2 Qualifier注解:与Autowired配合使用,当出现多个实现时,使用该注解指定具体实现类, 指定的实现类的BeanDifition的AutowireCandidate必须为true,否则会报错,找不到实现类,当然该属性默认是true,只是在我们这个系统中,将改变这个属性 2-1 在实际使用时,发现这样会有bug,列:如果db_type=mysql ,@Qualifier("xmlUserService")时,由于指定的实例不存在,系统启动时就会报错,对拦截器重新修改为设置Primary属性,当系统中用户没有指定时,我们就将与db_type相等的实现类的Primary设为 3 Primary注解:当有多个实现时,标记有该注解的实现类为主要类

助力中小企业数字化转型,华为云做了哪些努力?

风流意气都作罢 提交于 2020-08-15 14:00:16
企业上云能够助力传统行业降本增效,推动业务不断创新。受疫情影响,远程办公迎来行业发展的春天,几乎成为所有企业的刚需产品,同时也加速了企业数字化转型进程。 根据IDC《2018中国企业数字化发展报告》显示,近几年我国数字经济占GDP比重逐年增加,2018年占GDP总量超过三分之一,达到34.8%。IDC预测,到2021年,全球至少50%的GDP将以数字化的方式实现。企业正在通过数字化成为“数字化原生企业”,其竞争优势进一步加强。 可以说,企业上云已是大势所趋,尤其在疫情之下,云服务带给企业的高效协同、快速响应等优势进一步凸显。因此,2020年,将是企业上云的关键之年。 为了助力企业加速上云,华为云服务特惠来袭,云服务器低至99元/年,基础产品4折起,企业应用低至1.2折,成功推荐好友购买华为云,最高返利34%,新用户注册即领1000元上云礼包。【 传送门 】 同时,为了满足不同企业用户的需求,本次活动共推出三款云服务器,包括云耀云服务器、C6s云服务器和境外云服务器。 云耀云服务器,能够提供快速应用部署和简易的管理能力,具有高性价比、易开通、易搭建、易管理的特点,适用于网站搭建、开发环境等中低负载应用场景; C6s云服务器,搭载第二代英特尔?至强?可扩展处理器,多项技术优化,配套华为自研25GE智能高速网卡,提供稳定的计算和网络能力,适用于对计算和网络性能和稳定性要求较高的场景;

Linux下Keepalived安装与配置

痴心易碎 提交于 2020-08-15 11:27:02
简介 负载平衡是一种在真实服务器集群中分配IP流量的方法,可提供一个或多个高度可用的虚拟服务。在设计负载均衡拓扑时,重要的是要考虑负载均衡器本身的可用性以及它背后的真实服务器。用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层、第4层和第7层交换机的功能。 Keepalived为负载平衡和高可用性提供了框架。负载平衡框架依赖于众所周知且广泛使用的Linux虚拟服务器(IPVS)内核模块,该模块提供第4层负载平衡。Keepalived实现了一组健康检查器,以根据其健康动态地自适应地维护和管理负载平衡的服务器池。虚拟冗余路由协议(VRRP)实现高可用性。VRRP是路由器故障转移的基础砖块。此外,keepalived实现了一组挂钩到VRRP有限状态机,提供低级别和高速协议交互。每个Keepalived框架可以独立使用或一起使用,以提供弹性基础设施。 在这种情况下,负载平衡器也可以被称为 导向器 或 LVS路由器 。 简而言之,Keepalived提供了两个主要功能: 健康检查LVS系统 实施VRRPv2堆栈以处理负载均衡器故障转移 Keepalived使用四个Linux内核组件: LVS框架:使用getsockopt和setsockopt调用来获取和设置套接字上的选项。 Netfilter框架:支持NAT和伪装的IPVS代码。 Netlink接口

【融职教育】Web前端学习 第5章 node基础教程3 npm常用命令

…衆ロ難τιáo~ 提交于 2020-08-15 10:48:05
一、npm安装第三方模块 npm有两种方式安装第三方模块:本地安装和全局安装,使用哪种安装方式,取决于我们用npm模块来做什么。 如果模块作为项目的依赖,需要被引入到指定项目当中,需要本地安装。 如果需要模块提供某些命令工具,则需要全局安装。 稍后我们就来样式两种安装的区别。 本地安装 我们先打开windows命令行工具,进入到需要安装第三方模块的目录,例如D:/npmtest目录,然后执行下面命令 npm install query 安装完成之后,npm会在D:/npmtest目录下创建一个node_modules的目录,然后将npm模块下载到这个目录之下。上面的例子我们安装的是jQuery,所以打开node_modules会看到一个jQuery的目录。 关于第三方模块如何在node项目中使用,我们下一节会讲解。 全局安装 某些第三方模块为我们提供了一些功能需要全局安装才可以使用,例如 http-server ,他可以为我们提供一个创建静态文件服务器的功能。 现在我们就来下载这个模块,全局安装需要在命令中添加-g,示例代码如下所示: npm install -g http-server 下载完成之后,http-server模块不会像本地安装那样下载到当前目录下,而是会下载到系统目录中,win10系统下载目录如下所示: C:\Users\Administrator\AppData

【百人团试用】华为云试用活动征集,万元云资源免费拿

核能气质少年 提交于 2020-08-15 10:31:21
华为云致力于提供 稳定可靠、安全可信、可持续创新 的云服务,通过将公司30多年在ICT基础设施领域的技术积累和产品解决方案开放给客户 ,能够为 全栈全场景AI战略提供强大的算力平台和更易用的开发平台。 根据Gartner发布最新《Market Share: IT Services, Worldwide 2019》研究报告,华为云全球IaaS市场排名上升至第六,其增速高达222%,中国市场排名前三。短短几年,华为云已经赢得超过300万+企业用户和开发者的信赖。 为了持续提升用户的使用体验, 现参加华为云免费试用活动,用户仅需撰写试用报告,即可免费获得1年的华为云主机 。赶快【 点击报名 】参加华为云免费试用活动吧!( 记得添加微信小助手,确认活动资格 ) 试用细则 活动时间 : 2020年6月9日—6月30日 报名资格 :凡是从开源中国 活动页面 注册的华为云新用户,均可报名本次“0”元试用活动; 试用产品 :本次提供的试用产品为 华为云1核2G云耀云服务器 ,活动价88元/年,现可“0”元申请; 押金说明 :申请用户在完成 注册+认证 后,需要先由个人支付此次试用产品的购买费用,待提交试用报告后,由开源中国官方人员返还试用押金; 报告说明 :报告需要在 20个工作 日内提交,可以是自己的 试用体验 或试用过程中的 优化建议 ,优秀报告提交者,一经官方确认,将额外获得 价值420元

C++ 九阴真经之线程池

会有一股神秘感。 提交于 2020-08-15 10:07:22
线程池的作用: 1、 避免了在处理短时间任务时创建与销毁线程的代价; 2、在大批量并发任务中,可以更合理的使用系统资源,进行削峰平谷,保证系统运行的稳定性; 基于C++11标准构建线程池,具有以下优势; 1、任务无需继承接口 2、支持 lambada表达式 3、支持全局函数、静态成员函数; 4、使用bind支持成员函数; class ThreadObject : public QueueObject { public: using QueueObject::QueueObject; ~ThreadObject() { Stop(); for (std::thread& thread : m_pThreadPool) { if (thread.joinable()) thread.join(); // 等待任务结束, 前提:线程一定会执行完 } } int ThreadCount() { return m_pThreadPool.size(); } //空闲线程数量 int IdlCount() { return m_idlThrNum; } protected: //空闲线程数量 std::atomic<int> m_idlThrNum ; std::vector<std::thread> m_pThreadPool; }; //线程池 class CThreadPool :