自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (7)
  • 收藏
  • 关注

原创 C语言中的格式化输出

概述与其他语言相比,C语言提供的字符串处理的方式比简陋,格式化输出方式也相当简单,但进行基本的字符串处理已经足够了。我们常用的print函数是一个格式化处理经典的实现,这一类函数包括:printffprintfsprintfsnprintfvprintfvfprintfvsprintfvsnprintf上述函数共同的思路是根据format提供的格式要求将相应的变量转化成易读或者易解析的字符串,进而输出到文件、终端或者内存中。在一些情况下,为了易读或者易解析,我们需要提供一些相对整

2021-01-28 21:40:16 1787

原创 iscsi:IO操作流程(五)——IO完成处理

概述前面讲到,iscsi initiator实现过程采用了多级的异步模式,通过异步模式使IO操作阶段能够批量处理。这种异步机制的存在主要为了提升系统的吞吐量。从设计的角度,考虑采用异步操作机制的任务往往至少满足以下几个条件:并发能明显提升系统的IO吞吐。作为iscsi服务,其瓶颈点往往在磁盘上。但是多块磁盘可以并行进行读写,因此,IO的并发可以充分利用多个磁盘的带宽。并发可以避免由于某个I...

2018-11-21 10:21:14 1994

原创 iscsi:IO操作流程(四)

系统构建SCSI指令后,将调用scsi_host的queucommand操作,将指令下移到LLD设备层进行处理。scsi_host在iscsi协议中的角色scsi_host在系统中启动承上启下的作用。对上接收上层驱动设备转发的命令,对下连接下层的软件硬件,进行SCSI命令的进一步处理。scsi_host逻辑上是scsi指令从scsi协议层到scsi传输层之间的接口。

2017-11-30 20:05:29 2333

原创 iscsi:IO操作流程(三)

概述当我们讲到scsi命令这个概念时,需要根据上下文去理解。可能指代两个概念

2017-11-21 20:29:15 3081

原创 iscsi:IO操作流程(二)

上次我们讨论了iscsi initiator IO操作需要经过的各个层次,以及每层所涉及的IO数据结构的变化。今天主要讨论IO如何形成SCSI指令并下发的。

2017-11-11 16:07:20 1975

原创 iscsi:IO操作流程(一)

从应用的视角,iscsi展现为一个块设备,即一块硬盘。在Linux操作系统中可以通过fdisk -l看到这块磁盘。iscsi协议所涉及的一系列的组件经过层层虚拟化,在多个层次上其操作与本地硬盘无异。这实际上是一个性能、可靠性、实现多个角度权衡的结果。

2017-11-09 08:53:04 3239

原创 rsyslog数据流分析

rysylog数据流如上图所示。 Linux系统调用syslog及内核的printk将日志分别写入到/dev/log和/dev/kmsg两个设备中。这两个设备在内存中开辟了一定的空间保存系统日志设备。rsyslog从两个设备中获取到日志进行分析和处理。 rsyslog通过input组件实现日志获取逻辑。除了从本地获取日志之外,也提供了通过网络获取日志的接口。这个将表示rsyslog可以收集来源于

2017-10-30 14:01:01 1151

原创 Linux系统中的CPU利用率

CPU利用率是系统性能监控的重要指标。CPU利用率是开发人员系统性能优化的重要参考指标。当CPU总体利用率过高时,开发过程中需要根据具体情况进行考虑,在从程序层面优化还是从部署层面优化。

2017-10-30 13:48:51 3570

原创 iscsi架构分析

iscsi协议是SCSI协议在TCP/IP网络的具体实现。它将SCSI的逻辑模型映射为TCP/IP通道上的具体实现。同时,也提供了相应的路径管理相应的能力,比如target的发现、连接的建立、会话的管理等方面的工作。

2017-10-22 23:25:58 2096

原创 grub2配置原理分析

