jmhIcoding

Coding Life

排序:
默认
按更新时间
按访问量

bread 块设备读取函数解析(1)

引言 bread 块设备读取函数,顾名思义就是读取块设备内容的函数,这个函数的第一次调用是在main函数里面进程1的init()函数里面,sys_setup函数调用的。 第一次调用主要是为了读取硬盘上的第一个扇区的内容,因为第一个扇区有着分区表等重要信息。 bread的技术路线特别长,可以说它操作...

2018-11-14 21:06:10

阅读数:21

评论数:0

机器学习——聚类

概述 机器学习里面的聚类是无监督的学习问题,它的目标是为了感知样本间的相似度进行类别归纳。它可以用于潜在类别的预测以及数据压缩上去。潜在类别预测,比如说可以基于通过某些常听的音乐而将用户进行不同的分类。数据压缩则是指将样本进行归类后,就可以用比较少的的One-hot向量来代替原来的特别长的向量。 ...

2018-11-11 16:13:29

阅读数:15

评论数:0

算法设计与分析——斐波那契堆

引言 这章,我们来看看大名鼎鼎的斐波那契堆。这个堆就很有意思了,居然能和大名鼎鼎的斐波那契数列挂上边。

2018-11-10 10:02:46

阅读数:111

评论数:0

操作系统分析——_TSS(n)宏解析

在linux内核代码中,会遇到如下的宏定义: #define _TSS(n) ((((unsigned long) n)<<4)+(FIRST_TSS_ENTRY<<3)) #define _LDT(n) (...

2018-11-07 15:00:17

阅读数:18

评论数:0

算法设计与分析——二项堆

引入 上一篇博课-二叉堆介绍了如何使用具有微弱限制的二叉树——要求父节点上的元素同时大于等于子节点或同时小于等于子节点——这种数据结构来实现一个优先队列,我们看到基于二叉堆实现的优先队列的各个基本操作的时间复杂度分别为: MakeHeap_VOID MakeHeap_List INSERT...

2018-11-03 17:12:48

阅读数:48

评论数:0

算法设计与分析——二叉堆(一)

本blog主要介绍了二叉堆、二项式堆,下一篇博客将介绍斐波拉契堆。 二叉堆和二项式堆、斐波拉契堆都是用于实现优先队列的高级数据结构,以不同堆实现的优先队列会有不同的时间复杂度。 问题引入 在实际应用中,我们经常会遇到在最多由n个数组成的动态集合SSS上得到这个集合里面的最大值或者最小值。这里的动态...

2018-11-03 12:03:05

阅读数:51

评论数:0

copy_page_tables函数分析

先看看分页机制里面的页目录表、页表、页之间的关系。分页机制是用于将一个线性地址转换为一个物理地址。 在I32 CPU环境里面,首先通过设置CR0寄存器,打开保护模式、开启分页机制。然后将页目录表的物理地址基址给CR3寄存器。开启分页机制后,I32将全部的物理内存空间、线性地址空间划分为一个个的页。...

2018-10-30 01:15:16

阅读数:33

评论数:0

BiLSTM+CRF (一)双向RNN 浅谈

引言 为什么要使用双向的RNN? 一般的按序列顺序过来的RNN会记录、保存来自前面序列的信息,这些历史信息对当前的输出是很有帮助的。但是有些问题,序列当前位置历史信息和这个位置未来的信息会共同对计算当前位置的输出有帮助,例如在NLP里面的人名识别里面, 如果我们很确信下一个字符是人名的开始,那么...

2018-10-28 16:57:01

阅读数:56

评论数:0

move_to_user_mode()一个push esp的疑问

#define move_to_user_mode() \ __asm__ ( "movl %%esp,%%eax\n\t" \ "pushl $0x17\n\t&qu...

2018-10-16 23:36:13

阅读数:16

评论数:0

操作系统分析——main.c(2) move_to_user_mode()函数

今天来看看move_to_user_mode()函数 这个宏函数是在main()函数开启中断以后调用的。这个函数的作用是什么呢?经过sti()以及之上的语句,进程0就已经创建完毕了。其中最主要的就是创建了类型为task_union 的init_task。 static union task_uni...

2018-10-16 09:56:38

阅读数:15

评论数:0

操作系统——main.c(1)sched_init()

