自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

墨篙和小奶猫

现实者不功利,理想者不空谈;仁爱者不软弱,刚直者不偏激

  • 博客(96)
  • 资源 (1)
  • 收藏
  • 关注

原创 运行库:Windows下MSVC CRT运行库封装fread()函数解析

在介绍运行库的过程中,强调过运行库是具体语言实现的程序和操作系统之间的抽象层。经验表明,任何系统级的软件工程,IO功能的封装历来是最具有挑战性的。以下以Windows下MSVC CRT运行库中封装的文件读取函数fread()的实现思路为demo,演示运行库的功能封装。#define size_t unsigned intsize_t fread( void * buffer, siz

2017-10-18 23:25:51 1025

原创 Windows下动态链接之一:DLL插件机制的装载和使用

目录:Windows和Linux下动态链接的原则不同映像基地址RVADLL文件的符号导出声明PE文件头下的DataDirectoryDLL文件的符号导出表PE文件的符号导入表DLL显式运行时加载链接demo1. Windows和Linux下动态链接的原则不同Linux系统以.so共享对象设计共享库,并在设计共享对象的过程,花费很多精力实现.so对象的代码段.text多进程共享,提升

2017-10-18 23:18:23 5439

原创 程序底层工具:cl编译器

说惯了面向硬件的操作系统,也应该说说操作系统的主要使用对象–用户程序。要深入理解程序的运作过程,则需要了解编译原理、链接、装载和运行库等知识。一般都是IDE封装了这些过程,一个简单的Shift+F5指令封装了“预编译+编译+汇编+链接+装载”全过程,而要想分割独立地控制或挖掘这些子过程,则不得不借助一些工具,如预编译编译程序cl、汇编器as、链接器link、查看工具dumpbin(针对Windows

2017-10-15 18:15:31 6455

原创 运行库:变长(可变)参数原理

任何C语言程序要想能够得到运行,都离不开背后的一套庞大的代码来进行支持,这一套语言相关的代码便是C语言运行库CRT(C Runtime Library),某种意义上运行库可以看成是C语言的程序和不同操作系统之间的抽象层。一个C语言运行库大致包含了以下功能: /1.启动初始化与退出清理:包括入口函数及入口函数所依赖的其他函数集合; /2.标准函数:由C语言标准规定的C语言标准库所拥有的函数实现,如

2017-10-15 17:03:27 377

原创 运行库:I/O初始化之“文件”句柄管理

此前讨论过一般认为的程序入口main()函数并非实际上程序真正的入口,在进入main()程序员设计的运算逻辑之前,运行库需要完成一系列的准备工作,包括参数入栈、堆初始化以及I/O初始化。在操作系统中,I/O一般是指代硬件外设或磁盘,但从软件的角度,任何具有输入输出操作的都可抽象为“文件”,一般在系统中都是用句柄Handle(类似指针)来指代进程中需要打开的某一具体文件,而进程中也配备中一个二维数组“

2017-10-13 17:56:26 829

原创 运行库:程序进入main()之前发生了什么

1、linux下glibc运行库运行逻辑正常可执行文件用glibc运行的函数调用顺序 _start -> __libc_start_main -> exit -> _exit;_start: xorl %ebp, %ebp //异或操作,将结果赋值到第一个参数上, ebp设置为0正好可以体现出_start作为最外围函数的地位 popl %esi //将当前堆栈中argc弹出赋

2017-10-13 00:28:32 734

原创 程序底层查看工具之dumpbin

说惯了面向硬件的操作系统,也应该说说操作系统的主要使用对象–用户程序。要深入理解程序的运作过程,则需要了解编译原理、链接、装载和运行库等知识。一般都是IDE封装了这些过程,一个简单的Shift+F5指令封装了“预编译+编译+汇编+链接+装载”全过程,而要想分割独立地控制或挖掘这些子过程,则不得不借助一些工具,如预编译编译程序cl、汇编器as、链接器link、查看工具dumpbin(针对Windows

2017-10-12 23:54:42 2350

原创 Linux内存管理

操作系统的内存是整个计算机缓存计算体系的关键部分。CPU是指令操作和计算的核心,但是CPU只相当于机械臂,相应的程序的指令集合和数据段等信息必须加载到内存中,类似于送上流水线,等待CPU读写执行更新,从而完成计算任务。内存相比于硬盘读写速度更快(100倍),当价格也更高(8G内存条在博客编写时价格在800rmb,2t引动硬盘大概在600rmb,比较可知,1G内存空间是1G硬盘空间价格的300倍左右)

2017-09-29 23:44:02 359

原创 Linux文件系统之一:inode节点和inode节点包含的block寻址信息

索引节点的提出对于存储在磁盘空间上的文件,实现快速的读写和索引是影响用户使用体验的关键。和PCB类似的文件控制模块FCB提供了足够的文件属性,在搜索匹配过程中,显然文件名匹配是搜索过程的关键,并且是唯一标识符,可FCB拖家带口,比较时显然过于臃肿,其他信息暂时都用不上。操作系统一般又是将FCB组成的文件目录放在磁盘上,对较为庞大的文件系统,显然需要多次进行磁盘IO读写。举例:假设一个FCB数据结构大

2017-09-19 23:48:04 4679

原创 操作系统&文件管理之FCB

操作系统的外存(主要指磁盘)管理模块根据各磁盘块的当前状态(忙和闲:磁盘管理程序可配置bitmap数据结构,用来统一表示各磁盘块忙闲情况)可分为两类,一是空闲磁盘块的调度管理,二是已占用了磁盘块的文件管理。本文便讨论已使用了外存存储设备的文件的索引和读取管理。前面提到操作系统的磁盘管理为了和内存管理配合,也是将磁盘分割为最小单元进行统一调度,和内存的页帧概念对应,磁盘管理模块以磁盘块作为最小单元管理

2017-09-13 23:58:39 33300 4

转载 CSDN Markdown模板

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-09-13 22:25:38 2719

原创 从ODX(Open diagnostic Data eXchange)谈车联网应用绕不开的底层网络“基建”

前言:“车联网应用代表着资本的下一个风口,也是汽车电子技术竞争的重要角斗场。但与其谈些美妙的应用设想,不妨构想下让为这些应用成为现实的“基建工程”,即真正地让车和外部通信连接的网络系统。”高级辅助驾驶、智能驾驶乃至无人驾驶等应用层的概念推陈出现,让汽车行业成为当下诸多新技术的角斗场。工信部在2017年年初提出“智能网联汽车”产业标准体系的征求意见稿。摘录官方定义,智能网联汽车是指搭载先进的车载传感器

2017-09-06 23:30:33 1791 1

原创 浅谈HIL硬件在环技术和台架实验的互补关系

随着汽车电子系统的不断发展,电控单元数量和汽车控制功能不断增加,多控制器协同、在线诊断、智能辅助驾驶乃至无人驾驶的概念推陈出现,让整个行业都已经意识到虚拟汽车开发技术的重要性。这里涉及到多种不同场景的概念:MIL(model in loop)、SIL(software in loop)、HIL(hardware in loop)、VIL(vehicle in loop)、DIL(driver in

2017-09-04 20:06:12 9124 1

原创 Linux磁盘空闲空间调度管理

操作系统的磁盘管理为了和内存管理配合,也是将磁盘分割为最小单元进行统一调度,和内存的页帧概念对应,磁盘管理模块以磁盘块作为最小单元管理磁盘(常见的磁盘块为1KB,对应2个512B扇区,磁盘块是OS概念,磁盘驱动读取是以扇区作为最小单元)。1.数组表格和链表管理继承内存页帧的段页式管理思想,自然可以想到磁盘管理的空闲空间表法和空闲块链法。前者是指为所有空闲区建立一张空闲表,每个空闲项表示该空闲区的序号

2017-08-29 23:33:55 5392 1

原创 语法分析

到了一定程度,为了提升对程序设计的认知深度,了解编译原理是无法回避的MidStone。编程语言种类繁乱多样,不同的专业领域都有某一具体语言的拥趸,并且彼此间往往当成梗一样的彼此取笑逗乐,如静态语言和动态语言优劣之争,Python、Perl和Ruby的脚本之王争论,Ocmal和Scheme函数式编程简洁之争……但抛去具体使用场景而谈论编程语言的优劣,无疑是浅薄且不负责任的,无益于方案设计和功能实现。因

2017-08-22 23:34:28 733 1

原创 从《大数据》一书谈起(上)

《大数据》一书的关键思想是随着时代的发展,存储、计算和处理技术手段的跃进可以使得人们运用更跳跃的想象,从更多维的视角对研究对象提出更野心的诉求,而这一切却是我们大多数人所不自知的。 它以美国社会关于信息自由和个人隐私的博弈发展史为着眼点,延伸得探讨了“大数据”的技术发展以及“大数据”的种种雏形技术手段和运用案例对于社会生活、经济形态和政治生态的影响。某种意义上,就如同KK在《科技想要什么》中提出的

2017-08-07 22:39:22 307

串口读取程序

通过java程序调用本机上的串口!希望对正在找串口程序的你可以提供帮助!!

2012-12-14

空空如也

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

TA关注的人

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