自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jyyyyyy

底层C转Hadoop~红苕 https://yingyinliu.github.io/

  • 博客(39)
  • 资源 (2)
  • 收藏
  • 关注

原创 用Linux5.0的视角看《Linux内核设计与实现》——(四)内存管理

在看完了内核中的进程管理,接下来我们看看内存管理——操作系统的另一大块,个人觉得当你对进程管理和内存管理都有一定的了解后,对“内核”这一词就会有一个比较清晰的概念。12.1 页(page)页,是内核管理物理内存的基本单位。虽然处理器处理内存可以以字节为单位,但是一般来讲在处理器和物理内存之间,还存在着一个处理单元,我们称之为内存管理单元(MMU),主要负责虚拟地址到物理地址的转换。(关于为什么我们总是需要一个MMU在CPU和物理内存之间,这是计算机系统设计的一个总要知识,挖坑中……)在内核中,用str

2021-10-24 23:01:13 2569 1

原创 用Linux5.0的视角看经典《Linux内核设计与实现》——(三)进程调度的实现

接着上一篇文章。4.5 Linux调度的实现4.5.1 时间记账在前面的实现原理中讲到,每个进程被调度执行的时候是以时间片为单位的,当进程的时间片减少到0的时候,就会被停止执行,调度到其他进程中。在真正的代码实现里面,其实是用vruntime来记录的。调度实体(struct sched_entity)在调度器初始化的章节就提到了调度实体,进程可运行的时间便是记录在这个实体里面。虚拟实时(vruntime)vruntime是在调度实体里面的一个成员,存放了进程的虚拟运行时间,该运行时间并不是真

2021-09-12 21:26:22 378

原创 用Linux5.0的视角看《Linux内核设计与实现》——(二)进程调度

第四章 进程调度在前一章讲到内核是怎么管理进程的,进程的信息都是怎么在内存中保存和维护,这一章将会讨论这些进程是如何在操作系统的管理下有条不紊地运行的。4.1 多任务从操作系统的角度出发,多任务操作系统就是能同时并发地交互执行多个进程的操作系统。要明白的是,以单CPU系统为例,在某一特定时刻只会有一个进程真正被执行,都处于其他状态。多任务系统弄个可以分为两类:非抢占式多任务(cooperative multitasking)和抢占式多任务(preemptive multitasking)。所有的类U

2021-08-22 11:57:40 430

原创 用Linux5.0的视角看《Linux内核设计与实现》——(一)进程管理

趁新买的硬件还在路上,给自己再挖一个新坑。之前一直很喜欢《Linux Kernel Development》这本书,这本书写得简洁明了,而又章章经典,中译本仅300多页,把整个Linux Kernel的基本设计框架讲解得明明白白。虽说经典永远都是经典,但毕竟当时的内核只发行到2.6版本,而经过广大开源开发者的贡献,内核现在已经发展到5.13版了。书中的内容有哪些已经被改得天翻地覆,又有哪些经典永存呢?想到这里,突然觉得重温这本书和对照现在的代码会是一件十分有趣的事情。这就是大概为什么我会开始这个新坑。所有内

2021-07-31 11:26:50 200

原创 【嵌入式】从零开始移植U-boot到mini2440(四)——C runtime配置篇

设置C运行环境及代码relocate - lib/crt0.SC-runtime startup Code for ARM U-Boot在CPU完成最基本的初始化之后,我们总不能一直以汇编的方式写代码,此时我们就需要C运行环境。同时其他地方经常会把relocate单独拉出来讲,其实本质上来讲,也是属于创造C运行环境的一部分。首先我们应该理解,C语言运行对于芯片来讲除了可以稳定,正确地执行指令,还需要什么样的内存环境?众所周知,内存环境可以分成五段,其中TEXT段,data段在bin文件中,或者说就是

2021-05-07 23:08:27 291 4

原创 【嵌入式】从零开始移植U-boot到mini2440(三)——CPU初始化篇