今天我们来看看内核main函数调用的sched_init()函数。 main函数 void main(void) { ROOT_DEV = ORIG_ROOT_DEV; drive_info = DRIVE_INFO; memory_end = (1&amp...

2018-10-16 00:42:08

阅读数:10

评论数:0

操作系统分析——为什么需要RPL,request privilege level

在学特权级的时候,我们都会知道一共有三个特权级:CPL,DPL,RPL。 CPL和DPL是比较好理解的,CPL是当前CPU所在的特权级,这个值是保存在CS段寄存器的段选择子中的。而DPL则是目标段描述符的特权级。我们想啊,我现在帅的等级为CPL,这个等级可以通过我身上的一个叫做CS的东西知道。然后...

2018-10-15 20:40:59

阅读数:11

评论数:0

算法设计与分析——动态规划(一)矩阵连乘

动态规划——Dynamic programming,可以说是本人一直没有啃下的骨头,这次我就得好好来学学Dynamic programming. OK,出发! 动态规划通常是分治算法的一种特殊情况,它一般用于最优化问题,如果这些问题能够: 1.能够分解为规模更小的子问题 2.递归的子问题具有最优子...

2018-10-15 00:10:08

阅读数:57

评论数:0

自然语言处理——CBOW模型

CBOW一个用于快速训练得到词向量的神经网络模型,它的核心原理是中心词的前R个词和后R个词来预测中心词。 它的网络模型相比NNLM模型来说,最大的变化是直接去除隐层的非线性激活过程,以此来加速网络的训练速度。 CBOW的输入: 假设中心词wiw_{i}wi​的上下文C(wi)={wj∣j∈[i−R...

2018-10-14 17:15:10

阅读数:58

评论数:0

进程0的LDT0代码段描述符分析

LDT0的值为 ···· { \ {0,0}, \ /* ldt */ {0x9f,0xc0fa00}, \ {0x9f,0xc0f200}, \ }, ··· 其中第二项{0x9f,0xc0fa00}为代码段的描述符。 然后看task中对ld...

2018-10-12 23:36:57

阅读数:17

评论数:0

为什么使用神经网络训练得到的语言模型不需要做数据平滑

我们都知道,在自然语言处理的语言模型里面,最核心的就是计算得到一个句子的概率,为了得到这个概率,我们需要计算得到一系列的条件概率。这些条件概率就是整个语言模型的参数。 为了得到条件概率,我们可以有两种不同的方法。 第一种就是使用统计概率方法,通过统计的方法得到不同的词对的条件概率。这种方式简单易行...

2018-10-10 18:50:40

阅读数:23

评论数:0

算法设计与分析——分治法

前言 本文重点回顾了卜老师课堂上关于分治算法的一些常见的问题。加油吧!ヾ(◍°∇°◍)ノ゙ 分治法(Divide and Conquer) 当面对一个问题的时候,我们可能一下子找不到解决问题的方法。此时,我们可以考虑将问题规模最小化,先看看当问题规模变小以后,我们如何去解决;然后逐步扩大问题的规模...

2018-10-05 21:45:45

阅读数:26

评论数:0

git解决冲突

有时候,两个人会对同一份文件做修改,然后两份修改后的文件同时comit就会出错。 怎么办呢? 直接编辑冲突的文件即可。 git会标识出冲突的地方 其中<<<<<<&a...

2018-09-27 17:10:37

阅读数:18

评论数:0

C语言内联汇编

在阅读linux 源码的时候,我们会看到很多C语言内联汇编的代码。下面我们集中看看C语言内联汇编是怎么样的。 首先,我们得想想为什么会有在C语言里面内联汇编的需求。 主要有两个,一个是我们觉得在被频繁调用的函数,如果使用C写出来的代码,可能执行效率达不到我们的预期,于是我们就使用汇编语言来把这个函...

2018-09-26 22:06:43

阅读数:34

评论数:0

Master—Theorem 主定理的证明和使用

引言? 在分析算法的时候,我们经常需要分析递归算法的时间复杂度。Master——Theorem 正是用于快速得出递归算法时间复杂度的方法。 Master—Theorem 假设某个递归算法的时间复杂度递归公式为:T(n)=a∗T(nb)+ndT(n)=a*T(\frac{n}{b}) + n^{d}...

2018-09-24 10:34:43

阅读数:144

评论数:1

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