现在位置: 首页 > 自动控制 > 文章
2017-06-07 11:13 工业·编程 ⁄ 共 5905字 暂无评论
epoll内核实现 (1)内核为epoll做准备工作 这个模块在内核初始化时(操作系统启动)注册了一个新的文件系统,叫"eventpollfs"(在eventpoll_fs_type结构里),然后挂载此文件系统。另外还创建两个内核cache(在内核编程中,如果需要频繁分配小块内存,应该创建kmem_cahe来做“内存池”),分别用于存放struct epitem和eppoll_entry。这个内核高速cache区,就是建立连续的物理内存页,就是物理上分配好你想要的size的内...
阅读全文
2017-05-31 11:11 工业·编程 ⁄ 共 1259字 暂无评论
应用层调用poll时,内核调用了sys_poll 在sys_poll中首先初始化,判断了nfds是超过struct file支持的最大的fd数(默认256),将传入的timeout时间转化为cpu时钟周期,并且调用了poll_initwait初始化了一个函数指针,用于操作系统异步回调的; 接下来,进行了一个while循环,从0到nfds给每一个struct pollfd对象开辟内存,是以链表节点poll_list大小开辟的(一个链表节点是一个page,链表节点中有struct pollfd结构),然后将用户空...
阅读全文
2017-05-24 10:40 工业·编程 ⁄ 共 3712字 暂无评论
在一个大的工程中,源文件不计其数,其可能会按类型、功能、模块分别放在若干个目录中,那我们每次去编译的时候就会输入一长串编译命令以及相应的路径,极其麻烦;另外一点就是每次若更改了一个源文件,对于其他没有更改的文件也得重新编译,效率低下。为了解决这些问题,makefile出现了。 makefile 1:makefile关系到整个工程的编译规则(根据你写的依赖关系执行),决定了哪些文件需要先编译,哪些文件需要后编译,哪些文件需...
阅读全文
2017-05-17 08:16 工业·编程 ⁄ 共 2404字 暂无评论
    对于后台开发,一个重要问题即使用尽可能少的服务器资源处理海量的请求,除了我们再架构上做多机自动扩容外,我们还必须尽可能提高单机硬件的利用率(CPU利用率+IO利用率) 为了提高硬件的利用率往往我们采用三种技术路径: 多线程 异步IO 协程 协程和异步IO以及多线程的对比 多线程 多线程可以充分利用CPU的多核,实现真正的并行,它是操作系统的基础设施。但是线程是一个粗粒度、相对比较笨重的多任务的抽...
阅读全文
2017-05-10 07:26 工业·编程 ⁄ 共 1957字 暂无评论
之前一直没想明白了一个问题, 就是关于协程如何进行上下文切换。众所周知, 协程是分为有栈协程和无栈协程俩种. 区别在于是否有自己的调用栈来进行函数调用等操作. 有栈协程 有栈协程这里的做法比较好理解, 一般来说有俩种做法: 采用操作系统提供的api 类似 ucontext 或者 setjump longjump 用汇编操控寄存器保存状态 典型的例子 static void context_swap(struct Context* prev_, struct Context* next_) { // store in .da...
阅读全文
2017-05-08 21:26 数理涉猎 ⁄ 共 9099字 暂无评论
   王文素,字尚彬,山西汾州人,于明朝成化年间(1465—1487年) 随父王林到河北饶阳经商,遂定居。自古晋商多儒,出身于中小商人家庭的王文素,受所处社会及家庭影响,自幼颖悟,涉猎书史,诸子百家,无不知者。尤长于算法,留心通证,以一生之精力,完成了《算学宝鉴》这一数学巨著,为后人留下了宝贵的财富。     一、数学巨匠王文素     数学,古代称为数,后又有数术、算数、算学、...
阅读全文
2017-05-03 06:45 工业·编程 ⁄ 共 1665字 暂无评论
https://github.com/tonbit/coroutine是一个精巧的C++非对称协程库。库只有一个.h文件(<500行的代码),使用时也仅需要include这个头文件。但是在功能上,可以提供Linux/Macos/Windows平台的几个必备的协程API(命名空间coroutine): * 创建协程:routine_t  create( std::function<void()>  f ); * 销毁协程:void  destroy( routine_t  id ); * 恢复协程:int  resume( routine_t  ...
阅读全文
2017-04-26 18:17 工业·编程 ⁄ 共 1663字 暂无评论
    对于IO密集型的程序,一般比较高效的做法是选择异步来实现,因为使用异步的方法更容易写出高效的程序。然而使用异步的话,经验较少的人往往会使自己的程序结构变得很混乱,进而导致程序的可读性变差。记得有人说过,在硬件飞速发展的现在,程序的可读性和可维护性的重要性在不断提高,甚至有一种更激进的说法,程序的可读性是第一位的。     从Boost的1.54版本开始,coroutine引入了一种新型...
阅读全文
2017-04-19 08:48 工业·编程 ⁄ 共 3148字 暂无评论
1 PE文件 1.1 PE文件简介 PE文件是Portable Executable(可移植的可执行文件)的简写。EXE、DLL、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件。 1.2 PE文件格式 PE文件都有相同的格式,其格式如图1所示。 图1 PE文件格式 从图1可以看出,PE文件主要包含头和数据部分,其中可以将头部看作是数据的索引。而头部又包含了DOS头、NT头和Section头三部分。DOS头包含了MZ文件头和DOS块两部分。所以,PE文件格式...
阅读全文
2017-04-12 11:13 工业·编程 ⁄ 共 11534字 暂无评论
ATL(Active Template Library活动模板库)是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。通过活动模板库,可以建立COM组件,然后通过ASP页面中的脚本对COM对象进行调用。这种COM组件可以包含属性页、对话框等等控件。 一. 什么是ATL 自从1993年Microsoft首次公布了COM技术以后,Windows平台上的开发模式发生了巨大的变化,以COM为基础的一系列软件组件化技术将Windows编程带入了组件化时代。广大的开发...
阅读全文