Archive for June, 2012

X86平台的中断和异常

英特尔的官方文档如下定义x86平台下的中断和异常:

中断:

  • 可屏弊中断(Maskable Interrupts)

            所有由I/O设备发出的IRQ(Interupt Requests)都是可屏弊中断。可屏弊中断可以有两个状态:屏弊和未屏弊。屏弊状态的中断会被中断控制硬件忽略。

  • 不可屏弊中断(Nonmaskable Interrupts)

           只有一些关键的事件(如硬件失败)会发出不可屏弊中断。不可屏弊中断总是可以被CPU识别到。

 

异常:

  • 处理器可侦测异常(Processor-detected Exceptions)

           CPU执行指令时侦测到不正常的状态(anomalous condition)时产生这个异常。这种异常又根据存在内核栈上的EIP寄存器的值被划分为三组。

  • 错误(Faults)

           发生错误时,一般情况下可以被纠正。纠正以后,程序继续运行,不会损失连续性。保存下的EIP寄存器的值就是产生这个错误的指令,当异常处理句柄(exception handler)结束后,程序从这条指令继续运行。

  • 陷入(Traps)

          当被中止的指令无需重新执行时就产生陷入,这点与错误(Faults)不同。陷入主要被用来实现调试器。

  • 中止(Aborts)

           严重出错。控制硬件出现故障,此时不可能把造成异常的指令精确地址存入EIP寄存器。Aborts被用来报告严重的出错,比如硬件出错或者无效的,不一致的系统表结构。由控制硬件单元发出的中断信号被用来把控制权转交给中止异常句柄(Abort Exception Handler)。句柄通常只有强制结束造成Abort的程序。

  • 可编程异常(Programmed Exceptions)

          这是由程序员发出的。程序员可以用int 或者int 3指令发出可编程异常。Into(检查溢出)bound(检查数组越界)指令也可以用来发出可编程异常。可编程异常常常被称之为软中断(software interrupts)。这种异常通常用来实现系统调用,还被用来在调试器中报告事件。(into和bound指令在IA64体系中已经被废弃了,见另一篇博文:C语言和它的安全性)

copyright blog.ykyi.net

Be the first to comment - What do you think?  Posted by zausiu - June 30, 2012 at 12:42

Categories: Unix / Linux   Tags:

中山大学离散数学考试试题

《离散数学》期末试题(A卷)

blog.ykyi.net

(考试形式:闭卷  考试时间:2小时)

《中山大学授予学士学位工作细则》第六条

考试作弊不授予学士学位

方向:                       姓名:                   学号:            

出卷:                      复核:            

1. (10 points)  A, B and C are sets, prove or disprove the following statements.

(1). if A – B = A – C, then B = C

(2). if A ´ B = A ´ C, A ¹ Æ, then B = C

2. (10 points)  Write each of the following statements in terms of propositional variables, predicates, quantifiers and logical connectives. You can choose any propositional variables and predicates freely.

(1). If I like the course or the teacher, I will attend the class. (statement and its negation)

(2). For all students of our school, someone studies hard and has good score, someone studies hard and does not have good score.

Note: The first question is expressed in propositional logic, the second is expressed in predicate logic.

3. (15 points) Let A={a,b,c,d,e}, a relation R on A is {(a,b), (b,b), (b,c), (b,d), (c,d), (d,d), (d,e), (e,d)}.

(1) Give the digraph and matrix of relation R;

(2) Compute R2, reflexive closure r(R) and symmetric closure s(R).

4. (15 points) Let SÎZ+ and A=S×S. Define the following relation R on A:

(a,b) R (a′,b′) if and only if ab′=a′b

(1) Show that R is an equivalent relation;

(2) Let S={1,2,3,4,5,6,7,8,9}, compute the equivalent class [(2,4)].

5. (10 points) Let function f(x, y)=( x+3y, 2x+y), (x, y)ÎR×R, prove that f is bijection.

6. (15 points) Let A={2, 4, 5, 6, 8, 10, 12, 20, 120}, R is the relation of divisibility on A.

(1) Draw the Hasse diagram of the poset <A, R>;

(2) Find all the minimal elements, the maximal elements, the least element and the greatest element of the poset <A, R> if they exist;

(3) Let B = {2, 4, 6}, find the upper bound, the lower bound, the least upper bound and the greatest lower bound of B if they exist.

 

7. (15 points) Use the labeling algorithm (Ford-Fulkerson’s) to find a maximum flow for the following transport network in Fig. 1. Use of figures is required to show the variety of flows during the procedure.

 

labeling algorithm (Ford-Fulkerson’s) to find a maximum flow for the following transport network

 

 

8. (10 points) Use Kruskal’s algorithm to find a minimal spanning tree of graph in Fig. 2. The sequence of edges-selecting is ordered to be shown up.

Use Kruskal’s algorithm to find a minimal spanning tree of graph.

blog.ykyi.net

Be the first to comment - What do you think?  Posted by zausiu - June 29, 2012 at 13:39

Categories: Tech Articles   Tags:

什么是MediaWiki的Gadget(小部件)

 

译自MediaWiki的官网,URL: http://www.mediawiki.org/wiki/Extension:Gadgets

Gadget简介:

MediaWiki,为用户提供了一种方法,使用户方便使用其它用户基于Javascript或者CSS创建的小部件Gadget.

 

Gadget是由Javascript或者CSS代码片断组成的,被放置在MediaWiki名字空间里(对于MediaWiki的名字空间的概念请参看其它文章)。每一个Gadget都在MediaWiki:Gadgets-definition中占用一行,用来定义这个gadget。定义包括这个Gadget的名字,和描述以及组成这个Gadget的Javascript和CSS代码。

 

