<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[大圣编了个程]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u010709783</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010709783]]></copyright><item><title><![CDATA[存储笔记--块设备驱动的操作]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/79709360</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/79709360</guid><author>u010709783</author><pubDate>Tue, 27 Mar 2018 10:36:02 +0800</pubDate><description><![CDATA[1。块设备的open

static int sbull_open(struct inode *inode, struct file *filp) 
{ 
        struct sbull_dev *dev = inode-&amp;gt;i_bdev-&amp;gt;bd_disk-&amp;gt;private_data; 
        del_timer_sync(&amp;amp;dev-&amp;gt;timer)...]]></description><category></category></item><item><title><![CDATA[存储笔记--块设备驱动的注册]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/79708443</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/79708443</guid><author>u010709783</author><pubDate>Tue, 27 Mar 2018 09:58:06 +0800</pubDate><description><![CDATA[块设备的注册



1。块设备模型示意图



一个块是一个固定大小的数据块, 大小由内核决定. 块常常是 4096 字节, 但是这个值可依赖体系和使用的文件系统而变化. 一个扇区, 相反, 是一个小块, 它的大小常常由底层的硬件决定. 内核期望处理实现 512-字节扇区的设备。

2。注册


2.1 块驱动的注册 
int register_blkdev(unsigned int major,...]]></description><category></category></item><item><title><![CDATA[存储笔记--NVMe原理篇之数据传输]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/79199511</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/79199511</guid><author>u010709783</author><pubDate>Mon, 29 Jan 2018 20:29:14 +0800</pubDate><description><![CDATA[接上文继续 
http://blog.youkuaiyun.com/u010709783/article/details/79110753

1。read–write 命令基本流程

Host在与SSD的数据传输过程中，Host是被动的一方，SSD是主动的一方。你Host需要数据，是我SSD主动把数据写入到你的内存中；你Host写数据，同样是我SSD主动去你Host的内存中取数据，然后写入到闪存。

Writ]]></description><category></category></item><item><title><![CDATA[存储笔记--NVMe原理篇]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/79110753</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/79110753</guid><author>u010709783</author><pubDate>Fri, 19 Jan 2018 21:06:09 +0800</pubDate><description><![CDATA[参考：http://home.eeworld.com.cn/home.php?mod=space&uid=346593&do=blog&id=272657



目录





目录




NVMe 是什么
nvme 处于什么位置
为什么需要nvme
命令如何执行
支持的admin command
支持的io command
下发命令流程
流程步骤图
详解
总结













NVM]]></description><category></category></item><item><title><![CDATA[存储笔记--ssd基本原理篇]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/79078853</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/79078853</guid><author>u010709783</author><pubDate>Tue, 16 Jan 2018 20:31:57 +0800</pubDate><description><![CDATA[1.SSD介绍



1.什么是ssd?

固态硬盘（Solid State Drives），用固态电子存储芯片阵列而制成的硬盘，由控制单元和存储单元（FLASH芯片、DRAM芯片）组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同，在产品外形和尺寸上也完全与普通硬盘一致。

2.ssd分类

固态硬盘(SSD)的存储介质分为两种，一种是采用闪存（FLASH芯片）作为存储介质，]]></description><category></category></item><item><title><![CDATA[存储笔记--磁盘原理篇]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/79078377</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/79078377</guid><author>u010709783</author><pubDate>Tue, 16 Jan 2018 19:42:33 +0800</pubDate><description><![CDATA[1。磁盘体系结构





2。磁盘组织结构图



1。 在磁盘不工作的时候，磁头停靠在靠近主轴接触盘片的表面，即线速度最小的地方，这里是一个不存放任何数据的特殊区域，称为启停区或着陆区，启停区以外就是数据区。 
  2。 在磁盘的最外圈，离主轴最远的磁道称为“0”磁道，磁盘数据的存放就是从最外圈“0”磁道开始的。既然磁盘数据从最外圈开始，而停止时磁头又是在最内圈启停区，那么磁头是如何找到“0”]]></description><category></category></item><item><title><![CDATA[存储笔记--导论篇2]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/79068540</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/79068540</guid><author>u010709783</author><pubDate>Mon, 15 Jan 2018 20:41:08 +0800</pubDate><description><![CDATA[计算机内部通信

将通信的所有节点连接起来，然后找到目标，找到后就发送数据。即“连找发”网络三元素模型。

连：就是保证每个网络点到其它网络点总有通路，总是可达的。

找：就是提供区分机制，区分体现在主机总线中就是设备地址映射。每个IO设备在启动时都要向内存中映射一个或者多个地址，这个地址有8位长，又被称为IO端口。针对这个地址的数据，统统被北桥芯片重定向到总线上实际的设备上。假如，IDE磁盘控制]]></description><category></category></item><item><title><![CDATA[存储笔记--导论篇]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/79068240</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/79068240</guid><author>u010709783</author><pubDate>Mon, 15 Jan 2018 20:10:48 +0800</pubDate><description><![CDATA[1.计算机器总线示意图



计算机总线工作模式：　　　　半双工

总线或设备的位宽：　　　　　按照数据总线的条数

CPU位数：　　　　　　　　　内部寄存器到计算单元之前的总线条数

PCI总线：　　　　　　　　　目前台式机与服务器所普遍使用的一种南桥与外设连接的总线技术。PCI地址总线、数据总线分时复用。

系统总线（前端总线）：　　　CPU与北桥连接的总线

内存总线：　　　　　　　　　内存]]></description><category></category></item><item><title><![CDATA[Linux 学习--GNU nano编辑器的使用]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/78809832</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/78809832</guid><author>u010709783</author><pubDate>Fri, 15 Dec 2017 10:06:52 +0800</pubDate><description><![CDATA[转载：http://blog.youkuaiyun.com/doupeihua/article/details/22041555Linux GNU nano编辑器的使用 
被nano编辑器折腾了半天，收藏一下吧。省得以后到处找我们以后基本都需要编辑文件来实现不同的设置，那么我们用什么来设置配置文件呢，用编辑器，就好比windows下的记事本和写字板，我们今天就来讲一下debian的默认编辑器—-nano首先我们]]></description><category></category></item><item><title><![CDATA[linux私房菜 之centos 的安装]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/78805431</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/78805431</guid><author>u010709783</author><pubDate>Thu, 14 Dec 2017 17:48:30 +0800</pubDate><description><![CDATA[安装须知 
1。linux 的角色定位 
2。选择的版本 
3。计算机硬件配比 
4。磁盘分区的配置]]></description><category></category></item><item><title><![CDATA[C语言面向对象编程之封装与继承]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/78523617</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/78523617</guid><author>u010709783</author><pubDate>Mon, 13 Nov 2017 19:18:24 +0800</pubDate><description><![CDATA[c语言的封装封装在 C++ 语言中有 protected 、 private 关键字在语言层面上支持，而 C 语言中没有这些。 C 有结构（ struct ），其实可以实现封装和隐藏。c++的实现QObject{  
public:  
    xxx  
    xxx  
private:  
    QObjectPrivate * priv;  
}; c的实现    struct st_a]]></description><category></category></item><item><title><![CDATA[linux 学习之tmux 分屏]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/78478614</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/78478614</guid><author>u010709783</author><pubDate>Wed, 08 Nov 2017 14:40:47 +0800</pubDate><description><![CDATA[使用tmux分屏（既可以左右分屏，也可以上下分屏）、（1）安装工具在ubuntu系统中使用sudo apt-get install tmux安装tmux工具（2）使用工具1，输入命令tmux使用工具2，上下分屏：ctrl + b  再按 “3，左右分屏：ctrl + b  再按 %4，切换屏幕：ctrl + b  再按o5，关闭一个终端：ctrl + b  再按x6，上下分屏与左右分屏切换： ctr]]></description><category></category></item><item><title><![CDATA[linux 驱动学习之ioctl 命令_IOC _ 相关宏]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/78413914</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/78413914</guid><author>u010709783</author><pubDate>Wed, 01 Nov 2017 14:41:03 +0800</pubDate><description><![CDATA[转载 ：http://blog.youkuaiyun.com/u010245383/article/details/29391805简介在驱动程序里， ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外，还包含有助于处理的几种相应信息。 cmd的大小为 32位，共分 4 个域：bit31~bit30 2位为 “区别读写” 区，作用是区分是读取命令还是]]></description><category></category></item><item><title><![CDATA[linux驱动学习之模块访问权限的控制]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/78413537</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/78413537</guid><author>u010709783</author><pubDate>Wed, 01 Nov 2017 14:12:32 +0800</pubDate><description><![CDATA[简述：在驱动模块，可以对没有权限的进程和应用程序拒绝访问，有权限的才允许访问。权限控制接口：bool capable(int cap); 
定义头文件： 
include “linux/capability.h”用法例子：if (! capable (CAP_SYS_ADMIN)) 
    return -EPERM;capable()没有权限时返回0，有权限时返回1。 
在file_operti]]></description><category></category></item><item><title><![CDATA[linux驱动学习之kthread_work和kthread_worker机制]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/78395454</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/78395454</guid><author>u010709783</author><pubDate>Mon, 30 Oct 2017 17:47:04 +0800</pubDate><description><![CDATA[转载 ：http://blog.youkuaiyun.com/cq062364/article/details/39647907kthread_work和kthread_worker机制Kernel中提供的kthread_work和kthread_worker机制和经典的work_struct和workqueue_struct的关系有点类似.通过一个kthread_worker可以处理多个kthread_wor]]></description><category></category></item><item><title><![CDATA[Linux——信号掩码（signal mask）]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/78390184</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/78390184</guid><author>u010709783</author><pubDate>Mon, 30 Oct 2017 09:47:21 +0800</pubDate><description><![CDATA[转载 ：http://blog.youkuaiyun.com/budory/article/details/46803863在POSIX下，每个进程有一个信号掩码(signal mask)。简单地说，信号掩码是一个“位图”，其中每一位都对应着一种信号。如果位图中的某一位为1，就表示在执行当前信号的处理程序期间相应的信号暂时被“屏蔽”，使得在执行的过程中不会嵌套地响应那种信号。为什么对某一信号进行屏蔽呢？我们来看]]></description><category></category></item><item><title><![CDATA[linux 驱动学习之kmalloc 内存分配]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/78367561</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/78367561</guid><author>u010709783</author><pubDate>Fri, 27 Oct 2017 17:59:07 +0800</pubDate><description><![CDATA[kmalloc 函数void *kmalloc(size_t size, int flags);   第一个参数是要分配的块的大小. 第 2 个参数, 分配标志, GFP_ATOMIC用来从中断处理和进程上下文之外的其他代码中分配内存. 从不睡眠.
GFP_KERNEL内核内存的正常分配. 可能睡眠.
GFP_USER用来为用户空间页来分配内存; 它可能睡眠.
GFP_HIGHUSER如同 GFP_]]></description><category></category></item><item><title><![CDATA[linux 驱动学习之list链表机制]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/78367165</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/78367165</guid><author>u010709783</author><pubDate>Fri, 27 Oct 2017 17:24:49 +0800</pubDate><description><![CDATA[转载：http://blog.chinaunix.net/uid-27122224-id-3277511.html双向链表struct list_head{
      struct list_head *next, *prev;
};
struct dlist{
     int no;
     void* data;
     struct dlist *prev, *next;
    };]]></description><category></category></item><item><title><![CDATA[linux驱动学习之工作队列机制]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/78357661</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/78357661</guid><author>u010709783</author><pubDate>Thu, 26 Oct 2017 19:25:37 +0800</pubDate><description><![CDATA[转载：http://www.cnblogs.com/wwang/archive/2010/10/27/1862202.html什么是工作队列？工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行，因此工作队列的优势就在于它允许重新调度甚至睡眠。工作队列相关数据结构struct w]]></description><category></category></item><item><title><![CDATA[c++ 之static_cast、dynamic_cast、const_cast和reinterpret_cast总结]]></title><link>https://blog.youkuaiyun.com/u010709783/article/details/78357097</link><guid>https://blog.youkuaiyun.com/u010709783/article/details/78357097</guid><author>u010709783</author><pubDate>Thu, 26 Oct 2017 18:13:37 +0800</pubDate><description><![CDATA[转载：  http://www.jellythink.com/archives/205
C++中的类型转换分为两种： 
隐式类型转换； 
显式类型转换。 
在标准C++中有四个类型转换符：static_cast、dynamic_cast、const_cast和reinterpret_cast。
static_caststatic_cast的转换格式：static_cast  (expression)]]></description><category></category></item></channel></rss>