自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 I/O复用之select

概述 很多时候我们需要一个进程有着一种让内核一旦发现进程指定的一个或多个I/O条件就绪就通知进程的能力,这种能力就叫做I/O复用首先Unix下可用的I/O模型共有5种:阻塞式I/O 即等待的数据如果没到那么就一直沉睡,直到需要的数据到达或者发生错误才返回。 非阻塞式I/O 当所请求的I/O操作非得把本进程投入睡眠才能完成时,不要把本进程投入睡眠,而是返回一个错误。I/O复用 阻塞在

2016-10-31 09:28:30 1400

原创 TCP连接的部分细节及边界情况分析

图中即一个简单的socket建立连接的过程, 可以看到服务器端需要执行4个系统调用来准备好接收客户端的socket连接,而客户端在建立socket完成后,即可调用connect去主动连接服务器。关于5个系统调用的具体含义详情可以去看unp,这里不多赘述,不过在一开始学习socket的时候我就对此处抱有疑问(也是没有细心看书导致),这里对我的疑问做一个解答。Q:关于服务器与客户端的流程比较,为什么服务

2016-10-31 09:22:11 1409

原创 库与运行库

一、内存关于程序的运行,不得不提到内存方面的内容,那么首先就对一个进程虚拟地址空间的布局用一张图来看清楚 这张图基于32位Linux系统,即起始地址为0x08048000,可以看到顺序为只读段(代码段等)、读写段(数据段、bss段等)、堆(向上即高地址扩展)、用于堆扩展的未使用空间、动态库的映射位置(0x40000000开始)、之后就是栈(向下即低地址扩展)以及用于栈扩展的未使用空间、最后是内

2016-09-04 18:02:47 1852

原创 动态链接及其部分实现细节

一、动态链接的好处前面说了静态链接的流程,提到了静态链接与动态链接的不同之处以及各自的优势:静态链接的优势在于其优秀的可移植性,但是相对应的其所占空间大小也很大,且还有在对程序的更新、维护方面也有着问题。 动态链接则消除了这方面的问题,即使得空间不再浪费,更新一个程序也变得不再麻烦。浪费内存问题的解决假设有两个程序a和b,如果两个都依赖于Libc.o这个模块,那么当我在系统中同时执行这两个程序时,

2016-09-04 17:46:12 4171

原创 装载的简单介绍

一、什么是装载? 程序执行时所需要的指令与数据必须都在内存中才能正常运行,这些需要的数据装入的过程即为装载装载一般分为两种: 1、静态装入 将所需要的指令和数据全部装入内存中,这时最简单的方法2、动态装入 利用程序运行时的局部性原理,将程序最常用的部分留在内存中,不太常用的数据放于磁盘中对于上面的第一种情况,如果可执行文件太大,程序所需要的内存数量大于物理内存的数量时,第一种装载

2016-09-04 16:40:58 3331

原创 编译与静态链接

最近一段时间做了关于一些软件的交叉编译工作,由于觉得并没有学到许多东西,所以抽时间看了关于静态链接方面的内容,读了一部分《程序员的自我修养——链接、装载与库》,记录一些读书笔记及自己的总结。一、GCC做了什么?我们在Linux中经常使用gcc 源文件名.c -o 目标可执行文件名对一个编写好的C文件进行编译生成可执行文件,那么这之间的细节呢? 这里源文

2016-04-13 16:59:27 3859 1

原创 VFS主要数据结构与sys_read浅析

文件系统即对文件存储器空间进行组织和分配。 linux采用树状结构,最上层为根目录,而其他所有目录都从根目录出发,即只有一棵树,而DOS和Windows则不同,其也是树状结构但最上层为磁盘分区的盘符,即有多少分区则有多少棵树。linux这样设计有助于对其多用户下的系统文件及用户文件进行管理为了linux的开放性,设计人员必须将不同文件系统的操作和管理纳入统一的框架,于是虚拟文件系统(VFS)就为此

2015-12-07 19:54:05 811

原创 中断浅析

intel x86支持256种向量中断 中断分为屏蔽中断与非屏蔽中断,而异常分为故障和陷阱0~31对应异常和非屏蔽中断 32~47对应屏蔽中断(即I/O设备引起的中断) 47~255对应软中断,软中断? 其中128号即0x80用于实现系统调用中断描述符表IDT实地址模式下原来的中断向量表被由于具体位数的变化,名称也变为中断描述符表,变化后每个表项称为门描述符,由8个字节组成。 这

2015-11-23 18:47:26 525

