摘要: 1. 系统加电,CPU RESET,进入实模式,跳到地址0xFFFFFFF0,此处是BIOS,执行BIOS-ROM 代码,进行系统自检2. 初始化中断向量表 地址是03.BIOS将可启动设备的第一个扇区(磁盘引导扇区,512字节,即就是bootsect.S)读入内存绝对地址0X7C00处,并跳转到这个地址。启动设备通常是软驱或者硬盘4.把自己移到绝对地址0x90000处,并调转到那里继续执行。5.通过BIOS提供的读磁盘调用"int 0x13"从磁盘上读入setup和内核的映像,将(boot/setup.S)2kB字节的代码读入内存0x90200处,将内核镜像载入0x100 阅读全文
posted @ 2013-08-16 13:19 皁仩腄覺 阅读(155) 评论(0) 推荐(0)
摘要: 1. 面向对象的核心关注的是数据,所有对象函数都围绕数据。而面向过程是针对逻辑功能。2. 构造函数 我认为就是负责申请本类的核心资源(如内存),或者资源定位(如指针指向外部变量),切忌在构造函数中加入初始化的步骤。3. 析构函数 负责释放资源。4. 如果对象在使用时候需要初始化,后提供一个初始化的函数。 阅读全文
posted @ 2013-08-15 20:02 皁仩腄覺 阅读(149) 评论(0) 推荐(0)
摘要: 1.只能从大括号内向外跳。2.只能向后跳。3.严禁使用GOTO做死循环4.goto后面的标签不能出现大括号。 阅读全文
posted @ 2013-08-15 20:01 皁仩腄覺 阅读(201) 评论(0) 推荐(0)
摘要: 1.读写出界 一般出现在字符串拷贝当中 一是源字符串非0结束,二是目标空间太小。2.野指针是指没有初始化过的指针。操作结果未知。 (避免法 任何变量已经声明,立即赋予处置)3.内存资源泄漏。 典型的二元操作。即一个过程,需要两次操作才能完成。常见的二元数组内存分配 对象的建立与销毁 加锁和解锁。4.内存碎片的产生。它是操作系统的问题。编译器无法检查。而且出现频率具有随机性,很难排查。在一些服务程序中可能导致申请内存失败,工作可能崩溃。这种BUG很难被调试。 本人经验 1.是建立内存池做内存管理。2.在多次需要申请较多内存空间的全局变量中 在初始化时候一次申请 退出时释放。 阅读全文
posted @ 2013-08-15 20:00 皁仩腄覺 阅读(391) 评论(0) 推荐(0)
摘要: 1.线程参数应在堆 或全局变量区存放 。线程启动并行运算,有可能启动函数已经退出,但线程还未启动。如果参数是栈变量,则释放。2.线程不能开得太快。否则都可能出现死线程(windows linux 都有这个禁忌),即这个线程系统已经认为存在,但没有获得时间片执行。 建议线程的启动间隔 > 250ms.3.线程永远不能在外部被kill,线程占有资源,内存,加锁未被释放。而且在windows线程强制杀死是异步的,这有可能线程并未真是被杀死。 导致种种问题。原则上设定一定条件,让线程自行退出。4.线程总数有限制的,一般linux 300,windows 可能稍多。如果线程较多,考虑线程池。 阅读全文
posted @ 2013-08-15 19:59 皁仩腄覺 阅读(184) 评论(0) 推荐(0)
摘要: 1. 函数参数越少越好。必要时候使用结构体类。2.相同功能的函数尽量使用函数重载...3. 尽量使用默认参数,提供一个最佳建议。4.返回值尽量简单,规范.5.函数内部减少变量作用域。 阅读全文
posted @ 2013-08-15 19:58 皁仩腄覺 阅读(223) 评论(0) 推荐(0)
摘要: 1. 尽量避免动态内存的分配释放,及时做好资源回收,这些资源常见的是socket,线程,内存。2. 对线程的使用,建立时间片的观念,以任务方式组织业务动作,一般服务器并发线程300下(借鉴别人经验),达到线程重用的目的。 常见的线程池。3. 建立资源跟踪机制。做LOG系统。便于跟踪和故障分析。(需要考虑磁盘已满,log日志一般保存72小时以上)。4.服务器对请求的响应原则上执行“从严”的策略,层级校验,一旦发现异常,则终止本次服务。5.服务策略选择上,执行“自私”原则,先保证自己的安全,再谈客户服务。6.定时显示负载信息,供操作员做出负载均衡操作。7.必要时为服务开发“开门狗”程序,监控服务的 阅读全文
posted @ 2013-08-15 19:57 皁仩腄覺 阅读(239) 评论(0) 推荐(0)
摘要: 1.需求理解和沟通。(系统分析期间不涉及细节。自上而下的分析。)2.模块划分。明确项目核心模块有哪些 3.角色定名,为每一个模块拟定一个名字,以后在项目中统一称呼,方便交流。4.绘制各个模块之间的拓扑图,展现各个模块之间的关系 阅读全文
posted @ 2013-08-15 19:56 皁仩腄覺 阅读(182) 评论(0) 推荐(0)
摘要: #include #include using namespace std;namespace MySmartPtr{ class PtrCount; template class AutoPtr;};class PtrCount{private: int m_iptrCount;public: PtrCount(int iNum = 0){m_iptrCount = iNum;} ~PtrCount(){} int addRef(){return (++m_iptrCount);} int release(){return(--m_iptrCount);} ... 阅读全文
posted @ 2013-08-15 19:55 皁仩腄覺 阅读(196) 评论(0) 推荐(0)
摘要: arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。 和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分)mm(内存管理)、math-emu(浮点单元仿真)、lib(硬件相关工具函数)、 boot(引导程序)、pci(PCI总线)和power(CPU相关状态)。block:部分块设备驱动程序。crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法。Documentation:关于内核各部分的通用解释和注释。drivers:设备驱动程序,每个不同的驱动占用一个子目录。fs:各种支持的文件系统,如ext、fat、nt 阅读全文
posted @ 2013-08-15 10:23 皁仩腄覺 阅读(214) 评论(0) 推荐(0)