风清扬

大风起兮云飞扬

LINUX内核研究----IO复用函数poll内核源代码深度剖析

2018-02-25 22:02:42

阅读数 109

评论数 0

LINUX内核研究----IO复用函数epoll内核源代码深度剖析

select和poll的效率瓶颈有两个    1、每次调用这些函数的时候都需要将监控的fd和需要监控的事件从用户空间拷贝到内核空间,非常影响效率。而epoll就是自己保存用户空间拷入的fd和需要监控的事件,只需在调用epoll_ctl的时候就把所有的fd和需要监控的事件只进行一次从用户空间到内核空...

2018-02-25 21:45:42

阅读数 644

评论数 0

LINUX内核研究----C/C++内存管理glibc运行库底层ptmalloc内存管理源码分析总结

基础知识:32位进程的虚拟地址空间64位进程的虚拟地址空间应用程序的堆栈从最高地址处开始向下生长,.bss段与.Stack之间的空间是空闲的,空闲空间被分成两部分,一部分为heap,一部分为mmap映射区域。Heap和mmap区域都可以供用户自由使用,但是它在刚开始的时候并没有映射到内存空间内,是...

2018-02-24 20:43:46

阅读数 148

评论数 0

LINUX内核研究----内核角度看fork(),clone(),vfork() 的异同

Linux系统将进程的创建与目标进程的执行分成两步第一步是从已经存在的进程那里像细胞分裂一样复制出一个子进程。子进程有自己的task_struct结构和系统的堆栈空间,但是和父进程共享其他所有资源。比如说文件描述符,文件的读写指针都停留在一个地方,父子共用。LINUX为复制提供三个系统调用:for...

2018-02-24 19:49:52

阅读数 394

评论数 0

LINUX内核研究----深入程序加载执行过程

程序的装载执行过程从操作系统的角度来看一个程序最关键的特征是拥有独立的虚拟地址空间。进程的建立:程序启动时,操作系统会新建一个进程来执行该程序,主要分为三个步骤:1、创建一个独立的虚拟地址空间,这一步的映射关系是从虚拟空间到物理内存的映射关系。创建一个虚拟地址空间实际上并不是创建空间,而是内核中创...

2018-02-16 00:19:39

阅读数 308

评论数 0

LINUX内核研究----内核角度看什么是进程

Linux下的进程拥有以下四个要素:进程的四要素:    一、进程有需要执行的代码,也就是CPU指令和被操作的数据。代码相当于进程的剧本,可以和其他进程共用,不一定是该进程所私有。    二、有进程专用的系统堆栈空间。    三、在内核中有描述进程信息和进程占用各项资源的信息的结构体task_st...

2018-02-15 16:11:02

阅读数 88

评论数 0

LINUX内核研究----地址映射的全过程

内核空间的地址映射:物理地址和虚拟地址之间相差0XC0000000虚拟地址 –0XC0000000 ==物理地址物理地址 +0XC0000000 ==虚拟地址并且内核的页面不交换,不进行换出到磁盘中。因为内核要随时准备服务。Inter X86 32 cpu linux  kernel实模式:CPU...

2018-02-15 16:06:34

阅读数 126

评论数 0

LINUX内核研究----系统调用过程分析

系统调用的定义:      因为计算机中的各种资源都是由操作系统统一管理,凡是和系统资源相关的操作都必须通过操作系统来完成,例如IO操作、分配内存、文件操作等。而用户程序是没有权限直接进行这些操作的,所以必须通过某种方式来向操作系统提出服务请求。因此操作系统必须提供一套某种方式的接口,让用户通过这...

2017-10-29 22:23:59

阅读数 185

评论数 0

汇编代码分析----函数的调用堆栈过程(进程内核栈的切换过程)

当栈中保存函数调用所需要的维护信息,我们称之为堆栈帧。堆栈帧一般包括以下几个方面的内容:函数的返回地址和参数临时变量函数调用的上下文信息一个函数的堆栈帧用ebp和esp两个寄存器划定范围ebp寄存器始终指向当前函数栈帧的栈底。esp寄存器始终指向当前函数栈帧的栈顶。堆栈帧是从高地址向低地址增长的。...

2017-10-15 19:48:26

阅读数 337

评论数 0

深入理解静态链接的过程

静态链接的过程各个文件之间都是单独编译的。编译生成可重定位目标文件后,目标文件格式也是ELF可执行文件格式但是并不能运行:根本原因是在编译的时候目标文件并没有分配虚拟地址原因如下:如果是定义在本文件的函数和变量编译器可以为它分配地址,但是如果当前的源文件引用其他文件的函数或者是全局变量,这个时候就...

2017-10-10 22:03:52

阅读数 219

评论数 0

剑指Offer----矩阵中的路径(递归回溯法)

时间限制:1秒 空间限制:32768K 热度指数:134786  算法知识视频讲解 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个...

2019-02-26 14:18:05

阅读数 41

评论数 0

剑指offer----数字在排序数组中出现的次数

时间限制:1秒 空间限制:32768K 热度指数:187371 本题知识点: 数组  算法知识视频讲解 题目描述 统计一个数字在排序数组中出现的次数。   AC code  二分法差找 class Solution { public: int GetNumberOfK(ve...

2019-02-26 13:32:35

阅读数 39

评论数 0

剑指offer----把数组排成最小的数

题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323 class Solution { public: string PrintMinNumber(ve...

2019-02-26 13:19:36

阅读数 38

评论数 0

算法----大数相乘

题目描述 有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。 输入描述: 空格分隔的两个字符串,代表输入的两个大整数 输出描述: 输入的乘积,用字符串表示 示例1 输入 复制 72106547548473106236 9821...

2019-02-25 21:15:05

阅读数 41

评论数 0

C/C++代码:递归遍历当前文件夹下的文件和子文件夹

#include <iostream> #include <io.h> #include <string> using namespace std; void l...

2018-09-01 14:06:33

阅读数 866

评论数 0

腾讯面试题----对字符串中单词出现次数排序总结

#include<iostream> #include<algorithm> #include<map> #include<string&...

2018-05-11 17:08:00

阅读数 153

评论数 0

算法----连续子数组的最大和

题目描述一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3输入描述:输入为两行。 第一行一个整数n(1 <= n <= 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个整...

2018-05-08 15:38:43

阅读数 201

评论数 0

算法----网易笔试牛牛找工作

时间限制:2秒空间限制:65536K为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们。牛牛的小伙伴太多了,于是他只好把这...

2018-05-08 15:34:01

阅读数 94

评论数 0

剑指offer----逆转链表(递归+非递归方式)

/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ //递归版本 class Solution1 { public: ListNo...

2018-05-04 22:26:24

阅读数 80

评论数 0

剑指offer----合并两个升序链表

/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ //非递归写法 class Solution1 { public: ListN...

2018-05-04 22:18:35

阅读数 69

评论数 0

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