自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (6)
  • 问答 (1)
  • 收藏
  • 关注

原创 linux 3个内存模型(flat memory model、discontiguous memory model、sparse memory model)

linux内核支持3中内存模型,分别是flat memory model、discontiguous memory model和sparse memory model。所谓memory model,就是在操作系统层面,用什么样的方式来管理这些物理内存。1 flat memory model如果从系统中任意一个处理器角度看,当它访问物理内存时,物理地址空间是一个连续的,没有空洞的地址空...

2019-05-25 15:46:28 1782

原创 物理内存探测和memblock分配器初始化和分配

linux内存管理,总的来说,分为3个阶段,分别是:memblock/bootmem分配器初始化 Buddy 系统初始化 Slab/slub分配器初始化为什么要分为3个阶段呢?由于系统在初始化最初阶段,buddy系统和slab分配器都还未初始化完成,这时候内核分配内存,需要一种方式来分配物理内存,linux系统最初提供bootmem分配器分配内存,后续提供了memblock分配器...

2019-05-18 18:08:54 891 1

原创 linux上构建GFP_ZONE_TABLE

当内核分配内存时,需要指定gfp flag, 内核通过gfp标志判断从哪个zone分配内存。例如kmalloc(size_t size, gfp_t flags).在linux中存在ZONE_DMA, ZONE_DMA32, ZONE_NORMAL, ZONE_HIGHMEM, ZONE_MOVABLE几个zone。由于gfp_t 低4位,共有2^4=16中情况,而linux规定了低...

2019-05-09 18:48:34 761

原创 linux pagecache bdi writeback 机制

(原创,未经允许,请勿转载)第一部分 pagecache write概述1. pagecache write的过程,即非direct IO的写,通过系统调用sys_write写下来的数据,是先在内核的pagecache中分配一块pages,然后将数据写到pages;2.之后便通过balance_dirty_pages_ratelimmited来检查dirty page是否超过预

2017-08-22 16:27:44 2620

原创 linux 内核缓冲区管理之slab机制

【原创】  未经允许,请勿转载     linux 内核采用一种称为"slab"的缓冲区分配和管理的方法。在slab方法中,每种重要的数据结构都有自己专用的缓冲区队列,每种数据结构都有相应的构造constructor和析构destrucor函数。     slab管理特点,每种对象的缓冲区队列并非由各个对象直接构成,而是由一连串的大块slab构成,而每个大块中则包含了若干同种的对象。一

2017-08-15 10:54:24 1373

原创 linux 内核之block trim BLKDISCARD过程

对SSD进行trim,是通过ioclt发送BLKDISCARD命令完成的。下面是block层ioctl的调用栈。sys_ioctl->do_vfs_ioctl->block_ioctl->blkdev_ioctl->blkdev_issue_discard->__blk_run_queue->scsi_request_fn->....具体通过代码讲解BLKDISCARD执行

2017-08-09 09:37:45 7805

原创 鸟哥的Linux私房菜笔记6------11章认识和学习bash

1.合法的shell与/etc/shells功能     shell有多个版本,有Bourne Shell(sh)、C Shell、K Shell 、TCSH等。通常Linux使用的是Bourne Again Shell(Bash),是sh的增强版     可以检查/etc/shells,查看有多少可用的shell。将合法的shell写入/etc/shells文件,是为系统某些服务在运

2014-12-14 15:57:35 805

原创 Linux 之正则表达式

正则表达式是通过一些特殊符号的辅助,让用户轻易的达到查找、删除、替换某些特定字符串的处理程序。正则表达式:分为基础正则表达式 和扩展正则表达式。基础正则表达式:     1     语系对正则表达式的影响,建议使用下面特殊符号。          [:alnum:]     代表英文字母和数字          [:alpha:]     英文字母         

2014-12-13 17:19:16 532

原创 编程之美学习心得 二 (未完待续)

