上一页 1 ··· 48 49 50 51 52 53 54 55 56 ··· 59 下一页
摘要: 在前一章也提到过,之所以中断会分成上下两部分,是由于中断对时限的要求非常高,需要尽快的响应硬件。主要内容:中断下半部处理实现中断下半部的机制总结中断下半部的实现中断实现示例1. 中断下半部处理那么对于一个中断,如何划分上下两部分呢?哪些处理放在上半部,哪些处理放在下半部?这里有一些经验可供借鉴:如果一个任务对时间十分敏感,将其放在上半部如果一个任务和硬件有关,将其放在上半部如果一个任务要保证不被其他中断打断,将其放在上半部其他所有任务,考虑放在下半部2. 实现中断下半部的机制实现下半部的方法很多,随着内核的发展,产生了一些新的方法,也淘汰了一些旧方法。目前使用最多的是以下3中方法2.1 软中断 阅读全文
posted @ 2013-04-23 11:18 wang_yb 阅读(13812) 评论(3) 推荐(8) 编辑
摘要: 中断处理一般不是纯软件来实现的,需要硬件的支持。通过对中断的学习有助于更深入的了解系统的一些底层原理,特别是驱动程序的开发。主要内容:什么是中断中断类型中断相关函数中断处理机制中断控制方法总结1. 什么是中断为了提高CPU和外围硬件(硬盘,键盘,鼠标等等)之间协同工作的性能,引入了中断的机制。没有中断的话,CPU和外围设备之间协同工作可能只有轮询这个方法:CPU定期检查硬件状态,需要处理时就处理,否则就跳过。当硬件忙碌的时候,CPU很可能会做许多无用功(每次轮询都是跳过不处理)。中断机制是硬件在需要的时候向CPU发出信号,CPU暂时停止正在进行的工作,来处理硬件请求的一种机制。2. 中断类型中 阅读全文
posted @ 2013-04-19 11:38 wang_yb 阅读(10816) 评论(0) 推荐(5) 编辑
摘要: 委托是.net中实现回调机制的一种重要技术,尤其在编写服务端程序的时候,更是频繁使用委托。主要内容:委托本质委托链动态委托1. 委托本质委托本质其实就是一个类,基本上在可以定义类的地方都可以定义委托,C#中委托的写法其实只是C#的语法糖。如下定义个委托:using System;namespace delegate_test{ internal delegate int Sum(int a, int b);}用ILSpy可以发现对应的IL代码如下:.class private auto ansi sealed delegate_test.Sum extends [mscorlib]... 阅读全文
posted @ 2013-04-18 20:52 wang_yb 阅读(1242) 评论(2) 推荐(0) 编辑
摘要: 内核数据结构贯穿于整个内核代码中,这里介绍4个基本的内核数据结构。利用这4个基本的数据结构,可以在编写内核代码时节约大量时间。主要内容:链表队列映射红黑树1. 链表链表是linux内核中最简单,同时也是应用最广泛的数据结构。内核中定义的是双向链表。1.1 头文件简介内核中关于链表定义的代码位于: i... 阅读全文
posted @ 2013-04-16 13:21 wang_yb 阅读(22499) 评论(10) 推荐(6) 编辑
摘要: 主要内容:区别的介绍代码演示区别建议1. 区别的介绍我们在平时的编码中javascript中经常会用到[return false;]语句来阻止事件的向上传递,其实[return false;]语句包含了2层意思:阻止触发事件的元素的默认动作(比如说一个link(<a href="http://www/baidu.com"></a>),它的默认动作就是迁移到baidu首页)阻止触发事件的元素向上传递事件由于[return false;]包含了2个意思,所以在使用时首先要明确上面的2个阻止是否符合我们的预期。如果我们在只想阻止元素的默认动作或者只想阻止元 阅读全文
posted @ 2013-04-11 16:37 wang_yb 阅读(4689) 评论(0) 推荐(2) 编辑
摘要: 主要内容:什么是系统调用Linux上的系统调用实现原理一个简单的系统调用的实现1. 什么是系统调用简单来说,系统调用就是用户程序和硬件设备之间的桥梁。用户程序在需要的时候,通过系统调用来使用硬件设备。系统调用的存在,有以下重要的意义:1)用户程序通过系统调用来使用硬件,而不用关心具体的硬件设备,这样大大简化了用户程序的开发。 比如:用户程序通过write()系统调用就可以将数据写入文件,而不必关心文件是在磁盘上还是软盘上,或者其他存储上。2)系统调用使得用户程序有更好的可移植性。 只要操作系统提供的系统调用接口相同,用户程序就可在不用修改的情况下,从一个系统迁移到另一个操作系统。3)系统调用使 阅读全文
posted @ 2012-09-17 09:58 wang_yb 阅读(13004) 评论(0) 推荐(2) 编辑
摘要: 主要内容:什么是调度调度实现原理Linux上调度实现的方法调度相关的系统调用1. 什么是调度现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程)。这个管理程序就是调度程序,它的功能说起来很简单:决定哪些进程运行,哪些进程等待决定每个进程运行多长时间此外,为了获得更好的用户体验,运行中的进程还可以立即被其他更紧急的进程打断。总之,调度是一个平衡的过程。一方面,它要保证各个运行的进程能够最大限度的使用CPU(即尽量少的切换进程,进程切换过多,CPU的时间会浪费在切换上);另一方面,保证各个进程能公平的使用CPU(即防 阅读全文
posted @ 2012-09-04 16:10 wang_yb 阅读(12760) 评论(0) 推荐(5) 编辑
摘要: 搞了一天半,终于在将mvc3的站点成功部署在Linux上了。主要内容:环境准备apache 的配置mod_mono的配置发布mono mvc站点1. 环境准备要运行aspnet mvc3的站点,需要以下3个与mono相关安装包,我都是源码安装的。(1) mono-2.11.3.tar.bz2安装方法参见:mono和monodevelop源码编译安装的第一节 mono的源码编译安装(2) mono-xsp-mono-1-9-p2-181-gc0a69ec.zip - 下载地址:https://github.com/mono/xsp这里有点需要注意,本来了mono-xsp我是在mono官网上下的最 阅读全文
posted @ 2012-08-22 15:47 wang_yb 阅读(8779) 评论(15) 推荐(1) 编辑
摘要: 进程是所有操作系统的核心概念,同样在linux上也不例外。主要内容:进程和线程进程的生命周期进程的创建进程的终止1. 进程和线程进程和线程是程序运行时状态,是动态变化的,进程和线程的管理操作(比如,创建,销毁等)都是有内核来实现的。Linux中的进程于Windows相比是很轻量级的,而且不严格区分进程和线程,线程不过是一种特殊的进程。所以下面只讨论进程,只有当线程与进程存在不一样的地方时才提一下线程。进程提供2种虚拟机制:虚拟处理器和虚拟内存每个进程有独立的虚拟处理器和虚拟内存,每个线程有独立的虚拟处理器,同一个进程内的线程有可能会共享虚拟内存。内核中进程的信息主要保存在task_struct 阅读全文
posted @ 2012-08-20 17:42 wang_yb 阅读(15618) 评论(3) 推荐(5) 编辑
摘要: 在尝试内核开发之前,需要对内核有个整体的了解。主要内容:获取内核源码内核源码的结构编译内核的方法内核开发的特点1. 获取内核源码内核是开源的,所有获取源码特别方便,参照以下的网址,可以通过git或者直接下载压缩好的源码包。http://www.kernel.org2. 内核源码的结构目录说明arch特定体系结构的代码block块设备I/O层crypo加密APIDocumentation内核源码文档drivers设备驱动程序firmware使用某些驱动程序而需要的设备固件fsVFS和各种文件系统include内核头文件init内核引导和初始化ipc进程间通信代码kernel像调度程序这样的核心子 阅读全文
posted @ 2012-08-16 10:20 wang_yb 阅读(13710) 评论(0) 推荐(2) 编辑
上一页 1 ··· 48 49 50 51 52 53 54 55 56 ··· 59 下一页
点击右上角即可分享
微信分享提示