经过前两节的准备,我们现在可以开始肝u-boot的代码了u-boot.lds这是一个很容易被人忽略的一个文件,包括我自己,以前一般用keil的时候都是自动生成的,但其实想要理解一个芯片的启动代码,最好先从lds文件开始(不过在此之前,希望你能对编译-链接-运行有所理解)。众所周知一个程序会分成对应的几段,而lds文件的用途就是规定好这几段会放在什么地方。而lds的重点是开头的这几句,与程序入口密切相关,程序虽然还是从_start开始,但与老版的u-boot不同,新版的多了__image_copy_st

2021-04-13 17:47:40 373

原创 【嵌入式】从零开始移植U-boot到mini2440(二)——烧录篇

烧录相关工具:j-link软件:j-flash ARM V4.70在编译成功之后,会生成u-boot.bin在output目录下,这个二进制文件就可以直接用于烧录。烧录位置的确定方法烧录的时候,我这里选择直接烧写在NOR中,看S3C2440的SPEC和开发板的原理图(找NOR的CE接口和S3C2440哪个引脚相连),当我们选择从NOR启动的时候,NOR Flash被映射到内存0x0000_0000 ~ 0x0800_0000,也就是说我们直接把bin文件烧录到0地址即可。这里有一篇写的蛮好的

2021-03-28 16:09:52 302

原创 【嵌入式】从零开始移植U-boot到mini2440(一)——U-boot编译篇

【嵌入式】从零开始移植U-boot到mini2440(一)U-boot版本:2020/5/2编译环境:Ubuntu 16.04arm-none-eabi-gcc version 4.9.3 20150529 (prerelease) (15:4.9.3+svn231177-1)运行环境:mini2440(s3c2440,arm920t)代码仓库:[email protected]:JingyeLi/u-boot_2440.gitcommit hash:45516b370859b022b9bf2c9fb

2020-11-22 12:15:46 473 1

原创 【嵌入式】SD Card及协议学习笔记

在嵌入式系统中,通常见的最多的移动存储设备就是SD Card了,其协议相对简单,便于开发。学习笔记是从软件角度写的,硬件部分会稍微薄弱些。SD Card (Secure Digital Memory Card) 是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,SD卡允许在两种模式下工作,即SD模式和SPI模式。笔记主要对SD卡的要点进行记录。简单介绍先从宏观上...

2020-03-07 18:14:30 1316

原创 【Hadoop】一图学习HDFS源码结构系列——放置策略的实现

【Hadoop】一图学习HDFS源码结构系列——放置策略的实现标签(空格分隔):Hadoop学习HDFS放置策略的实现后做的笔记,同样以一个结构图反映整体结构,方便以后有需要的时候回忆。...

2018-10-08 23:36:07 285

原创 【Hadoop】一图学习HDFS源码结构系列——缓存的实现

【Hadoop】一图学习HDFS源码结构系列——缓存的实现标签(空格分隔): Hadoop学习HDFS 源码的实现后做的笔记,同样以一个结构图反映整体结构,方便以后有需要的时候回忆。缓存和缓存块的实现中心缓存管理的原理...

2018-10-08 23:35:37 234

翻译 【NVMe】NVMe 1.3协议中文翻译——第一章简介

一、简介1.1概述NVMe协议(以前也叫NVMHCI)接口允许主机软件与非易失性存储器子系统通信。 此接口针对企业和客户端固态驱动器进行了优化,通常作为寄存器级接口连接到PCI Express接口。1.1.1 NVMe over PCIE 和 NVMe over FabricsNVMe 1.3版本除了继承了老版本NVMe over PCIe,同时新增NVMe over Fabrics定义...

2018-10-08 22:55:24 17059 8

原创 【Hadoop】一图学习HDFS源码结构系列——异构存储的实现