2.1 求二进制数中1的个数     解法一:暴力的解法          对N中二进制1的个数:N = b[0] +b[1]*2+b[2]*2^2+...b[n]*2^n                    int count(BYTE v){               int num = 0 ;               while(v)           

2014-09-05 21:48:08 707

原创 致烟民早日摆脱烟瘾的困扰

我们无法戒烟的唯一原因是: 恐惧!     我们恐惧戒烟过程的漫长和痛苦。恐惧一旦离开香烟,生活的舒适感就会下降,恐惧戒烟会导致注意力下降,恐惧戒烟对性情产生影响,最恐惧的是戒烟无法成功,只能做一辈子的烟瘾的努力,永远无法解脱。     如果你感到紧张,心慌意乱,或是感到时机未到,那么这些都是由恐惧引起的。这种恐惧是由吸烟导致的,永远无法靠吸烟缓解的。你并不是自主的吸烟,只是不小心掉进了吸

2017-09-06 10:42:17 915

原创 vim 技巧篇

欢迎关系公众号  峰峰记事本本公众号近期推出 vim 技巧篇,每天一篇小技巧,希望对您有所帮助。内容章节:vim技巧篇7-打开及保存文件vim技巧篇6-管理多个文件vim技巧篇5-命令行模式vim技巧篇4-可是模式vim技巧篇3-插入模式vim技巧篇2-普通模式vim技巧篇1-初识vim想要了解更多,欢迎关注公众号-峰峰记事本

2017-05-25 09:41:36 437

原创 linux iscsi网络的三种工具tgt iscsi_tgt targetcli

组建iscsi 网络三种target工具,分别为tgt,iscsi_tgt,和targetcli ;initiator 端均使用open-iscsi即可;a. tgt          使用tgtadm命令创建iscsi target;          首先,创建target               tgtadm --lld iscsi --mode target -

2017-05-19 17:19:08 6238

原创 CentOS7 USB 启动/安装出现 dracut-initqueue timeout问题

小主我用ahci port上安装了 CentOS,可是将安装好的CentOS 放到USB上启动,结果老是出现dracut timeout的问题;网上搜索答案,结果是一片人云亦云,全是同一个声音,一看就是一个人发帖,其他人转发,不但解决不了问题,还在误导人。( 原创 :转载请注出处,有问题请联系[email protected] )下面小主给出dracut timeout的正解

2017-01-23 18:18:04 35500 3

原创 Ubuntu mount CentOS LVM 分区

很多时候,会遇到在一台系统上挂在另一个系统的分区,小主就遇到CentOS启动不起来,于是就想通过Ubuntu来挂载CentOS LVM 分区。首先,Ubuntu要安装lvm。     1. 安装 lvm2          $apt-get install lvm2     2. 扫描lvm,找到vg          $vgscan         Reading

2017-01-23 12:28:00 630

原创 sysbench mysql 数据库性能测试

mysql数据库的安装apt-get install mysql-server ,apt-get install mysql-client, apt-get install libmysqlclient-dev;                    安装过程中出现设置密码,注意设置了不要忘记了,安装完成后,可以通过下面命令检查是否安装成功:             

2017-01-23 09:28:41 610

原创 linux内核之sys接口device_add详解

设备模型之device1.与device相关的函数有 device_register(struct device *dev);device_add(struct device *dev);device_unregister(struct device *dev);  与device attr相关函数:device_create_file(struct device

2015-09-26 23:48:48 2418

原创 nvme 驱动详解 之1

按照老的套路,在分析一个driver时,我们首先看这个driver相关的kconfig及Makefile文件,察看相关的源代码文件.在开始阅读一个driver,通常都是从module_init or syscall_init函数看起。 下面让我们开始nvme的旅程吧。首先打开driver/block下的kconfig文件,其中定义了BLK_DEV_NVME config,如下。

2015-08-17 21:14:53 11746

原创 scsi底层设备注册——如何一步步注册到block层

首先,让我们先进入ata_host_register函数,看如何一步一步的去向上层注册的。intata_host_register(struct ata_host *host, struct scsi_host_template *sht){         int i, rc;          host->n_tags =clamp(sht->can_queue, 1, A

2015-05-05 19:08:01 3954

原创 鸟哥的Linux私房菜7-------14章 Linux帐号管理与ACL权限设置

1. 用户表示符UID与GID     /etc/passwd文件结构: 有几行就代表有几个帐号在你的系统里每一行用:分割,一共7个字段。     1.帐号名称     2.密码:早起unix用,现在把密码数据放在/etc/shadow文件中了,这里用x表示     3.UID:0代表系统管理员。               1-499:系统帐号         

2014-12-16 16:56:42 823

原创 鸟哥的Linux学习笔记之三

第8章 Linux磁盘与文件系统管理1 磁盘组成与分区:     磁盘由  圆的盘片、磁头、主轴马达 等组成。     盘片主要有:          扇区(Sector)为最小的物理存储单位,每个扇区512bytes          将扇区组成一个圆,就是柱面(Cylinder),是分区的最小单位。          第一个扇区最重要,里面有MBR(主引

2014-12-01 16:00:37 604

原创 鸟哥的Linux私房菜笔记之二

第七章 Linux文件与目录管理1 目录相关操作     .     代表此层目录     ..     代表上一层目录     -     带博啊前一个工作目录     ~     代表当前用户的主文件夹     ~account 代表account 账户的主文件夹     cd:change directory:切换目录     pwd:prin

2014-11-27 18:38:56 467

原创 鸟哥的Linux学习笔记之 一

第三章 主机规划与磁盘分区1. 选择与Linux搭配的主机配置          配件配置主要有以下几个:               CPU               RAM               Hard Disk               VGA               Network Interface Card               光

2014-11-25 21:24:35 576

原创 多线程互斥与同步

事件对象:HANDLE CreateEvent(  LPSECURITY_ATTRIBUTES lpEventAttributes,  BOOL bManualReset,//是否人工重置  BOOL bInitialState,//创建的是否有信号状态  LPCTSTR lpName//事件是否命名);当创建的是人工重置的事件对象,当为有信

2014-09-03 16:14:42 533

原创 MFC之多线程学习

1、  程序是计算机指令的集合2、  进程:通常定义为一个正在运行的程序的实例。进程是资源申请、调度和独立运行的单位。进程从不执行任何东西,它只是线程的容器。要使进程完成某项操作,它必须拥有一个在它环境中运行的线程。3、  每个进程至少拥有一个线程,来执行进程的地址空间的代码。当创建一个进程时,操作系统会自动创建这个进程的第一个线程,成为主线程,(即执行main或winmain的线

2014-09-03 16:13:39 508

原创 TS流解析 ffmpeg

ffmpeg关于mpegts码流解析部分:1、  首先来看main函数通过av_register_all()来注册所有的编解码器、解复用器(这里只用到mpegts_demuxer)、注册所使用的协议(这里用到文件打开的协议file_protocol,类似的还有http_protocal,pipe_protocol,rtp_protocol,tcp_protocol,udp_prot

2014-09-03 16:11:35 2075

原创 C++网络编程之TCP UDP

网络字节顺序:TCP/IP采用16/32位高位先存格式 TCP/IP网络应用中,通信的两个进程主要采用C/S模式。服务器要先启动,并根据请求提供相应的服务:1、打开一个通信通道订告知本地主机,它愿意在某一地址和端口上接受客户请求;2、等待客户请求到达该端口;3、接受到重复服务请求,处理该请求并发送应答信号。接收到并发服务请求,要急活一个新的进程(或线程)来处理这个客户请求。

2014-09-03 16:03:47 583

原创 系统调用原理

系统调用系统调用是应用程序和操作系统内核的接口,无论程序是直接进行系统调用还是通过运行库,最终还是会到达系统调用层面上。之所以要系统调用,是因为现在操作系统都将可能产生冲突的系统资源给保护起来,组织应用程序直接访问。这些系统资源包括文件、网络、IO、各种设备等。所有的这些操作都必须经由操作系统所规定的方式来进行。在Linux中系统调用使用0x80中断作为系统调用的入口,Windows采

2014-07-01 23:18:22 488

原创 Java学习笔记(1)

一、java的配置和第一个程序1、  java的起源:Sun公司共有三个版本:Java SE:java标准版;                             JavaEE   java企业版                             JavaME  java微型版2、  javac.exe对java编译的工具3、配置环境变量   在path中配置JA

2013-05-04 21:04:45 498

原创 动态链接库学习笔记

动态链接库学习笔记在导入的函数可以用extern声明,也可以用_declspec(dllimport)声明。例如:_declspec(dllimport) int add(int a,int b); 通过dumpbin –exports DLL.dll来查看导出的动态链接库的函数。若系统提示dumpbin不是系统的命令,则需要注册dumpbin环境变量,打开VC安装目录的bin

2013-05-03 22:51:02 534

原创 C++网络编程之TCP UDP

网络字节顺序:TCP/IP采用16/32位高位先存格式 TCP/IP网络应用中,通信的两个进程主要采用C/S模式。服务器要先启动,并根据请求提供相应的服务:1、打开一个通信通道订告知本地主机,它愿意在某一地址和端口上接受客户请求;2、等待客户请求到达该端口;3、接受到重复服务请求,处理该请求并发送应答信号。接收到并发服务请求,要急活一个新的进程(或线程)来处理这个客户请求。

2013-05-03 21:10:21 623

虚拟化技术原理与实现

虚拟化技术原理与实现 随着云计算热潮的兴起,构成其中关键技术之一的虚拟化技术再次成为行业内外的焦点,

2018-04-03

金仓数据库优化

该文档描述了金仓数据库性能瓶颈分析,问题解决,优化建议等等

2017-12-18

淘宝 天猫 双11 抢红包 助手

用于2015 淘宝双十一促销抢红包 自动抢

2014-11-01

MFC换肤文件

MFC皮肤,不要老是用MFC那丑陋的面貌了,开发要用新的皮肤

2013-05-14

俄罗斯方块C++类的实现

用C++类结合MFC开发的一块俄罗斯方块,可以自定义游戏的行列和方块大小

2013-05-09

安卓手机变网络摄像头

让手机的摄像头提供给电脑使用,本人亲自尝试了,绝对能用,按照里面的说明文档操作即可

2013-05-03

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

TA关注的人

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