转载自 https://blog.csdn.net/zhoutaopower/article/details/107180016 创建完毕任务,启动调度器,任务控制,系统 SysTick 来临后判断是否需上下文切换: 如果没有其他任务执行的情况下,FreeRTOS 的 Idle 任务将被调度投入运行: 在启动调度器的时候,Idle 任务就被创建了,优先级为最低 0: void vTaskStartScheduler( void ) { ..................... xReturn…
1. 简介: 在 FreeRTOS 中没有线程和进程的区别,只有一个被翻译成任务的程序,相当于进程的概念,拥有独立的栈空间. 对于实时性,可以分为 软实时.硬实时:桌面电脑的输入处理可以看做是软实时,当键盘按下在某个时间内没有做出相应,只是做出提示,提示超时,只会给人一种反应慢的印象,不能说不能用.硬实时则是像汽车上的安全气囊,必须在特定时间内完成,一旦失败,就算是不能使用的标志. FreeRTOS 内核支持优先级调度算法,CPU 总是让处于就绪态和优先级高的任务先运行. FreeRTOS 内核…
1.<!-- 数据源1 --> 2. <bean id="dataSource" 3. class="org.apache.commons.dbcp.BasicDataSource" 4. destroy-method="close"> 5. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>…
(1)命令ls——列出文件 ls -la 给出当前目录下所有文件的一个长列表,包括以句点开头的“隐藏”文件 ls a* 列出当前目录下以字母a开头的所有文件 ls -l *.doc 给出当前目录下以.doc结尾的所有文件 (2)命令cp——复制文件 cp afile afile.bak 把文件复制为新文件afile.bak cp afile /home/bible/ 把文件afile从当前目录复制到/home/bible/目录下 cp * /tmp 把当前目录下的所有未隐藏文件复制到/tmp/目…
9.虚拟存储器 为了更加有效地管理存储器且少出错,现代系统提供了对主存的抽象概念,叫做虚拟存储器(VM). 虚拟存储器是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完美交互. 为每个进程提供一个大的,一致的和 私有的地址空间. 提供了3个重要能力. 将主存看成磁盘地址空间的高速缓存. 只保留了活动区域,并根据需要在磁盘和主存间来回传送数据,高效使用主存. 为每个进程提供一致的地址空间 简化存储器管理 保护了每个进程的地址空间不被其他进程破坏. 程序员为什么要理解它? 虚拟存储器是中心的.…
Win7的系统下安装CentOS,实现双系统切换使用的目的,希望对大家有帮助. 注意: 1.由于涉及到对硬盘操作,请妥善备份数据,避免损失. 2.我的步骤是绝对正确和缺一不可的,大家一定要按照我的操作来进行. 我先把需要的软件介绍一下: * EasyBCD:为了添加和修改启动项 * DiskGenius:分区助手,对硬盘进行操作 * WinGrub:只是为了看一下分区编号,其实很鸡肋,没有也可以,需要一个个地实验 1.首先,我准备了一个320G硬盘的操作系统,并分出110G以上的空闲区域(100…
窗口处理 2.1 窗口简介 2.2.1 创建普通窗口(CreateWindow.CreateWindowEx) 2.2.2 关闭窗口(CloseWindow) 2.2.3 销毁窗口(DestroyWindow) 2.3 窗口之间的关系 2.3.1 父子关系(SetParent.GetParent.IsChild) 2.3.2 遍历窗口(EnumWindow.EnumWindowProc.EnumChildWindows.EnumChildProc) 2.3.3 获取指定的子窗口(ChildWin…
1.<!-- 数据源1 --> 2. <bean id="dataSource" 3. class="org.apache.commons.dbcp.BasicDataSource" 4. destroy-method="close"> 5. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>…
博主:handsomecui,希望路过的各位大佬留下你们宝贵的意见,在这里祝大家冬至快乐. 缘由: 初探缘由,在业务层想要通过(当前线程的栈)来获取到控制层的类名,然后打日志,可是发现并不能通过当前线程获取到控制层的类,两者并没有在一个线程内,进而引发了我对这一问题的思考. 解决步骤: 一. 我先打印出了当前运行的所有线程的名字以及栈的运行情况: Thread list size == 21 线程名:main java.net.PlainSocketImpl:socketAccept java.…
<unix网络编程>一书中的代码并不是能直接运行,有时候需要结合各方面的知识来解决,大家在这本书的时候,一定要把代码都跑通,不难你会错过很多学习的机会! 1.问题描述 本人在阅读<UNIX网络编程>中,发现运行书中服务器端程序时,返回bind error:Address already in use! 服务器端代码如下: #include "unp.h" #include <time.h> int main(int argc, char **argv…
http://blog.csdn.NET/jeff_fangji/article/details/41786205 本文讲述了Tomcat的常见线程的功能.名称.线程池和配置等信息,其中源码来自于Tomcat 6.0.18. Work线程 功能 HTTP请求的处理线程(非NIO).当有新的http请求进来后,则会从线程池中获得一个线程Work对象,调用Work.assign函数,将新到的http请求分配给这个线程. 名称 名称是http-[IpAddr]-[Port]-[Number],如htt…
前言 即使这是一本小册,但基于"不提笔不读书"的理念,仍然有必要总结一下.此小册对于那些"硬杠 Netty 源码 却不曾在千万级生产环境上使用实操"的用户非常有用.当然,对那些没有 Netty 编程经验的人来说,更为有用. 放个小册地址:[Netty 入门与实战:仿写微信 IM 即时通讯系统](https://juejin.im/book/5b4bc28bf265da0f60130116) 再次强烈推荐,一碗黄焖鸡/半杯 Luckin coffee/一包炫赫门 的价…
挺全面的一篇文章,没事可以看看. (1)命令ls——列出文件  ls -la 给出当前目录下所有文件的一个长列表,包括以句点开头的“隐藏”文件  ls a* 列出当前目录下以字母a开头的所有文件  ls -l *.doc 给出当前目录下以.doc结尾的所有文件 (2)命令cp——复制文件  cp afile afile.bak 把文件复制为新文件afile.bak  cp afile /home/bible/ 把文件afile从当前目录复制到/home/bible/目录下  cp * /tmp…
第1章 计算机系统漫游 (已看) 1.1 信息就是位+上下文 1.2 程序被其他程序翻译成不同的格式 1.3 了解编译系统如何工作是大有益处的 1.4 处理器读并解释存储在内存中的指令 1.4.1 系统的硬件组成 1.4.2 运行hello程序 1.5 高速缓存至关重要 1.6 存储设备形成层次结构 1.7 操作系统管理硬件 1.7.1 进程 1.7.2 线程 1.7.3 虚拟内存 1.7.4 文件 1.8 系统之间利用网络通信 1.9 重要主题 1.9.1 Amdahl定律 1.9.2 并发和…
发行版v3.0的文档可在http://esp-idf.readthedocs.io/en/v3.0/上找到. 这是自发布v3.0-rc1以来的更改列表. 如果从以前的稳定版本V2.1进行升级,请检查v3.0-rc1发行说明以了解适用的更改. 打破变化 发行版v3.0在很大程度上与为ESP-IDF v3.0-rc1编写的应用程序兼容.但是一些破坏行为和重要的API更改已经引入: 一些混合了返回值和错误代码的I2S API已被弃用.新的API已被引入以取代它们. i2s_write应该用来代替i2s…
第九章 虚拟存储器 主要作用: 将主存看作是一个存储在磁盘上的地址空间的高速缓存,在主存中只保护活动的区域,并根据需要在磁盘和主存之间来回传送数据: 为每个进程提供了一致的地址空间,从而简化了存储器管理: 保护了每个进程的地址空间不被其它进程破坏 9.1 物理和虚拟寻址 1.物理地址 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组,每字节都有一个唯一的物理地址PA. 根据物理地址寻址的是物理寻址. 2.虚拟地址 虚拟存储器被组织为一个由存放在磁盘上的N个连续的字节大小的单元组成…
功能:rm 命令,删除一个目录中的一个或多个文件或目录(文件夹). 它也可以将某个目录及其下的所有文件及子目录均删除. 对于链接文件,只是删除了链接,原有文件均保持不变. 文件一旦被删除,它不能被恢复. 提醒的是:使用这个rm -rf的时候一定要格外小心,linux没有回收站的,一旦删除就永远找不回来了.尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf).所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑. 语法:r…
本文转载自网络 1.1 shell家族 shell:命令解释器,根据输入的命令执行相应命令. 察看当前系统下有哪些shell: cat /etc/shells 察看当前系统正在使用的shell echo $SHELL 常见shell: /bin/sh (已经被 /bin/bash 所取代) /bin/bash (就是 Linux 默认的 shell) /bin/ksh (Kornshell 由 AT&T Bell lab. 发展出来的,兼容于 bash) /bin/tcsh (整合 C Shel…
来源:https://linux.cn/article-9394-1.html OpenSSH 是 SSH 协议的一个实现.一般通过 scp 或 sftp 用于远程登录.备份.远程文件传输等功能.SSH能够完美保障两个网络或系统间数据传输的保密性和完整性.尽管如此,它最大的优势是使用公匙加密来进行服务器验证.时不时会出现关于 OpenSSH 零日漏洞的传言.本文将描述如何设置你的 Linux 或类 Unix 系统以提高 sshd 的安全性. OpenSSH 默认设置 TCP 端口 - 22 Op…
1.参数 -XX:+PrintGC 只要遇到 GC 就会打印日志 -XX:+UseSerialGC 配置串行回收器 -XX:+PrintGCDetails 查看详细信息,包括各个区的情况 -XX:+PrintCommandLineFlags 可以将隐式或显式传给虚拟机的参数输出 -Xms4m 设置堆初始大小为 4m -Xmx20m 设置堆最大为 20m 2.备注 以 -XX:+PrintGC 为例子 1.-XX 表示对系统级别的 ( jvm ) 配置,比如日志信息.使用什么样的垃圾回收器 2.非…
1.<!-- 数据源1 --> 2. <bean id="dataSource" 3. class="org.apache.commons.dbcp.BasicDataSource" 4. destroy-method="close"> 5. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>…
1. FreeRTOS 任务不允许以任何方式从实现函数中返回——他们绝不能有一条“return”语句,也不可能执行到函数的末尾.如果一个函数不需要,可以将其删除,如在任务中使用函数vTaskDelete(NULL),将当前任务删除. 2. 在启动任务调度器(osKernelStart() )前,最好只创建一个起始任务,在启动任务调度器(osKernelStart() )后,在起始任务中创建其他的任务,此时建议关闭中断.如 taskENTER_CRITICAL() ,...<创建任务>... t…
在FreeRTOS中,线程的术语又可以被称之为任务,或许这样更加合适,本文将介绍任务的创建/删除,任务参数的使用,以及任务优先级: 1 软实时和硬实时 硬实时系统的任务运行正确性与响应时限是紧密相关的,一旦超过时限将导致严重的后果,比如导弹控制系统.高铁自动驾驶系统等,都是需要严格的响应时限的. 软实时系统中,虽然也存在时限指标,但是如果输出响应超过时限,一般不会造成严重后果,比如Windows桌面任务,DVD播放机的视频播放. 大多数嵌入式系统不仅能满足硬实时要求,也能满足软实时要求. 软实时…
转载自 https://blog.csdn.net/zhoutaopower/article/details/107101723 在<FreeRTOS --(7)任务管理之入门篇>中讲过,如果有几个任务同时跑,但是又都不阻塞的话,那么最高优先级的任务将会占领整个 CPU,因为每次都会调度到它,一直处于 Ready 状态,所以呢,调度器每次都要选择优先级最高的任务来让它执行:所以,不管怎么样,任务做完自己该做的事情,就应该进入阻塞状态,等待下次该自己做任务的时候,在占领 CPU,这样既可以让 I…
转载自 https://blog.csdn.net/zhoutaopower/article/details/107019521 任务管理是操作系统中重中之重,不管什么 OS ,任务的调度管理都是核心,FreeRTOS 也是一样:在深入到 FreeRTOS 任务管理的源码之前,鄙人觉得有必要先去从全局的角度进行把握,从全局到局部,从粗线条,到细节,鄙人觉得这样方可更快的熟悉相关的内部原理: 从全局来看的话,可以先梳理 FreeRTOS 关于任务相关的 APIs,支持的 Feature,以及相关的…
转载自 https://blog.csdn.net/zhoutaopower/article/details/107146764 前面有了创建任务.启动调度器.任务控制,接下来便开始分析一个 Tick 到来之后,FreeRTOS 即将有什么行为: 在启动调度器的时候,就已经配置好了 SysTick,它作为 OS 的心跳,每隔一个固定周期来一次 SysTick 中断,来驱动 OS 做事(任务调度): 以 STM32 为例,定义的 configTICK_RATE_HZ 为 1000,由<FreeRT…
转载自 https://blog.csdn.net/zhoutaopower/article/details/107057528 在使用 FreeRTOS 的时候,一般的,先创建若干任务,但此刻任务并没有被调度起来,仅仅是创建了,如果想要真正的跑起来,那么还需要调用让调度器跑起来的函数: vTaskStartScheduler 典型的用法是: xTaskCreate(.."task_1"..); xTaskCreate(.."task_2"..); xTaskCre…
转载自https://blog.csdn.net/zhoutaopower/article/details/107034995 在<FreeRTOS --(7)任务管理之入门篇>文章基本分析了任务相关的轮廓后,我们知道使用什么接口来创建一个任务.怎么去开启调度器.以及根据宏配置,选择调度器的行为:接下来我们深入到 FreeRTOS 任务创建的源码来看看一个任务是怎么被创建的(某大神说过,Read The F**king Source Code ,能用代码解决的,尽量不 BB): 1.描述任务的…
以下基础知识转载自正点原子PDF资料. 前面例子 中创建的任务大部份时间都处于阻塞态.这种状态下所有的任务都不可运行,所以也不能被调度器选中.但处理器总是需要代码来执行——所以至少要有一个任务处于运行态.为了保证这一点,当调用 vTaskStartScheduler()时,调度器会自动创建一个空闲任务.空闲任务是一个非常短小的循环——和最早的示例任务十分相似,总是可以运行.空闲任务拥有最低优先级(优先级 0)以保证其不会妨碍具有更高优先级的应用任务进入运行态——当然,没有任何限制说是不能把应用任…
内核控制的一些功能须要移植层提供,为了方便移植.这些API函数用宏来实现,比方上下文切换.进入和退出临界区.禁止和使能可屏蔽中断.内核控制函数还包含启动和停止调度器.挂起和恢复调度器以及用于低功耗模式的调整系统节拍函数. 1.强制上下文切换宏 taskYIELD:用于强制上下文切换的宏. 在中断服务程序中的等价版本号为portYIELD_FROM_ISR.这也是个宏,事实上现取决于移植层. 用于上下文切换的实际代码由移植层提供.对于Cortex-M3硬件.这个宏会引起PendSV中断. 2.进入…