【Hadoop】一图学习HDFS源码结构系列——异构存储的实现学习HDFS异构存储的实现后做的笔记,同样以一个结构图反映整体结构,方便以后有需要的时候回忆。 DataNode通过心跳汇报自身数据存储目录的StorageType给NameNodeNameNode就是通过DataNode发出的心跳信息,得到所管理的DataNode拥有什么样的存储。 DataNode的信息收集过程,...

2018-03-24 23:22:41 596

原创 【C】C里符号优先级的那些坑

【C】C里符号优先级的那些坑最近准备在准备公司里的底层软件技能鉴定,作为每次面试笔试必考的坑,感觉很有必要好好复习一遍。 常见的有这几种坑:指针与数组这里要提到一种层层解析的方法。 1、先从最简单的开始int *pf;首先应该理解一下,“*”这个符号应该理解为“解地址”,即将地址转换成对应的数据。 这个例子暂时不用考虑优先级的事,所以含义是: * pf解地址后是...

2018-03-14 22:44:51 270

原创 【Hadoop】一图学习HDFS源码结构系列——内存存储Lazy persist

【Hadoop】一图学习HDFS源码结构系列——内存存储Lazy persist最近在学习HDFS的源码,源码规模本身比较大,学了也容易忘记,于是对于每一个小部分的功能都用Visio整理了一结构图,方便以后有用时使用从三个方面理解Lazy persist功能异步持久化算法我们知道,内存空间一定是有限的,而且掉电会丢失,不可能把所有的数据都存放到内存里面,所以HDFS会不断地...

2018-03-11 23:02:25 583

原创 【JAVA】接口和抽象类的区别

【JAVA】接口和抽象类的区别抽象类可以有成员变量和普通的成员方法,和普通类一样。抽象方法必须为public或者protected,默认是public。没有对象,且子类必须继承父类的所有抽象方法。如果没有实现完,子类也要定义为abstract类。抽象类就是为了继承而存在。虽然没有抽象方法也可以是抽象类,但我觉得这样是没有意义的。接口变量必须是public static final变量方法

2017-12-01 05:52:02 249

原创 【Linux】LDD3中sbull源码编译问题梳理

LDD3,linux设备驱动第三版用的内核是2.6.10,在编译的时候我用的是2.6.322.6.32相比2.6.10在块设备驱动上,简直是动了大手术,编译基本满满错误,这里梳理一下我遇到全部的错误很多都是网上找的资料,只有小部分是我写的:1、包含文件错误:没有#include改法:删掉2、整一个块设备驱动的struct block_device_operation

2017-09-16 10:34:16 866

转载 【Linux】LDD学习笔记——操作硬件——IO内存

原文出处:http://blog.chinaunix.net/uid-25014876-id-80627.htmlxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx在之前章节的驱动,都没有对硬件进行操作,接写来将从我之前学的裸板驱动开始,讲解在lin

2017-07-02 23:51:02 652

原创 【Linux】我的第一个驱动程序——scull字符设备驱动

我的第一个驱动程序,其实基本上都是抄的,只是结合自己的理解把它们都拼起来。参考资料:《Linux设备驱动程序(第三版)》(Linux Device Driver, LDD)

2017-05-27 13:51:03 1095

原创 【ESP8266】关于调试fatal exception/自动重启的一些经验分享

本人小白一枚最近在捣鼓ESP8266的NONOS_SDK开发,本来已经写好了一个工程测试基本功能也没什么问题了,但是发现了一个很严重的问题,就是每次一跑上40来分钟的时候,就会宕机重启,自动重启,真是奇了个怪了,本来这也没啥,但出于对稳定性的追求还是决定把这bug给补上。

2017-04-16 19:01:31 18545 6

原创 【ESP8266】NONOS SDK开发, smartconfig/AirKiss与flash读写

ESP8266可以说真的是越用越爱(我不是打广告,我只是一个技术小白……)同前面几篇博客,假设已经懂了ESP8266 NONOS SDK的基本开发环境和工程架构环境:ESP8266-07,ESP8266_NONOS_SDK_V1.2这次介绍一下ESP8266的smartconfig功能和flash读写的功能。

