一,RTX51 Tiny简单介绍    RTX51 Tiny是一种实时操作系统(RTOS),能够用它来建立多个任务(函数)同一时候运行的应用(从宏观上看是同一时候运行的,但从微观上看,还是独立运行的).嵌入式应用系统常常有这样的需求.RTOS能够提供调度.维护.同步等功能. 系列的微控制器.该RTOS最多支持16个任务,基于RTX51 Tiny构建的应用程序没有main( )函数,是从任务0開始运行的.   RTX51 Tiny的程序用标准的C语言构造,由Keil C51 C编译器编译.用户能…
使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只有几千行代码的操作系统,也没所有的代码都看,只是看了其中部分内容.自己还自不量力的尝试着去写过简单的操作系统,最后写着写着就被带到了ucos的设计思路上了,后来干脆就“copy”代码了,虽说对操作系统内核的理解有很大的帮助,但是很是惭愧啊,智力不够,对操作系统内核的设计者更加仰慕,O(∩_∩)O哈哈…
ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了queue机制还要用mbox呢,只要设置queue的msg只有一个不就行了?其实很简单,就是为了节约资源,因为使用queue的话需要专门描述queue的机构体os_q,同时需要分配一段内存用来存放msg,而如果直接使用mbox机制的话,就好多了,节约..... 首先从mbox的创建开始,mbox创建的函…
对于ucos实时操作系统,邵贝贝的那本书已经写得很详细了,我因为之前不深的研究过ucos,所以在这里做一个笔记,写一些个人对该操作系统的理解,仅仅是个人理解,如果有人看到这边随笔有不对的地方,望给我指正.同时,锻炼一下自己组织语言的能力,有时候知道那么个意思,却总也说不出口. ucos内种中有几个人变量比较重要,被贯穿在ucos内核的设计中.这几个变量中有在PCB中的局部变量,也有在整个系统内核设计中的全局变量.下面将分别介绍一下这几个变量. 首先,从OS_PCB中的局部变量讲起,如果去掉OS_…
ucos实时操作系统的任务间通信有好多种,本人主要学习了sem, mutex, queue, messagebox这四种.系统内核代码中,这几种任务间通信机制的实现机制相似,接下来记录一下本人对核心代码的学习心得,供以后回来看看,不过比较遗憾的是没有仔细学习扩展代码的功能实现部分.ucos操作系统的内核代码实现相对简单,但是对理解其他操作系统内核相同功能有帮助. ucos的任务间通信机制主要是基于event实现的,其实理解这个event不用翻译成中文事件,就叫event感觉还更容易接收.下面是操…
ucos操作系统中的queue机制同样使用了event机制来实现,其实和前面的sem,mutex实现类似,所不同的是对sem而言,任务想获得信号量,对mutex而言,任务想获得的是互斥锁.任务间通信的queue机制则是想获得在queue中的消息,通过队列先进先出的形式存放消息.其实queue中存放的是放消息的内存的地址,通过读取地址可以获得消息的内容. queue机制是有一段循环使用的内存来存放增加的消息,然后从这段内存中读取消息的一个过程.有专门的操作系统queue结构(OS_Q)来描述这段内…
想讲一下ucos任务间通信中的mutex,感觉其设计挺巧妙,同sem一样使用的是event机制实现的,代码不每一行都分析,因为讲的没邵贝贝老师清楚,主要讲一下mutex的内核是如何实现的.可以理解互斥锁是设置信号量值为1时候的特殊情况,与之不同的地方是互斥锁为了避免优先级反转采用了优先级继承机制,本文主要讲一下互斥锁的创建,pend和post,对应的函数是OSMutexCreate,OSMutexPend,OSMutexPost,当然讲函数也不会所有的扩展功能都讲,只是讲一下主干部分,下面贴出来…
操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进程创建.撤销.阻塞.唤醒.... 0.2 线程模型 为什么引入线程 线程的组成 线程机制的实现 用户级线程.核心级线程.混合方式 1. 进程的基本概念 1.1 多道程序设计 允许多个程序同时进入内存运行,目的是为了提高CPU系统效率 1.2 并发环境与并发程序 并发环境: 一段时间间隔内,单处理器上…
参考极客时间专栏<趣谈Linux操作系统>学习笔记 核心原理篇:内存管理 趣谈Linux操作系统学习笔记:第二十讲 趣谈Linux操作系统学习笔记:第二十一讲 趣谈Linux操作系统学习笔记:第二十四讲 趣谈Linux操作系统学习笔记:第二十五讲 趣谈Linux操作系统学习笔记:第二十六讲 核心原理篇:文件系统 趣谈Linux操作系统学习笔记:第二十八讲 趣谈Linux操作系统学习笔记:第二十九讲…
在上一部分中,我们了解到操作系统实现多进程图像需要组织.切换.考虑进程之间的影响,组织就是用PCB的队列实现,用到了一些简单的数据结构知识.而本部分重点就是进程之间的切换. 参考资料: 课程:哈工大操作系统(本部分对应 L10 && L11 && L12) 实验:操作系统原理与实践_Linux - 蓝桥云课 (lanqiao.cn) 笔记:操作系统学习导引 · 语雀 (yuque.com) 这一部分比较难,一难在理解,二难在实现,其中L12是最难的,反复看了很多遍.之后需要…
由于第四章线程的介绍没有上传视频,故之后看书来补. 最近开始学习操作系统原理这门课程,特将学习笔记整理成技术博客的形式发表,希望能给大家的操作系统学习带来帮助.同时盼望大家能对文章评论,大家一起多多交流,共同进步! 本篇文章大致内容为: 基本概念(Basic Concept) 调度准则(Scheduling Criteria) 调度算法(Scheduling Algorithm) 实时调度(Real-Time Scheduling) 算法评价(Algorithm Evaluation) 基本概念…
一.lab2物理内存管理介绍 操作系统的一个主要职责是管理硬件资源,并向应用程序提供具有良好抽象的接口来使用这些资源. 而内存作为重要的计算机硬件资源,也必然需要被操作系统统一的管理.最初没有操作系统的情况下,不同的程序通常直接编写物理地址相关的指令.在多道并发程序的运行环境下,这会造成不同程序间由于物理地址的访问冲突,造成数据的相互覆盖,进而出错.崩溃. 现代的操作系统在管理内存时,希望达到两个基本目标:地址保护和地址独立. 地址保护指的是一个程序不能随意的访问另一个程序的空间,而地址独立指的…
操作系统的核心功能就是管理计算机硬件,而CPU就是计算机中最核心的硬件.而通过学习笔记3的简史回顾,操作系统通过多进程图像实现对CPU的管理.所以多进程图像是操作系统的核心图像. 参考资料: 课程:哈工大操作系统(本部分对应 L8 && L9) 实验:操作系统原理与实践_Linux - 蓝桥云课 (lanqiao.cn) 笔记:操作系统学习导引 · 语雀 (yuque.com) 1. 从使用CPU开始直观理解CPU管理 要想管理CPU,就要知道如何使用CPU. CPU的工作原理已经很熟悉:…
从这一部分开始介绍操作系统的设备驱动,操作系统通过文件系统的抽象驱动设备让用户能够使用显示器.键盘等交互工具.并讲解printf和scanf是如何实现敲下键盘将字符显示到屏幕上的. 参考资料: 课程:哈工大操作系统(本部分对应 L26 && L27) 实验:操作系统原理与实践_Linux - 蓝桥云课 (lanqiao.cn) 笔记:先前的参考笔记自此处就没有继续更新了. 这一部分内容整合了前面很多篇笔记的知识,操作系统浓度较高 1. 外设工作原理的主干理解 与 内存管理 的理解过程相似,…
1.前言     近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino.但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么.因此,博主决定加入一个Arduino学习笔记,方便零基础的初学者.初学者可以从基础去了解Arduino,这样才能设计自己的东西,所以博主建议初学者可以参考<ARDUINO程序设计基础>,<Arduino-语法手册>,请点击 传输门 提取码:0923. 注意: 博主建议边学边练,巩固知识 2.什么是Arduino     A…
今天正式开始学习wxPython,基于对类的不熟悉,理解有点生硬,但还是做了些笔记. 1.是什么组成了一个wxpython程序? 一个wxpython程序必须有一个application(wx.App)对象和至少一个frame(wx.Frame)对象.而用于填充frame的则是一系列的wx.Window的子类,wx.Window的子类都可以拥有wx.Control的子类,在上图中,panel就是最常见的wx.Window的子类之一,而wx.StaticText和wx.TextCtrl则是最常见的…
博客原文地址:Claiyre的个人博客 https://claiyre.github.io/ 博客园地址:http://www.cnblogs.com/nuannuan7362/ 如需转载,请在文章开头注明原文地址 前言 作为一名前端er,即便没有用过,想必也听说过很多次Node了.在接触Node前,我对它印象大致有: - 问世不久就迅速风靡web界 - 前端用js就可以写后端了 - 速度快 鉴于它的火热程度和前端er特有的好奇心,博主决定深入了解一下这个神奇的Node.并在此将学习心得记录下来…
一.ucore操作系统介绍 操作系统作为一个基础系统软件,对下控制硬件(cpu.内存.磁盘网卡等外设),屏蔽了底层复杂多样的硬件差异:对上则提供封装良好的应用程序接口,简化应用程序开发者的使用难度.站在应用程序开发人员的角度来看,日常开发中常见的各种关于并发.I/O.程序通信的问题等都和操作系统相关,因此一定程度上了解底层的操作系统工作原理是有必要的. 另一方面,由于操作系统自身功能的复杂性,整体设计一般会有一个好的模块化架构:操作系统作为基础服务,对性能效率的要求也很高,底层会用到许多关于数据…
Go语言是怎样诞生的? Go语言的创始人有三位,分别是图灵奖获得者.C语法联合发明人.Unix之父肯·汤普森(Ken Thompson).Plan 9操作系统领导者.UTF-8编码的最初设计者罗伯·派克(Rob Pike).以及Java的HotSpot虚拟机和Chrome浏览器的JavaScript V8引擎的设计者之一罗伯特·格瑞史莫(Robert Griesemer).他们可能都没有想到,他们三个人在2007年9月20日下午的一次普通讨论,就这么成为了计算机编程语言领域的一次著名历史事件,开…
关于Linux详细介绍可以参见:http://blog.csdn.net/hguisu/article/details/6122513 关于Linux的常用命令可以参见:http://blog.csdn.net/xiaoguaihai/article/details/8705992 [Linux]Linux中常用操作命令 1.Linux操作系统的安装 目前基本上都是基于windows操作系统上的安装,在安装在windows上搞得虚拟机上加载安装Linux系统,主要有CentOS(企业服务用这个比…
SMP:一种通过复用处理器提高程序执行并行性的方式. 根据SMP,计算机系统可以分为以下四类: 单指令单数据流(SISD):一个单处理器执行一个单指令流,对保存在一个存储器中的数据进程进行操作. 单指令多数据流(SIMD):一个机器指令控制多个处理部件步伐一致的同时执行.每个处理部件都有一个相关的数据处理空间,因此,每条指令由不同的处理器在不同 的数据集合上执行. 多指令单数据流(MISD):一系列数据被传送到一组处理器上,每个处理器执行不同的指令序列. 多指令多数据流(MIMD):一组处理器同…
h1 { margin-bottom: 0.21cm; }h1.western { font-family: "Liberation Sans",sans-serif; font-size: 18pt; }h1.cjk { font-family: "微软雅黑"; font-size: 18pt; }h1.ctl { font-family: "AR PL UMing CN"; font-size: 18pt; }h2.western { fon…
3. CAPWAP Binding for IEEE 802.11 ¢ CAPWAP协议本身并不包括任何指定的无线技术.它依靠绑定协议来扩展对特定无线技术的支持. ¢ RFC5416就是用来扩展CAPWAP对IEEE 802.11网络的支持.其中定义了控制消息字段,新的控制消息,消息元素. ¢ 注意,这个协议仅支持IEEE 802.11-2007规范,并不支持IEEE 802.11-2007 standard中定义的ad hoc网络模式(即点到点模式,也就是IBSS),也不适用于four-add…
初识CAPWAP 2.1 CAPWAP简介 CAPWAP——Control And Provisioning of Wireless Access Points Protocol Specification.其由两个部分组成:CAPWAP协议和无线BINDING协议. 前者是一个通用的隧道协议,完成AP发现AC等基本协议功能,和具体的无线接入技术无关.后者是提供具体和某个无线接入技术相关的配置管理功能.这么说吧,前者规定了各个阶段需要干什么事,后者就是具体到在各种接入方式下应该怎么完成这些事.…
前言 去年11月份参加了青岛MVP线下活动,会上老MVP衣明志介绍了Nancy, 一直没有系统的学习一下,最近正好有空,就结合.NET Core学习总结了一下. 注: 本文中大部分内容都是对官网文档的翻译和总结. 简介 Nancy是一个的轻量级Http的服务框架, 全名NancyFx, Nancy框架的灵感来自于Ruby 的Sinatra框架,其作者名字叫Frank Sinatra, NancyFx这个名字中的Nancy是Frank Sinatra女儿的名字, Fx的意思是Framework,…
//系统物理页面是由 (Page Frame Number Database )简称PFN数据库来进行管理,实际上是一个数组,每个物理页面都对应一个PFN项. 进程的地址空间是通过VAD(Virtual Address Destriptor)管理.每个进程都有一个AVL树来保存这些VAD节点,来记录使用的地址以及属性等. 进程的内存地址属性分为保留和提交,保留即是使用时候才实际分配内存,而提交时需要交割对现空间的,需要分配物理页面的,然后将两者关联起来. 我们从NtAllocateVirtual…
页式映射 本系列截图来自网络搜索及以下基本书籍: <Windows内核设计思想> <Windows内核情景分析> <WINDOWS内核原理与实现> 一个32位虚拟地址,该地址其实分为三个部分:页目录表偏移.页表偏移和页偏移.其22-31位表示页目录表偏移,12-21位表示页表偏移,剩下的0-11位表示页面内偏移. 映射过程如下: 以最常见的物理页面为4K规格为例. 首先我们获得一个32位虚拟地址,然后查询CR3寄存器,确认页目录表(PDT)的位置,根据虚拟地址22-31…
RabbitMQ是一个由erlang开发的AMQP的开源实现. 核心概念 Message 消息,消息是不具名的,它由消息头和消息体组成,消息体是不透明的,而消息头则由 一系列的可选属性组成,这些属性包括routing-key(路由键),priority(相对于其它消息的优先权), delivery-mode(指出该消息可能需要持久性存储)等. Publisher 消息的生产者,也是一个向交换器发布消息的客户端应用程序. Exchange 交换器,用来接收生产者发送的消息并将这些消息路由给服务器中…
3. CAPWAP Binding for IEEE 802.11 ¢ CAPWAP协议本身并不包括任何指定的无线技术.它依靠绑定协议来扩展对特定无线技术的支持. ¢ RFC5416就是用来扩展CAPWAP对IEEE 802.11网络的支持.其中定义了控制消息字段,新的控制消息,消息元素. ¢ 注意,这个协议仅支持IEEE 802.11-2007规范,并不支持IEEE 802.11-2007 standard中定义的ad hoc网络模式(即点到点模式,也就是IBSS),也不适用于four-add…
2 初识CAPWAP 2.1 CAPWAP简介 说了半天CAPWAP,连全称都还没说,汗-- CAPWAP--Control And Provisioning of Wireless Access Points Protocol Specification.其由两个部分组成:CAPWAP协议和无线BINDING协议. 前者是一个通用的隧道协议,完成AP发现AC等基本协议功能,和具体的无线接入技术无关.后者是提供具体和某个无线接入技术相关的配置管理功能.这么说吧,前者规定了各个阶段需要干什么事,后…