3 Nercececece

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 35w+

预备 -- NOTE

在启动时需要BIOS将内核放入内存并执行相应的初始化工作,其后将控制权转移给内核。开始启动时,有一个特殊的硬件电路在CPU的一个引脚上产生一个RESET逻辑值,CPU在识别出RESET信号后将数据总线设为高阻抗状态,地址线强行设为1,并禁用中断。之后就将处理器的一些寄存器设成固定的值,其中最重要的两个寄存器——CS段寄存器被置为0xf000,EIP指令指针寄存器为0x0000 fff0,因...

2019-09-26 18:30:56

Linux启动

从磁盘启动Linux内核需要一个引导装入程序,常见的是LILO。LILO被分为两部分(否则太大无法装入整个扇区),BIOS将程序的第一部分(在引导扇区)装入从0x00007c00开始位置的RAM中,然后这段程序又把自己移到地质0x00096a00,建立实模式栈(0x00096000 ~ 0x000969ff),并把LILO的第二部分装到从地址0x00096c00开始的RAM中。第二部分从磁盘读...

2019-09-26 11:44:24

Linux并发 -- 笔记

线程不像进程那样,不是按照严格的父子层次来组织的。和一个进程相关的线程组成一个对等线程池(a pool of peers)。对等(线程)池概念的主要影响是,一个线程可以杀死它的任何对等线程,或者等待它的任意对等线程终止;进一步来说,每个对等线程都能读写相同的共享数据。线程属性/* man pthread_attr_init */typedef struct{ in...

2019-06-20 15:46:47

VFS

1.VFS概述VFS是一种软件机制,也许称它为Linux的文件系统管理者更确切点,与它相关的数据结构只存在于物理内存当中。所以在每次系统初始化期间,Linux都首先要在内存当中构造一棵VFS的目录树(在Linux的源代码里称之为 namespace),实际上便是在内存中建立相应的数据结构。VFS目录树在Linux的文件系统模块中是个很重要的概念,不要将其与实际文件系统目录...

2019-04-28 16:56:45

野指针产生情况--随笔

free完不赋空/指针不赋初值,一般不会犯 中间值传递 int *p = (int *)malloc(); int *a = p; free(a);a=NULL; p就是野指针 函数返回或传递出指向栈空间的指针。函数退出,栈帧销毁,p未赋空。 int * test(int ...

2019-04-27 23:15:12

Shell测试条件

test –d $dir[ -d $dir ] ([ * ]语句前后加空格)1.字符串测试2.数值测试3.逻辑测试4.文件属性

2019-04-25 11:51:52

UML类图

虚线箭头指向依赖;实线箭头指向关联;虚线三角指向接口;实线三角指向父类;空心菱形能分离而独立存在,是聚合;实心菱形精密关联不可分,是组合;上面是UML的语法。在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关...

2019-03-25 11:45:45

正则表达式基本语法

两个特殊的符号'^'和'$'。他们的作用是分别指出一个字符串的开始和结束。例子如下:"^The":表示所有以"The"开始的字符串("There","The cat"等);"of despair$":表示所以以"of despair"结尾的字符串;"^abc$":表示开始和结尾都是"abc"的字符串——呵呵,只有"abc&quo

2019-02-15 11:38:38

红黑树C代码实现

#include "rbt.h"bool Init_RBT(rb_root *T){ if(T == NULL) { T = (rb_root*)malloc(sizeof(rb_root)); if( T == NULL) return false; T->root = NULL; return true; } return false;}N...

2018-08-27 22:45:06

ZIP压缩算法详细分析及解压实例解释

Source:https://www.cnblogs.com/esingchan/p/3958962.html  1、引子压缩可以分为无损压缩和有损压缩,有损,指的是压缩之后就无法完整还原原始信息,但是压缩率可以很高,主要应用于视频、话音等数据的压缩,因为损失了一点信息,人是很难察觉的,或者说,也没必要那么清晰照样可以看可以听;无损压缩则用于文件等等必须完整还原信息的场合,ZIP自...

2018-08-10 17:56:21

linux多线程 函数

#include<pthread.h>pthread_self()/pthread_equal() //获得ThreadIDpthread_attr_init()/pthread_attr_setdetachstate()/… //创建一个线程前设置 pthread_create() //创建一个线程 pthread_detach()pthrea...

2018-06-05 17:26:30

[C++]函数调用栈

 程序的执行过程可看作连续的函数调用。当一个函数执行完毕时,程序要回到调用指令的下一条指令(紧接call指令)处继续执行。函数调用过程通常使用堆栈实现,每个用户态进程对应一个调用栈结构(call stack)。编译器使用堆栈传递函数参数、保存返回地址、临时保存寄存器原有值(即函数调用的上下文)以备恢复以及存储本地局部变量。     不同处理器和编译器的堆栈布局、函数调用方法都可能不同,但堆栈的基本...

2018-05-09 00:13:55

<笔记-Unix系统编程1>系统调用

系统调用与C语言调用很相似,以X86-32为例,有以下步骤:1.调用C语言函数库中的外壳(Wrapper)函数,发起系统调用。2.如有参数,外壳函数要保证所有参数可用并将它们复制到特定寄存器供内核使用3.为了区分各个系统调用,外壳函数还需要将系统调用的编号复制到CPU寄存器中(%eax)4.此处还是外壳函数执行中断指令(int 0x80),是处理器从用户态切换到内核态,执行中断0x

2018-01-10 18:18:30

笔记总结--c++继承体系

1.但是一个派生类的指针可以安全地转化为一个基类的指针。这样删除一个基类的指针的时候,C++不管这个指针指向一个基类对象还是一个派生类的对象,调用的都是基类的析构函数而不是派生类的。如果你依赖于派生类的析构函数的代码来释放资源,而没有重载析构函数,那么会有资源泄漏。所以建议的方式是将析构函数声明为虚函数。也就是delete a的时候,也会执行派生类的析构函数。

2018-01-10 16:49:02

数组a[] -- a和&a

#include//using namespace std;int main(){/* 1) char a[4]={0}; for(int i = 1; i <= 4;i++) { printf("%d\n",a+(i-1)); a++; //数组标志a不可作为leftvalue。编译缺少leftvalue出错 } return 0; //------

2017-12-28 18:07:21

Linux进程间通信——使用消息队列

下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。有关命名管道的更多内容可以参阅我的另一篇文章:Linux进程间通信——使用命名管道一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。  每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞

2017-12-08 18:33:43
勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。