2017-04-14 20:03:01 6321 8

转载 【Linux】linux源码Makefile的详细分析

众多的资料(《嵌入式Linux应用开发完全手册》、Documentation/kbuild/makefiles.txt)已经向我们展示了一个初级Linux用户者应该懂得的知识--怎样添加需要编译的文件、添加编译的规则、多个源文件构成一个目标文件的情况等。  但是,一种“找到真相”的冲动迫使我想了解Linux内核编译的整个过程是怎样的。为此,查了很多资料,发现《深度探索Linux操作系统:系统构建和原理解析》一文的第三章对该问题有很详细的论述。  经过一番分析,也有自己的想法,写于此。本文主要讨论的是

2017-04-07 22:51:46 1383

原创 【ESP8266】NONOS SDK开发,发送HTTP请求

网络方面不是很懂,可能描述有一点不准确。主要是通过ESP8266,在NONOS-SDK环境下,用URL地址,发出HTTP请求,接收并处理信息。假设已经大致了解厂家提供的SDK,以及Eclipse开发环境如何使用,现在大致要做的是以下几步:1、连上WiFi(连上网络)2、与URL地址的服务器建立TCP连接3、发出HTTP请求4、接收并处理信息

2017-03-30 17:17:07 7951 12

原创 【ESP8266】NONOS SDK开发,串口发送、接收与中断

ESP8266感觉要成现在物联网的黑马了,集成WiFi功能、能编程,还便宜,确实挺6的。就是能提供的资料太少,感觉官网上的远远不够用,这个串口收发与中断折腾了我是在太久,在这里小的就分享一下自己的经验。 大家都问我要工程,我终于可以上传啦:http://download.csdn.net/download/d521000121/10045750由于时代久远,本人很多都忘了,诚意...

2017-03-26 15:11:45 11901 9

原创 【嵌入式】U-boot学习笔记——一些U-boot之外的问题

本博文记录一些关于ARM芯片的一些知识点,与U-boot源代码无关,但是是学习U-boot的基础。环境:S3C2440(ARM920T),U-boot-1.1.6

2017-03-22 22:15:07 419

原创 【Linux】Subversion/SVN学习笔记2

这篇博客用于记录Windows下得SVN客户端使用流程。

2017-03-22 11:11:50 593

原创 【Linux】Subversion/SVN学习笔记

Subversion/SVN学习笔记

2017-02-23 17:49:32 361

原创 【算法】数据结构与算法分析学习笔记——各类二叉查找树的吐血整理

二叉查找树的吐血整理

2017-02-19 19:12:03 904

原创 【算法】数据结构与算法分析学习笔记——第四章AVL树C语言实现

看《数据结构与算法分析》第四章时介绍到了一个AVL树的东西对于节点删除,书上只是提了一下惰性删除,也没有给出例程,这里就试着实现非惰性删除实现的方法同二叉查找树,找一个左子树的最大节点进行替换,递归删除,并做及时的AVL树维护

2017-01-10 11:23:46 1610

原创 【算法】数据结构与算法分析学习笔记——第三章习题选做快速傅里叶变换与多项式乘法

3.7编写一个函数将两个多项式相乘,用链表实现。必须保证输出的多项式按幂排列并且最多有一项为任意幂。c.编写一个以O(MNlog(MN))时间执行乘法的程序。

2017-01-06 10:45:02 799

原创 【算法】数据结构与算法分析学习笔记——第三章习题选做Josephus问题

原题是这个样子的:编写一个函数将两个多项式相乘,用链表实现。必须保证输出的多项式按幂排列并且最多有一项为任意幂。c.编写一个以O(MNlog(MN))时间执行乘法的程序。

2016-12-31 16:21:51 831

原创 【嵌入式】uC/OS-II学习笔记——OSUnMapTbl、OSRdyGrp、OSRdyTbl用法解读

