2 JT同学

尚未进行身份认证

我要认证

我是程序员JT,专注分享C/C++,Linux应用、网络编程、内核知识。

等级
TA的排名 2w+

深入浅出MySQL事务(二)MVCC的实现原理

深入浅出MySQL事务(二)视图实现原理文章目录深入浅出MySQL事务(二)视图实现原理一、视图是如何创建的?二、查询逻辑三、更新逻辑四、小结上一篇文章介绍了事务隔离的实现,里面讲到,事务通过创建一个视图,然后根据视图逻辑来获取当前事务看到的数据,你可能会好奇这个视图是何方神圣,本文就来好好讲讲视图的实现原理。一、视图是如何创建的?在InnoDB里面,每个事务都有一个ID,叫做 trans...

2020-02-23 18:05:35

深入浅出MySQL事务(一)事务隔离

深入浅出MySQL事务(一)事务隔离文章目录深入浅出MySQL事务(一)事务隔离一、为什么需要事务?二、隔离级别三、事务隔离的实现四、事务的启动方式五、小结一、为什么需要事务?事务有什么作用?简单的说,事务是确保一组操作要么全部成功,要么全部失败一个最经典的例子就是转账,假设A要给B转账,需要进行一下步骤检查A的余额是否足够减少A的余额增加B的余额如果由于意外,只执...

2020-02-23 11:33:25

深入浅出MySQL索引(二)InnoDB存储引擎的索引

深入MySQL浅出索引(二)InnoDB存储引擎的索引文章目录深入MySQL浅出索引(二)InnoDB存储引擎的索引一、InnoDB的索引模型1.1 主键索引1.2 普通索引二、索引维护三、覆盖索引四、最左前缀原则在上一篇文章中介绍了为什么需要索引,以及常见的索引模型,本文讲介绍InnoDB的索引InnoDB使用B+Tree来组织索引,每个索引都是一棵B+Tree,不过对于主键索引和普通索引...

2020-02-15 23:09:42

深入浅出MySQL索引(一)常见的索引模型

