IT技术博客大学习 共学习 共进步
首页 / 狂Shell
IT 2013-05-20 23:23:31 / 累计浏览 3,340

引导扇区实现

所谓引导扇区是指设备的第一个扇区,用于加载并转让处理器控制权给操作系统, 当计算机启动加电自检时,会寻找启动盘,现在电脑一般启动程序都在硬盘上,说到这可以是什么程序可以从硬盘中把程序读到计算机的内存(RAM)呢?是大部分人都知道的BIOS,那BIOS又是怎么启动的呢?我们从开机启动,只能先启动硬件,要想能够运行程序,首先需要硬件能够知道程序在哪里,在Intel的所有80x86系列的CPU中都为加电就进入16位的实模式下运行,什么为实模式?实模式是x86兼容CPU的操作模式,它是一个20bit的存储器的地址空间(2^20=1M可被寻址),其实以后我会说到保护模式,你就知道实模式的渺小(寻址范围远远不够),接着说,当加电的时候,CS:IP的值会是:0xF000:0xFFF0,物理地址会是:段地址(CS)*16+偏移地址(IP),比如刚才的计算结果为0xFFFF0就为BIOS的地址,所以加电后,硬件会首先执行这个地址的代码。

IT 2013-05-19 23:32:29 / 累计浏览 4,060

文件系统的树形结构改善构思

今天有网友在抱怨文件系统的树形结构不好用, 比方说:有<>既属于C语言文件夹的,也属于C++文件夹的,但又不想把C语言和C++语言两个分类归为一块,也不想每个文件夹都复制一份,这样会很浪费空间,那有什么好的思路可以改善文件系统的树形结构呢, 一些网友和我都建议用tags,比如构思文中的图。

IT 2013-04-07 13:18:50 / 累计浏览 7,420

深入浅出插入类排序算法(直接插入, 折半插入, 希尔排序)

折半插入排序也是插入排序的一种, 和直接插入排序区别在于插入点不同. 由于插入排序是在一个前面已经排好的序列中进行插入操作, 直接插入是需要进行顺序从右到左进行比较(可以想下刚才我们的插入扑克牌的算法), 假如对 10, J, Q, K, A 要插入9 ,直接插入排序要从A开始依次比较, 一直比较到10. 而假如我们在即将要插入9的时候看到的是Q, 因为Q > 9 这样就知道9应该插入在牌的左边位置. 这种算法就是折半排序算法.

IT 2013-04-07 13:17:17 / 累计浏览 6,980

深入浅出交换类排序算法(冒泡排序,快速排序)

冒泡排序在众多排序算法中算比较简单的一个, 基本思想是, 重复的进行整个数列的排序, 一次比较两个元素(两两排序),如果它们顺序不符合就交换,重复这样直到数列没有再需要交换的数为止(结束条件).就好像气泡一样, 轻的气泡会往上漂浮,在不断漂浮的过程中,发生了两两交换过程, 所以叫冒泡排序.

IT 2013-04-07 13:15:28 / 累计浏览 4,540

深入浅出选择类排序算法(简单选择排序,堆排序)

简单选择排序的基本思想是:一次选定数组中的一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数min=i,从这个数的下一个数开始扫描直到最后一个数,并记录下最小数的位置min,扫描结束后如果min不等于i,说明假设错误,则交换min与i位置上的数。(也即每次从数列中找出一个最小的数放到最前面来,再从剩下的n-1个数中选择一个最小的,不断做下去。

IT 2013-04-07 13:14:34 / 累计浏览 4,000

数学中的极限思想求时间复杂度

一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n)),一般人认为,T(n)是f(n)中增长最快的项/此项的系数.