关于这三个系统变量,研究了好一阵子,也在网上查了不少资料,感觉挺乱的,就按自己的理解写得详细一点。希望能让人只看一篇博文就能搞懂这个是怎么用的。首先给出这三个变量的定义:INT8U const OSUnMapTbl[256] = { 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x00 to 0x0F

2016-12-15 23:28:57 6354 2

原创 【嵌入式】uCOS-II在STM32上的移植

本文主要提供uCOS在STM32上的移植的一些步骤和个人见解,只涉及具体实操加一点解释,不讲原理,如有不当之处敬请指出。文中使用的STM32型号为STM32F103C8T6,使用的uCOS版本为V2.91零、关于使用MDK创建STM32工程的步骤,在本人的另一篇文章,有兴趣的可以参考一下链接。一、先从网上下载下来uCOS-II的源码(官网可能在国内下不了,随便百度一搜多

2016-12-06 23:43:17 1416

原创 【嵌入式】STM32的库函数使用

使用编译环境为MDK5,烧录器将会使用JTAG和串口两种,芯片为STM32F103C8T6

2016-11-09 23:35:40 4837

原创 【Linux】CD管理应用程序

看完Neil和Richard的《Linux程序设计》,根据书中的例子,自己写了一个简化版的CD管理应用程序。主要用到了几个在书中讲到的知识点:1.采用C/S模式,在同一机子上运行;2.用curses作为客户端显示接口;3.数据用MySQL存储;4.进程间通讯使用命名管道。写完下来总共900行左右的代码吧,断断续续不知道写了多久,感受还是挺深刻的,中途出了很多问题,也

2016-11-07 23:23:41 611

转载 【算法】NOIP2010提高组解题报告

原文地址:NOIP2010提高组解题报告作者:施舟行第一题:模拟  直接按题目描述模拟,用一个队列实现。  由于是非负整数,所以要记得开0下标第二题:动态规划  首先问题只与所用卡片的个数和位置有关,所以可以根据这个设计状态进行动态规划  记f[i, j, k,l]表示用了i个1步的卡片,j个2步的卡片,k个3步的卡片,l个4步的卡片所获得的最大得分状态转移方程f[i, j, k,

2016-11-07 22:52:37 421

原创 【算法】棋盘游戏(game)解题报告

棋盘游戏(game)源程序名      game.???  (pas,c,cpp)可执行文件名  game.exe输入文件名    game.in输出文件名    game.out时限          2s在一个4*4的棋盘上有8个黑棋和8个白棋,当且仅当两个格子有公共边,这两个格子上的棋是相邻的。移动棋子的规则是交换相邻两个棋子。现在给出一个初始棋盘和一个最终棋

2016-11-07 22:52:34 2019

原创 【算法】轰炸(BOMB)解题报告(模拟提高组)

轰炸(BOMB)源程序名      bomb  (pas,c,cpp)可执行文件名   bomb.exe输入文件名    bomb.in输出文件名    bomb.out时限          2s“我该怎么办?”飞行员klux向你求助。事实上,klux面对的是一个很简单的问题,但是他实在太菜了。klux要想轰炸某个区域内的一些地方,它们是位于平面上的一些点,但是(显然地)

2016-11-07 22:52:31 1000

原创 【MySQL】常用命令整理(边学边整理)

MySQL常用命令整理

2016-10-30 00:33:19 299

【ESP8266】NONOS SDK开发,串口发送、接收与中断

ESP8266的NONOS SDK开发,串口发送、接收与中断工程,配合博客http://blog.csdn.net/d521000121/article/details/66475439使用更佳哦~由于时代久远,本人很多都忘了,诚意与大家交流。

2017-10-30

Linux设备驱动程序(第三版)书中源码

包含书中所有案例的源码,Linux内核为2.6.10,虽然对于现在来说年代已经有点久远了,但该书是Linux驱动学习入门经典,写得十分清晰明了,墙裂推荐。

2017-09-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除