原创 pick_next_task与红黑树浅析

一、schedule()中关键步骤pick_next_task的分析在整个函数的流程中,pick_next_task是一个十分重要的步骤,它负责找到当前cpu的运行队列中最应该运行的那个进程,那么它是如何实现的呢? 首先它的实现是依靠钩子函数,每个调度类的具体实现都是靠钩子函数来完成的,这里说下对钩子函数的理解: 钩子函数就是提前声明一个指向函数的指针,其中也声明好了关于此函数的参数以及其的返

2015-11-03 17:46:37 1080 1

原创 schedule与CFS算法

一、调度类与调度实体 调度类是系统为了对不同进程调度进行区分而用的数据结构,其中记录了关于调度不同进程所需要的函数,每种调度算法都有其自己的调度类 调度实体是每个进程都有的数据结构,其中记录了调度此进程所需要使用的所有信息,且普通进程和实时进程有着不同的调度实体 关于不同种类的进程,主要是3种,普通进程、实时进程以及空闲进程(idle)#define SC

2015-10-25 16:26:23 1092

原创 do_fork源码阅读

fork、vfork和clone进程是动态的程序,当程序开始运行就称其为进程Linux系统中提供了3个API来给我们使用,用于创建新的进程

2015-10-19 23:05:12 596

原创 C-存储类型、初始化、链接属性的记录

存储变量值的内存类型即存储类型。总共三个地方:普通内存、运行时堆栈和硬件寄存器1、在代码块外声明的变量存储于静态内存中,不属于堆栈,即静态变量      程序运行之前创建,整个执行期间都存在2、代码块内部即存储于堆栈内,自动变量,程序执行完这个代码块即删除此中的自动变量        程序执行到此代码块时,自动变量创建,代码块执行完毕后则消失        再次创建的话,值

2015-10-02 17:34:10 467

原创 对于用u盘安装CentOS后不插u盘就无法开启的解决过程

之前就说了要解决不插U盘就无法启动CentOS系统的问题,我确实解决了,不过最后是通过重装系统的方法解决的,没什么技术含量啊。。。当时急着处理都忘了对解决的过程进行截图记录了。。。   在网上查找了下,发现大多的方法就是要重新安装grub到硬盘的MBR中,之后修改/boot/grub/grub.conf,一般来说就是输入grub进入grub命令行,然后顺序执行root(hd0,0)   >  

2015-07-27 10:51:30 4662

原创 vim编辑器及bash基础学习的知识点总结

vim编辑器总结:直接vi 文件名,无此文件则创建,有此文件则直接打开       (在后面学习中才发现用的都是vim,因为系统自动将vi设定为vim的别名,分辨方法就是vim有颜色且右下角有光标的标示而vi没有。)总共三个模式:一般模式,编辑模式,命令行模式      输入i进入编辑模式,其实还有其他的按键可以实现在此行上插入一行并进入编辑模式等功能,但是我还是习惯按i后在用编辑模式

2015-07-27 10:43:53 624

原创 对于linux常用命令的学习与总结 附上开机默认启动的图形界面修改为字符界面以及挂载光盘的过程

基础命令:日期与时间:date      日历:cal      计算器:bc      简单的nano编辑器:nano 文件名 一些学到的快捷键:Ctrl+L  清屏              Ctrl+C  切断正在进行的程序              Crtl+D  等同于exit的作用 Tab的作用:命令、文件的补全       敲击的命令或文件名不

2015-07-17 11:45:11 985

原创 记录曲折的装机过程

初学linux,对于练习机没有选择虚拟机进行安装,而是选择用自己的电脑来进行真实的装机,安装windows和linux双系统,首先空出了一部分磁盘的空间,大约有40G的空间,其实够用就行了,不用那么大,毕竟练习机以后肯定要重装的,看到有些人说的对于linux的系统没有装过10遍以上不要说自己学过linux,表示自己还有很长的路要走啊。。      初次装机首先准备使用光盘进行安装,选择了Cen

2015-07-17 11:25:12 508

原创 记录自己linux学习的开始

大学毕业的暑假,即将进入研究生生活,对于研究生的方向确定为是linux,因为大学里接触到的编程不多,而且linux上的更少,所以需要对linux进行从基础开始的学习,比起许多人来说,我在这时才开始学习linux及其编程已经很晚了,但是我还是会坚持努力。接下来会将自己关于linux学习方面的一些总结以及一些问题的解决方法分享上来。

2015-07-16 20:37:34 348

空空如也

空空如也

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

TA关注的人

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