BootLoader(引导程序)是系统启动之后第一个运行的程序。它的主要作用是加载操作系统并转入操作系统的入口,接下来的系统将由操作系统接管。随着技术发展,计算机系统的部署越来越复杂。从硬件角度,计算机引入了许多新的技术用以提供系统的性能,如SAS接口磁盘、NVMe接口磁盘、APIC等等,从软件角度,系统可能会安装在不同的文件系统上,甚至需要支持RAID、逻辑卷等底层的数据组织架构。复杂的环境对

2017-10-14 19:30:30 7636 1

原创 谈一谈mmap

部分设备驱动提供mmap功能。这个功能是一个非常用意思的调用。他可以使用户空间应用程序直接通过所映射的地址空间访问设备的内存空间。我们知道内核内的所有线程、变量共享同一个地址空间。因此,从更广泛的意义上讲,这是一个非常有意义的用户空间和内核空间共享数据的方式。

2017-09-28 21:57:11 724

原创 原子变量的原理与应用

当多个线程并发执行时,由于CPU随时被抢占,程序的执行就会具有不可预测性。CPU还需要处理各种外围设备的中断。这种不可预测性会变的更随机。我们所期望的程序执行结果有可能会变得不可预期。举例说明:考虑生产者消费者的问题,我们有一个变量counter,生产者增加conter的值,消费者减少counter的值。如下所示:1/*生产者操作P*/2…………3register1 = c

2017-09-15 21:37:24 3824

详实的emacs使用手册

emacs的学习手册,耐心的看看,就会成为emacs高手啦

2010-02-11

Linux 内核的文件预读

Linux 文件预读 算法磁盘I/O性能的发展远远滞后于CPU和内存,因而成为现 代计算机系统的一个主要瓶颈。预读可以有效的减少磁盘的寻道次数和应用程序的I/O等 待时间,是改进磁盘读I/O性能的重要优化手段之一。本文作者是中国科学技术大学自动 化系的博士生,他在1998年开始学习Linux,为了优化服务器的性能,他开始尝试改进 Linux kernel,并最终重写了内核的文件预读部分,这些改进被收录到Linux Kernel 2.6.23及其后续版本中。

2009-06-22

深入理解Linux内核

非常经典的LInux内核讲解资料: In order to thoroughly understand what makes Linux tick and why it works so well on a wide variety of systems, you need to delve deep into the heart of the kernel. The kernel handles all interactions between the CPU and the external world, and determines which programs will share processor time, in what order. It manages limited memory so well that hundreds of processes can share the system efficiently, and expertly organizes data transfers so that the CPU isn't kept waiting any longer than necessary for the relatively slow disks.The third edition of Understanding the Linux Kernel takes you on a guided tour of the most significant data structures, algorithms, and programming tricks used in the kernel. Probing beyond superficial features, the authors offer valuable insights to people who want to know how things really work inside their machine. Important Intel-specific features are discussed. Relevant segments of code are dissected line by line. But the book covers more than just the functioning of the code; it explains the theoretical underpinnings of why Linux does things the way it does.

2009-06-22

Object-Oriented Programming With ANSI-C

Object-oriented programming is the current cure-all — although it has been around for much more then ten years. At the core, there is little more to it then finally applying the good programming principles which we have been taught for more then twenty years. C++ (Eiffel, Oberon-2, Smalltalk ... take your pick) is the New Language because it is object-oriented — although you need not use it that way if you do not want to (or know how to), and it turns out that you can do just as well with plain ANSI-C. Only object-orientation permits code reuse between projects — although the idea of subroutines is as old as computers and good programmers always carried their toolkits and libraries with them.

2009-06-19

C++代码设计与重用

C++代码设计的重用模式介绍。是一部比较好的设计模式参考资料

2009-06-19

Linux的SCSI设备实现分析

SCSI has emerged as a popular protocol in the storage world. This document is a guide to understanding the implementation of SCSI in the Linux 2.6.X kernel. This project analyzes the code implementing the SCSI protocol, provides the big picture involving the IO, explains the entry points, data structures and the exported functions. The project is intended as a reference for experimenters and developers who would be working on the SCSI module in Linux

2009-03-16

面向对象存储系统NLOV_齐路

面向对象存储系统,对象是数据存储的基本单元,提供类似文件的访问接口

2009-03-13

空空如也

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

TA关注的人

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