深入浅出索引(一)常见的索引模型文章目录深入浅出索引(一)常见的索引模型一、为什么需要索引?二、常见的索引模型2.1 有序数组2.2 哈希表2.3 二叉搜索树2.4 B-Tree2.5 B+Tree一、为什么需要索引?MySQL的数据存放在数据表中,数据表会被保存在磁盘上,例如下面我们创建一个数据表,那么在磁盘上就会有一个数据表文件来存放数据create table users( id ...

2020-02-15 21:49:46

Linux进程管理(四)进程调度之抢占式调度

Linux进程管理(四)进程调度之抢占式调度文章目录Linux进程管理(四)进程调度之抢占式调度一、抢占式调度二、设置需要重新调度的标志的时机(TIF_NEED_RESCHED)三、进程抢占的时机3.1 用户态的抢占时机3.2 内核态的抢占时机四、总结上篇文章我们将了内核调度分为主动调度和抢占式调度,主动调度我们已经讲解过了,这篇文章我们来讲解一下抢占式调度一、抢占式调度我们说过,进程真正...

2019-11-07 14:44:36

Linux进程管理(三)进程调度之主动调度

Linux进程管理(三)进程调度之主动调度文章目录Linux进程管理(三)进程调度之主动调度一、抢占式调度和主动调度二、主动调度的发生的情况三、schedule 函数四、总结在上一篇文章中,我们讲了Linux进程调度的总体内容,接下来的两篇文章我们将来讨论进程调度具体是什么时候发生的一、抢占式调度和主动调度前面我们说过,进程的切换总是通过 shedule 函数发生的,而 schedule ...

2019-11-06 14:04:40

Linux进程管理(二)进程调度

Linux进程管理(二)进程调度文章目录Linux进程管理(二)进程调度一、进程调度解决什么问题?二、进程调度整体框架三、优先级与调度策略四、调度类五、运行队列和调度实体六、FIFO 和 RR 调度算法七、完全公平调度算法(CFS)八、总结一、进程调度解决什么问题?我们在使用电脑的时候,比如打开一个视频剪辑器,一个文本编辑器,可以认为它们都是一个进程。假如CPU是单核的,那么在同一时间只能运...

2019-11-03 20:59:48

Linux进程管理(一)进程数据结构

Linux进程管理(一)进程数据结构文章目录Linux进程管理(一)进程数据结构双向链表任务ID信号处理进程状态进程调度运行统计信息进程亲缘关系内存管理文件与文件系统进程内核栈栈结构current宏Linux内核中使用 task_struct 结构来表示一个进程,这个结构体保存了进程的所有信息,所以它非常庞大,在讲解Linux内核的进程管理,我们有必要先分析这个 task_struct 中的各...

2019-10-27 16:59:46

linux图像显示(三)使用libjpg处理jpg图片

linux图像显示linux图像显示(一)framebuffer操作linux图像显示(二)bmp图片linux图像显示(三)使用libjpg处理jpg图片linux图像显示(四)使用libpng处理png图片linux图像显示(五)使用freetype处理矢量字体移植libjpg移植libjpeg到arm板上,我们主要是要得到动态链接库.so,静态链接库.a,头...

2018-12-09 15:43:48

Linux进程间通讯(五)信号量

Linux进程间通讯(五)信号量文章目录Linux进程间通讯(五)信号量一、信号量集的创建二、信号量的设置三、信号量的PV操作四、SEM_UNDO标志的含义五、总结一、信号量集的创建信号量集的创建需要通过系统调用 semget,其定义如下(这里需要注意的是,semget创建的是一个信号量集合,也就是一个集合是可以包含多个信号量的)SYSCALL_DEFINE3(semget, key_t,...

2019-10-22 14:15:14

Linux进程间通讯(四)共享内存

Linux进程间通讯(四)共享内存文章目录Linux进程间通讯(四)共享内存一、IPC总览三、将共享内存映射到进程虚拟地址空间四、访问共享内存五、总结一、IPC总览在内核中,对于共享内存、消息队列、信号量都是使用统一的机制管理起来的,都叫做 ipcxxx为了维护这三种进程间通讯的机制,内核定义了一个三项的数组,如下struct ipc_namespace {...... struct...

2019-10-21 20:02:49

Linux进程间通讯(三)管道

Linux进程间通讯(三)管道文章目录Linux进程间通讯(三)管道一、匿名管道二、有名管道三、总结一、匿名管道匿名管道通过系统调用 pipe 创建,其定义如下int pipe(int fd[2])通过这个系统调用,可以在内核中创建一个管道,返回两个文件描述符,表示管道的两端,一个用于读,一个用于写下面看一看内核时如何实现的SYSCALL_DEFINE1(pipe, int _...

2019-10-19 17:25:23

Linux进程间通讯(二)信号(下)

Linux进程间通讯(二)信号(下)文章目录Linux进程间通讯(二)信号(下)一、信号的发送二、信号的处理三、总结上一篇文章讲解了信号的注册,这篇文件讲解信号的发送和信号的处理一、信号的发送我们可以直接通过 kill 或者 sigqueu 系统调用,给某个进程发送信号,也可以通过 tkill 或者 tgkill 给某个线程发送信号。虽然方法很多,但是最终调用的都是 do_send_sig...

2019-10-18 21:30:25

Linux进程间通讯(一)信号(上)

Linux进程间通讯(一) 信号(上)文章目录Linux进程间通讯(一) 信号(上)一、信号概述二、注册信号三、总结一、信号概述在Linux中,当遇到某些紧急的情况,可以给进程发送信号,紧急处理一些事情在Linux中,定义了许多信号,可以使用 kill -l 命令来查看# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4...

2019-10-18 18:50:09

Linux文件系统(四)文件缓存

Linux文件系统(四)文件缓存文章目录Linux文件系统(四)文件缓存一、系统调用层和虚拟文件系统层二、ext4 文件系统层2.1 直接读写2.2 带缓存的读写三、总结前几篇文章讲解了文件系统的挂载和文件的打开,这篇文章讲解文件的读写一、系统调用层和虚拟文件系统层文件的读写就是通过调用 read、write 系统调用来实现的,由于读写的实现过程很多逻辑都是相似的,所以两部分放在一起讨论...

2019-10-16 19:30:35

Linux文件系统(三)虚拟文件系统

Linux虚拟文件系统文章目录Linux虚拟文件系统一、文件系统框架二、挂载文件系统三、打开文件一、文件系统框架文件系统需要许多层的组件一起协作,具体怎么协作,下面来看一看在应用层,进程操作文件可以通过 open、read、write 等系统调用在内核,每个进程都需要对其打开的文件,维护一定的数据结构在内核,整个系统打开的文件,也需要维护一定的数据结构Linux可以支持多大数十种...

2019-10-15 17:27:33

Linux文件系统(二)磁盘文件系统

磁盘文件系统文章目录磁盘文件系统一、inode与块的存储二、inode 位图和块位图三、文件系统的格式四、目录的存储形式五、软链接和硬链接的存储格式六、总结我们常见的磁盘长下面这样子,左边中间圆是磁盘的盘片,右边是抽象出来的图每一层有多个磁道,每个磁道有多个扇区,每个扇区大小为512个字节文件系统是安装在磁盘之上的,本文将讲解Linux主流的文件系统 —— ext系列的文件系统格式一、...

2019-10-13 12:43:24

Linux文件系统(一)文件系统概述

Linux文件系统文章目录Linux文件系统一、文件系统的功能规划二、文件系统相关的命令三、文件系统相关的调用四、总结一、文件系统的功能规划文件系统是用来管理磁盘空间,存储文件的一套软件,它需要满足下面几个特点文件系统要有严格的组织形式,使得文件能以块为单位存储文件系统需要索引区,用来查找存储文件的多个块存放在哪个区域如果文件系统的某个文件时热点文件,最近经常被访问,那么...

2019-10-13 09:36:07

Linux内存管理(一)Linux进程空间管理

Linux进程空间管理文章目录Linux进程空间管理一、用户态和内核态的空间划分二、用户态的布局三、内核态的布局一、用户态和内核态的空间划分每个进程或者线程都是一个task_struct,它们都有一个mm_struct用于管理内存struct mm_struct *mm;在mm_struct中有这样的一个变量unsigned long task_size; /* size of...

2019-10-11 22:02:36

Linux内存管理(五)内核态内存映射

Linux内核态内存映射文章目录Linux内核态内存映射一、内核页表二、vmalloc 和 kmap_atomic 原理三、内核缺页异常四、总结首先,需要直到,内核态的内存映射机制,主要包含以下几个部分内核态内存映射函数 vmalloc、kmap_atomic 是如何工作的内核态页表放在哪里?是怎么工作的?swapper_pg_dir 是怎么回事?出现了内核态缺页异常应该怎么办?一...

2019-10-11 21:59:31

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。