因为Gadget被放置在MediaWiki名字空间里,只有系统管理员可以编辑Gadget。这很容易理解:只有充分被信任的用户才可以编辑被其它更多用户使用的Javascript代码。Javascript代码是把双刃剑,如果被用来做坏事,会很容易被用来实现劫持账号或者监视用户的功能。

 

下载Gadget:

从https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/extensions/Gadgets.git;a=tree 可以下载到Gadget,或者也可以用git工具clone一份gadget,如下:

git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Gadgets.git

 

如何安装:

把Gadget目录复制到你安装MediaWiki的扩展目录(Extensions Folder)。然后在localSetting.php文件中,接近文件末尾的地方加上一行:

require_once( "$IP/extensions/Gadgets/Gadgets.php" );

 

使用Gadget:

可以使用的Gadget定义在MediaWiki:Gadgets-definion。只要有一个有效的Gadget在MediaWiki:Gadgets-define被定义,就能在每个用户的Special:Preference的Gadgets节选择是否启用这个Gadget(小部件)。在Special:Gadgets也能浏览Gadgets的列表,并有链接指向各自的系统消息(System Message),以方便编辑。

 

定义Gadget的格式:

在MediaWiki:Gadgets-definition中的每个Gadget的定义都以一个或者多个"*"开始,必须符合下面的格式定义。

 * Gadget的名字 [ 选项(可以忽略) ] | 页名字

 (* gadget_name [options (can be omitted)] | page names)

第一个域,Gadget的名字指的是gadget的内部名字。这隐含了一个系统消息的引用(System Message)。此例中,如果你定义了内部名为 my_gadget_name 这样一个gadget,则在MediaWiki:Gadget-my_gadget_name有一个使用wiki语法的关于这个gadget的简短描述。

 

注意,gadget的内部命令规则:必须以字母起头,后面可以接26个字母的大小写或者数字,以及连字符“-”,下划线“_”,冒号“:”,点号“.”。

 

选项的格式:

[option1 | option2 | ... optionN]

空格将被忽略。每一个选项可以包括一个选项名,或者选项名还能被赋值,这些值以逗号隔开。如: option = value1, value2, value3

 

举一些Gadget定义的例子:

 * mygadget|mygadget.js|mygadget.css

or

 * mygadget[ResourceLoader]|mygadget.js|mygadget.css

or

* mygadget[rights=foo,bar]|mygadget.js|mygadget.css

or

* mygadget[ ResourceLoader | rights=foo, bar ] | mygadget.js | mygadget.css

 

选项的说明:

选项名

参数

描述

ResourceLoader

None

注明Gadget与ResourceLoader兼容。

dependencies

用逗号分隔开的ResourceLoader模块名

这里有默认依赖的模块列表.如果当前的gadget没有与ResourceLoader兼容的资源,这个选项将失效。

rights

用逗号分隔开的权限名

权限名列表在这里 privileges.

skins

用逗号分隔开的皮肤名

皮肤名列表在这里 skins.

default

注明对每个用户,包括匿名用名默认启用的gadget。不过注册用户仍然可以在它们的使用偏好设定中禁用gadget.

你可以为你的gadget指定额外的依赖,如:

* mygadget[ResourceLoader|dependencies=jquery.ui, jquery.effects.clip]|mygadget.js|mygadget.css

 

此例中,我们请求RescourceLoader与mygadget一起加载jquery.ui和jquery.effects.clip模块。注意只有在ResourceLoader中注册中的模块可以被设置成依赖项。

 

下面是设定gadget只对有某些权限的用户生效:

* ImprovedDeletion [rights=delete] | ImprovedDeletion.js 

此例中,我们设定gadget只有对有权限删除页面的用户有效。注意权限指点是这里的 permissions, 而不是像 administrators 一样的用户组。下面再给出一些例子:

modrollback[ResourceLoader|rights=rollback]|modrollback.js

UTCLiveClock[ResourceLoader|rights=purge]|UTCLiveClock.js

Ajax_sysop[ResourceLoader|rights=patrol,rollback,markbotedits,delete]|Ajax_sysop.js

 

ResourceLoader:

所有的gadget的css总是通过ResourceLoader被加载的。但是,一些老旧的javascript写法经常与ResourceLoader不兼容,所以每一个gadget必须被显式地注明兼容性才能被ResourceLoader加载。

否则,会使用旧式的写法 <script src="/w/index.php?title=MediaWiki:Gadget-gadget_name.js&action=raw"> 。

 

页面:

Gadget的定义行后面部分提定了组成gadget的Javascript或者css代码的文件,这些代码文件被放置在系统消息中(System Message)。所以的文件都必须以.js或者.css为扩展名。每个gadget都可以使用任意多个系统消息。一些共用的功能可以被多个Gadget使用。如下:

 * frobinator|commonStuff.js|frob.js|frob.css|pretty.css

 * l33t|commonStuff.js|tools.js|l33t.js

 

节(Sections):

定义在MediaWiki:Gadgets-definition中的gadget列表可以被分成多个节。每个节用两个或者多个"="号起头和结尾,“=”中间指定节的名字。如:

 == interface-gadgets ==

这样就定义了一个节(Section),标题在 MediaWiki:Gadget-section-interface-gadgets 页面中定义。

copyright blog.ykyi.net

 

 

Be the first to comment - What do you think?  Posted by zausiu - June 28, 2012 at 10:52

Categories: Tech Articles   Tags:

Next Page »