![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
zonian's Blog
文章平均质量分 53
Joe_KingKiller
这个作者很懒,什么都没留下…
展开
-
assert() 用法及注意事项
assert() 用法及注意事项assert功能是测试一个条件并可能是程序终止。它首先测试条件,如果为假,则调用abort使程序退出。注意事项:1. 在函数开始前,检查参数的合法性2. 每个assert只检验一个条件,因为同时检查多个条件时,如果测试失败,就不能断言是由那个条件失败引起的3. 不能改变环境语句,因为assert只在DEBUG生效,如果这样做,就会在程序运原创 2009-11-01 14:29:00 · 569 阅读 · 0 评论 -
微内核与宏内核比较
内核体系结构---微内核与宏内核比较内核按照体系结构分为两类:微内核(microkernel)与宏内核(macrokernel). 微内核的系统有WindowNT,Minix,Mach,etc.宏内核的系统有Unix,Linux,etc.通过比较Minix和Linux来比较微内核和宏内核是很有意思的,因为当年两个系统的创始人对两种内核的优劣有过争论.两个系统的内核是通过进程的创建FORK转载 2009-11-01 14:44:00 · 910 阅读 · 0 评论 -
Linux操作系统中/sbin/init程序的执行过程
当init启动后,它通过执行各种启动事务来继续引导进程(检查并监视文件系统,启动后台程序daemons,等等),直至完成用户所有操作环境的设置工作。这里主要涉及4个程序:init、getty(agetty)、login和shell程序。这4个程序之间的关系见下图所示。 init进程的主要任务是根据/etc/rc文件中设置的信息,执行其中设置的命令,然后根据/etc/inittab文件转载 2009-11-01 14:26:00 · 389 阅读 · 0 评论 -
基于嵌入式linux设备驱动程序设计
Linux为是一个成熟而稳定的操作系统。将Linux植入嵌入式设备具有众多的优点,包括可剪裁和容易移植等,所以Linux操作系统在嵌入式领域获得了广泛的应用。嵌入式Linux一直是嵌入式领域的研究热点,与PC架构不同,嵌入式系统的硬件具有多样性和差异性,嵌入式系统的开发需要对特定系统进行硬件设计,同时还要针对这些硬件来编写驱动程序。Linux内核就是通过驱动程序来同外围设备打交道的,系统设计转载 2009-11-01 14:44:00 · 757 阅读 · 1 评论 -
IT十年经典书下载
IT十年经典书下载 看了“近10年最强的50本计算机图书,您读过几本? ”,我整理一下可以下到的,还真是不少。大家共享十年经典书籍下载 今天无意中看到CSDN上一篇“近10年最强的50本计算机图书,您读过几本? ”,就决定去找一下,买是不可能了,本月大赤字,上月笔记本6200,房租4000,陪人医药费400,我已经一无所有,于是只有下鸟,于是整理出这么多的东西来,希望大家喜欢软件工原创 2009-11-01 14:25:00 · 469 阅读 · 0 评论 -
内存分布
一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变转载 2009-11-01 14:29:00 · 368 阅读 · 0 评论 -
解决--"System"名字空间不存在
开启/clr(公共语言运行库支持):项目-> 属性->配置属性:选择公共语言运行库支持原创 2009-11-01 14:30:00 · 431 阅读 · 0 评论 -
[zz]LKM Rootkits on Linux x86 v2.6
[zz]LKM Rootkits on Linux x86 v2.6 收藏 转载自水木KernelTech版。关于hack系统调用表的一篇文章,里面还涉及了上学期ICS Lab中的二进制代码注入,很好很强大。略作整理(为什么技术博客默认的字体不是等宽的 T.T) =-|================================================-{ www.enye-sec.转载 2009-11-01 14:31:00 · 504 阅读 · 0 评论 -
二进制、字符I/O、格式化I/O
二进制I/O与字符I/O区别: 1. 对于字符I/O有终结字符,如NULL,或换行符,因此在读写的内容中不能含有这些特殊字符,而对于二进制I/O而言,它是通过一次读写一个字节,然后循环读写所需的字节数,至于读进什么东西对二进制I/O是透明的. 2.(待续)原创 2009-11-01 14:35:00 · 971 阅读 · 0 评论 -
CFLAGS --使用(gcc 3)
CFLAGS 简介 CFLAGS 是决定 Gentoo 系统效能与稳定的关键之一。恰当的 CFLAGS 能在效能、编译时间、与系统稳定度中取得平衡,失败的 CFLAGS 可能导致编译失败,甚至系统损毁。那么,在茫茫 CFLAGS 海中,如何才能捞到命中注定那根针呢? 此文件的 CFLAGS 针对 x86 与 x86-64 平台上的 GCC 3.4 (GNU Compiler Collect原创 2009-11-01 14:43:00 · 1456 阅读 · 0 评论 -
关于volatile关键字的说明以及测试
关于volatile关键字的说明以及测试 收藏 volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。使用该关键字的例子如下:int volatile nVint;当要求使用volatile 声明的变量的转载 2009-11-01 14:42:00 · 351 阅读 · 0 评论 -
c++ volatile用法(转)
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值(From Memory),而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1) 并行设备的硬件寄存器(如:状态寄存器)2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic v转载 2009-11-01 14:42:00 · 440 阅读 · 0 评论 -
Linux解释器原理
Linux解释器原理引言使用Shell进行工作的人们对Unix/Linux下的Shell编程都很熟悉,在所有的Shell编程的书中都会提到#!/bin/bash,而这里到底包含了些什么?对操作系统而言,这一行字符串意味着什么?你可能会说,不就是会让/bin/bash程序来解释这个脚本程序吗?当然你是对的,看看我们的标题,这里我们谈谈解释器,让我们一起来看看脚本文件里的第一句到底对系统而言意味着转载 2009-11-01 14:33:00 · 413 阅读 · 0 评论 -
linux解释器与system实现
linux解释器与system的实现在实现中都调用了fork,execv,waitpid三个函数,由解释器和system函数所给出的参数表创建新进程,由新进程实现解释器和system所实现的功能.(待续)转载 2009-11-01 14:35:00 · 424 阅读 · 0 评论 -
mmap
mmap笔记1.与mmap相关的错一般有两个,是由mmap发出的SIGSEGV和SIGBUS两个信号产生的。SIGSEGV产生于,存取区域不存在或对只读区域进行写操作。SIGBUS产生于:文件的存取部分已经不存在,如2所描述的情况。2.memcpy只是复制一块存储区域,因此在用mmap对文件等进行操作时,需要在目标文件尾(源文件大小偏移之后)加上结束符,否则mmap会发出SIGBUS信号,从而出现原创 2009-11-01 14:36:00 · 715 阅读 · 0 评论 -
驱动网站
http://tie.163.nethttp://www.cetinet.com/http://jiaomcu.shareyou.net/more.htmhttp://www.lvr.com/usbcode.htmhttp://www.chinadz.com/icver/0038.htmsdkh.51.net/dz/usb.htm http://www-eu5.semiconductors.phi原创 2009-11-01 14:36:00 · 440 阅读 · 0 评论 -
在C++本地类中添加托管类的变量
使用gcroot可以实现在C++本地类中添加托管类变量.例子:#include //必须包含using namespace System;using namespace System::Collections::Generic;using namespace System::Text;using namespace System::IO::Ports;using namespace Sy转载 2009-11-01 14:37:00 · 5793 阅读 · 1 评论 -
crc 算法
chk3(s) char *s; { unsigned int c, q; LONG crc = 0; while ((c = *s++) != /0) { if (parity) c &= 0177; q = (crc ^ c) & 017; /* Low-order nibble */ crc = (crc >> 4) ^ (q *原创 2009-11-01 14:37:00 · 630 阅读 · 0 评论 -
通用线程:POSIX 线程详解,第 3 部分
级别: 初级Daniel Robbins, 总裁兼 CEO, Gentoo Technologies, Inc.2000 年 9 月 01 日本文是 POSIX 线程三部曲系列的最后一部分,Daniel 将详细讨论如何使用条件变量。条件变量是 POSIX 线程结构,可以让您在遇到某些条件时“唤醒”线程。可以将它们看作是一种线程安全的信号发送。Daniel 使用目前您所学到的知识实现了一原创 2009-11-01 14:40:00 · 409 阅读 · 0 评论 -
内核无法挂载根文件系统的原因总结
1.对应的根设备文件是否存在? 比如init=/dev/mtdblock2, 那么对应的mtdblock2设备文件是否已经创建?2.对应的块设备驱动是否已经加载进内核?3.对应的文件系统模块是否已经加载进内核?4.init程序是否可以执行?, 我是指将用到了armv5指令的init运行到了只支持armv4t指令集的机器上.另外如果没有通过内核参数的方式将init的位置传给内核,原创 2009-11-01 14:41:00 · 1041 阅读 · 0 评论 -
hash(1)
http://blog.chinaunix.net/u/12467/showart_1095552.html原创 2009-11-01 14:38:00 · 493 阅读 · 0 评论