摘要: 1.全局描述符表(Global Descriptor Table):GDT表项指向LDT。GDT对所有进程均可用。GDT记录OS使用的内存区域的段描述符。整个系统只定义一个GDT,其中存放有允许多个进程共同访问的那些段的描述符。2.局部描述符表(Local Descriptor Table):每个进程的局部空间的段的所有段描述符集中存放在一张表中,这张表为该进程的局部描述符表(LDT)。每个进程的LDT通常存放在核心空间中,系统也将它看成是一个段,因此也需要一个段描述符来给出其在内存的基址、长度等信息,这类描述符被称为LDT描述符,它们被存放在GDT中。当前正在执行的进程,其在GDT中的LDT 阅读全文
posted @ 2012-12-27 14:19 Jun14 阅读(1261) 评论(0) 推荐(0) 编辑
摘要: 遇到问题: 为MFC程序的CMainFrame添加了一个Windows消息处理之后CMainFrame类消失了! 准确地说是在类视图(Class View)中不见了。解决方法:第一种: 先保存workspace,然后关闭工程,删除此工程目录中的.ncb文件,重新打开workspace。第二种: 找到CXXView.h文件或其他不见了的类的头文件,再在这个文件中加个空格(即稍作修改),就可以在类视图中找到view类了。整理自:http://blog.163.com/freedom_lover/blog/static/202824031201261653235114/ 阅读全文
posted @ 2012-12-10 14:20 Jun14 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 1.管道文件管道文件读写主要面临问题: 一次读写完毕后,下一次可能需要等好久。解决方法: 文件系统将这个请求挂起,不发送应答给进程,导致进程阻塞。 在能够执行完成的时候,重新唤醒进程。2.终端设备文件2.1 终端设备的i节点(inode)中有两个数字:1)主设备号 主设备号给出了设备类型: ram,软盘,硬盘,终端。2)次设备号 此设备号指明了所使用的设备号,如终端2,驱动器1, 有时候还会包含一些设备信息以便驱动程序处理。2.2 读写设备文件步骤:1)从文件的i节点中提取主、次设备号;2)去访问文件系统表,找到相应的设备驱动程序的进程号;3)若驱动程序能立即执行操作,则执行,若不... 阅读全文
posted @ 2012-12-09 15:12 Jun14 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 1.为什么需要他因为子进程与父进程之间需要共享文件读写指针。2.构成代码:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ servers/fs/file.h++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 21700 /* This is the filp table. It is an i... 阅读全文
posted @ 2012-12-09 14:30 Jun14 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 1.名称与功能文件锁,或称为“建议文件锁”(advisory file locking)。进程在执行可能会与其他操作冲突的操作之前,先要对文件锁进行查询,或者上锁。这个操作并不是由OS强制执行。2.实现使用文件结构 file_lock 表来记录所有的锁。 21803 EXTERN struct file_lock { 21804 short lock_type; /* F_RDLOCK or F_WRLOCK; 0 means unused slot */ 21805 pid_t lock_pid; /* pid ... 阅读全文
posted @ 2012-12-09 14:01 Jun14 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 1.定义n = read(fd, buffer, nbytes);参数说明:fd:文件描述符buffer:存放取回数据的缓冲区?nbytes:要读取的字节数2.步骤对于调用者来说,一般是构造一条消息,包含以上三个参数,发送给系统,然后自己阻塞起来。read函数从消息中提取出fd,找到相应的filp表项以及目标文件的inode。然后将读请求分段,分段后每一次的操作都对应与一个块,即将跨块的操作分解。分解之后,检查需要读取的块是否在高速缓存中。若不在,调入之。fs(文件系统)向task(系统任务)发送一条消息,请求将数据复制到用户缓冲区中。当然复制也是分块操作的。发送应答消息给库函数,库函数再回应 阅读全文
posted @ 2012-12-08 16:04 Jun14 阅读(259) 评论(0) 推荐(0) 编辑
摘要: conv2()函数根据机器类型交换大小端数据。PUBLIC unsigned conv2(norm, w)int norm; /* TRUE if no swap, FALSE for byte swap */int w; /* promotion of 16-bit word to be swapped */{/* Possibly swap a 16-bit word between 8086 and 68000 byte order. */ if (norm) return( (unsigned) w & 0xFFFF); return( ((w&BYTE) <&l 阅读全文
posted @ 2012-12-08 14:12 Jun14 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 1.ROI区域提取只能使用cvRect函数,指定他的起点坐标(x,y),指定长w和宽hcvSetImageROI(pImgROI,cvRect(x,y,w,h));如果想使用不规则的选择区域,推荐使用遮光板(mask)参考下面两篇blog:http://www.cnblogs.com/saintbird/archive/2008/10/27/1305003.htmlhttp://blog.csdn.net/longlongago2000/article/details/29504282.要及时reset,不然图像将一直保持被"裁减"的状态(并不是真的被裁减了)3.ROI中的 阅读全文
posted @ 2012-11-23 15:32 Jun14 阅读(1748) 评论(0) 推荐(0) 编辑
摘要: exit()就是退出传入的参数是程序退出时的状态码: 0 表示正常退出 其他 表示非正常退出,一般都用-1标准C里有EXIT_SUCCESS和EXIT_FAILURE两个宏,用它们,可读性比较好exit(EXIT_SUCCESS); 参考自:http://zhidao.baidu.com/question/11501330.html 阅读全文
posted @ 2012-11-23 14:28 Jun14 阅读(913) 评论(0) 推荐(0) 编辑
摘要: 按回车(Enter)键和ESC键会退出解决方法但是这种退出方式不会调用OnClose函数所以对于我在OnClose函数里面写的文件保存的代码造成了影响--文件不保存了.解决方法,重写dlg类的PreTranslateMessage()方法第一步:添加虚方法第二步.选择PreTranslateMessage()方法,重写代码如下://屏蔽ESC和Enter键BOOL dlg类名::PreTranslateMessage(MSG* pMsg){ // TODO: 在此添加专用代码和/或调用基类 if(pMsg->message == WM_KEYDOWN) { sw... 阅读全文
posted @ 2012-11-17 16:54 Jun14 阅读(887) 评论(0) 推荐(0) 编辑