科学网

 找回密码
  注册

tag 标签: 操作系统

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

给文件夹加备注的方法,终于为我所用了.
热度 1 entropy 2011-2-23 10:56
给文件夹加备注的方法,终于为我所用了.
一直在思考,却没有仔细研究过. 今天实在是受不了"自己用英文命名的文件夹,最后自己也搞不懂真实的意思"了. 毕竟不是母语,歧意太多了. 但W操作系统对中文经常感冒,怎么办呢. 开发文件(文件夹)的备注功能吧. 1 网络上查的.用记事本 InfoTip=输入你要添加的备注 保存成desktop.ini,保存在该文件夹下 HYL20110223用方面的方法没有成功啊. 2 网络:很老的玩意了,也不想多说了,直接给搂主写了一个批处理,保存为BAT文件双击执行看提示操作即可 @echo off echo.echo. set /p fn=输入文件夹路径或者用鼠标把文件夹左键按住拖到此窗口: echo.echo. set /p it=输入你对此文件夹的描述信息: attrib %fn%\desktop.ini -s -h del %fn%\desktop.ini echo %fn%\desktop.ini echo InfoTip=%it%%fn%\desktop.ini attrib %fn%\desktop.ini +h +s attrib %fn% +s 和上面的道理应该一样.这种方法不适用于经常的操作,尤其对我这种脑袋不好,时常要记录的人. 3 Tc的作法:选中文件或文件夹,Ctrl+Z,编辑注释. 分析: 文件,编辑的是文件的备注. 文件夹,实际上是在"该文件夹的同级目录下"建立一个descript.ion文件 ,在其中标明注释内容. 缺点: a我们复制文件夹时,不可能想着去复制这个.ion文件,而且它还是隐藏的.那么文件夹移动后这个注释就没有了. 4 Xplorer2的做法: 选中,Alt+Z,设置注释. 分析:文件,编辑的是文件的备注.文件夹,实际上是在"该文件夹内"建立一个desktop.ini文件 ,在其中标明注释内容. 优点: 避免了上述Tc的缺点,即放在文件夹内. 缺点: 文件备注,在Windows explorer下编辑后,Xplorer2不认中文. 文件夹备注,必须在Xplorer2下注释才能在Xplorer2下显示,Explorer下加的,同样的文件,在Xplorer2下显示不出来. 看来在用了近3年TC后我得回到Xplorer2了. 5 其它软件:用Folder Remarker给文件添加注释.这么简单的一个动作,还要专门一个软件,无视之. """""""""""""""""" 不错,方便是挺方便,但重装系统及对文件(夹)改名、复制、移动后是否会丢失注释呢?这的确是个应该关注的问题,不过你放心,软件的注释都保存在Folder Remarker安装目录的descript.fr2文件里,平时我们对加了注释的文件(夹)的改名、复制、移动等操作,Folder Remarker都能及时更新数据库,改名、复制、移动后的文件(夹)照样还是原来的注释,不会掉的。重装系统的问题,只要我们不将Folder Remarker与Windows安装在同一驱动器,重装系统后重新安装Folder Remarker到原来的目录,注释也不会丢。 """""""""""""""""""专门保存注释文件,人才 ,更无视了. 结论,没脑袋的Microsoft,为什么把Win9X这么好的"文件夹备注"功能给取消了呢? 惊喜,TC还真够意思啊,它居然认Xplorer2的备注。但不能直接编辑。 看来,要两个配合了。 实现这个功能,留下这两个资源管理器,况且都是王者,值了。 看到效果了吧, 这样做的好处就是,即使文件(夹)名字改了,描述不变,而且可以随时编辑,加入新的动态描述。 不用担心了吧。
10938 次阅读|1 个评论
3Q事件带来信息业发展新机遇
zhguoqin 2010-11-7 09:26
3Q 事件带来信息业发展新机遇 张国庆 前两天就 3Q 事件胡乱发了一通牢骚( 对 3Q 事件的思考 , 从3Q 事件看中国商人 )。其实,事情总有正反两方面, 3Q 事件的发生,其实是一件必然事件,如果 360 与 QQ 11 月 3 日 不掐架,以后也会有其他信息业商家掐架事件发生。 3Q 事件,提前暴露了信息业内部问题,从这种角度上说,不能说不是一件好事。既然将信息业内部问题暴露了出来,那干脆不如就把整个问题全面揭开,长痛不如短痛,把存在的问题解决了,这会对我国信息业的发展,是一次大好机遇! 一、打破技术垄断,大力扶持、开发全兼容软件 大家对 windows 早就不满,正如前几日大家对 QQ 的不满,这种不满,是无奈的不满!因为,商家绑架了用户,你不用 windows ,用什么,其他的都不兼容。 因此,我国软件业的发展,应该重点放在操作系统和一些常用软件的开放与兼容上,国家要像扶持芯片制造业那样大力扶持,将下列软件作为国家科技攻关重点: ( 1 )操作系统核心 将操作系统核心与用户界面分离,开发智能化程度更高的操作系统核心,并将其 固化成芯片 ,像汉字库那样,既可以防止盗版,又为信息业创造出一个新的行业。 ( 2 )用户界面 可以与浏览器相结合,由用户自由选择。用户界面可以借鉴 360 做法,将用户设置、使用习惯等在线保存,也可以自己备份。这又将会给信息业带来新的商机。 为打破垄断,对于浏览器,可以附带即时通信功能,这种功能,可以与其他即时通信软件、浏览器实现无缝连接: ① 无缝连接 可以与现有所有的通信网络无缝连接,包括与电信、联通、移动的无缝连接,以及不同浏览器、不同即时通信软件之间的无缝连接,实现无障碍通话和文件、数据交换。 ② 无损搬家 不同浏览器之间,包括通信等,用户可以自由选择,并且可以对其中的通信录、好友、个人设置、游戏、个人等级、虚拟财产、网络支付手段、博客、论坛记录等无损搬家。 ( 3 )杀毒拦截 对网络流氓骚扰,要像对待病毒那样,坚决予以打击。 说实在的,这方面, 360 做的真不错。不仅要杀毒,还要可以拦截一些网络流氓骚扰。 不过,为了防止侵权,应该增加用户自定义设置和默认设置,由用户定义拦截内容。 二、在信息、网络法律法规中增加兼容、禁止骚扰规定 尽快对现行有关信息、网络法规进行修改,增加兼容、禁止骚扰的规定,并将其列入信息安全内容,同时将流氓骚扰软件纳入病毒行列。 具体内容为: ( 1 )公开发布、销售的软件,必须对其他软件完全兼容。禁止销售、发布不兼容、有病毒、流氓行为的软件。 ( 2 )下列行为属于信息流氓行为: 不经用户同意,在用户电脑上安装用户不需要的功能组件; 不经用户同意,向用户发送信息,包括弹出窗口、播放影音、与网页主题无关的内容等; 不经用户同意,下载用户不需要的信息、软件等; 不经用户同意,修改用户设置; ( 3 )信息流氓属于病毒,杀毒软件可以将其拦截并清除。
个人分类: 计算机|1936 次阅读|1 个评论
Ubuntu:最方便的Linux操作系统
outcrop 2010-10-29 17:24
Ubuntu Linux 是一款基于Debian的Linux操作系统发行版,其优势在于桌面应用,也就是适合个人用户的日常学习、工作、娱乐;详细的介绍可以网上搜索,不赘述。虽然Ubuntu也有服务器版,但并不是其强项。 Ubuntu官方网站 。 Ubuntu中文论坛 。 相对于Linux的其他发行版本,如Federa、Suse、Gentoo、Debian等,Ubuntu的方便性体现在其人性化的细节设计、快捷的软件管理、丰富的文档以及活跃的社区上;是一款使用门槛很低的Linux发行版。 Linux操作系统的优势在于其开放源代码的特性,而且免费。同时也避免我们对Windows等操作系统的依赖。欧美普通用户的Linux使用率相对国内高很多,也许版权的原因,也许兴趣爱好。关于使用Linux的应用,网上的讨论也很多,记忆中一位叫王垠的博士努力的推广过,影响很大。 Linux操作系统的弱点在于一些专业软件不能运行,但作为科研平台,Linux还是相当不错,有着丰富的源代码。 个人对操作系统并无特别偏好,在这里推荐,是因为推荐给老师,影响可能更为深远。一旦一个老师接受,可能发散到一群学生。 希望Ubuntu这款Linux能把您带入自由、自虐与折腾的乐趣之中。
个人分类: 开放源代码工具|6806 次阅读|5 个评论
诞生于高校的操作系统:BSD
outcrop 2010-10-20 15:45
如果说提起Linux,尚有部分非计算机专业的人知道的话,那么提到BSD,这个诞生于加州大学伯克利分校的操作系统系列,恐怕了解的人就很少了。 实际上BSD系列的操作系统相当优秀:诞生于高校、开放源代码、性能卓越、以宽容的 BSD协议 发布等等。在商业化的Windows以及各公司撑腰的Linux粉墨登场这个喧嚣的大环境下,BSD家族的操作系统,如深谷幽兰,静静的散发着自己的魅力。不同发行版特性鲜明: FreeBSD 稳如磐石; NetBSD 的CPU兼容性相当强悍; OpenBSD 则是安全、安全、再安全。 关于BSD系列的话题可以说很多,这里就不重复网上可以找到的东西。版权方面,与GPL不同, BSD协议 是一个相当适合科研以、创业以及商业应用的协议。 BSD系列的操作系统的优点主要体现在科研(如NetBSD的硬件移植性、OpenBSD的安全性)、特定应用(如Web)等技术领域,在桌面应用方面并没有特别的表现;和Linux一样,只是一个内核,桌面还是Gnome、KDE之类。 ============================= 关于博主 ============================= 博主的主要兴趣是:知识管理;相关兴趣有:语义网、机电及DIY、哲学与心理、信息安全、科幻等。 我的常用博客在科学网 (访问可点链接,下同); 新浪微博是@outcrop ,欢迎互粉;建了一个超级QQ群:17662971,希望能闲聊无白丁,欢迎加入;自己打理着一个 机电工程师 小网站,欢迎来玩。最近在科学网关注“ 科学网大学 ”,欢迎加入 科学网大学群组 讨论、尝试。
个人分类: 科技八卦|5600 次阅读|2 个评论
这是一条不归路
热度 2 accsys 2010-10-9 06:47
姜咏江 新买了一台Toshiba笔记本,被强行捆绑安装了Win7操作系统,没用过win7,那就试试吧。用了两个月,最终还是决定重装win-xp了,原因很简单,Win7速度慢,不好用。前后两个操作系统我用同一程序运行进行了测试,Win7之下用了5分多钟,而Win-xp之下仅用了2分零8秒! 计算机产品的这种强行捆绑销售是不是应该反对?美国有反垄断法,中国有没有? 计算机产业是一个不断更新的产业,然而更新的产品是不是真好,有没有市场欺诈和强行推销行为?我看所谓的多核和计算机系统软件的捆绑销售就是。 目前,计算机系统的纯软件管理方式,实际上为我们使用计算机架设了一条不归路。由于计算机的软件管理系统允许正反两种行为的博弈,因而造成所谓的系统软件规模越来越庞大,在计算机的运行过程中,系统软件抢占的机时越来越多。尽管计算机的硬件品质不断提高,然而这种提高会被功能齐备的系统软件消耗掉,留给用户的实惠仅仅就剩下了其中的一小部分,我们是应该有一些体会吧? 从计算机市场的多核技术来看,用户并没有体会到多核成倍的效率提高,虽然我们较单核花了成倍的钱。按着一般并行工作的理解,工作单位的倍数增加一般都会得到成倍的效率,而双核计算机效率的提高最高也不超过30%,而且超过了一定数目的多核处理器,效率不提,反而下降,这是为什么?这都是操作系统软件管理方式的弊端造成的。 好心的人士一直在设想研制出完善的操作系统,进而能够防范病毒黑客和一切不良信息。这实质只是一种幻想。操作系统是什么?是程序。程序越要完善就会书写的越长,因而暴露的漏洞就可能越多,就会给病毒黑客的攻击造成更大的机会,那是道高一尺,魔高一丈的事情,岂有完结之时? 我们很需要去研究软件管理方式的弊端,去寻求从根本上破解之法。在当今片上多处理器技术和方法革命之际,给我们中国人留下了一个宝贵的机会,希望大家能够抓住这个机会,为中国的计算机事业争得一席之地。 2010-10-9
个人分类: 教学笔记|4528 次阅读|3 个评论
[转载]TinyOS操作系统学习
hlyxue 2010-7-1 21:34
概述 ◆TinyOS操作系统、库和程序服务程序是用nesC写的 ◆nesC是一种开发组件式结构程序的语言 ◆nesC是一种C语法风格的语言,但是支持TinyOS的并发模型,以及组织、命名和连接组件成为健壮的  嵌入式网络系统的机制 ◇nesC应用程序是由有良好定义的双向接口的组件构建的 ◇nesC定义了一个基于任务和硬件事件处理的并发模型,并能在编译时检测数据流 组件 ◆规范 ◇nesC应用程序由一个或多个组件连接而成 ◇一个组件可以提供或使用接口 Module of Sense Application SenseM.nc ------------------------------------------------ |module SenseM { | provides { | interface StdControl; | } | uses { | interface Timer; | interface ADC; | interface StdControl as ADCControl; | interface Leds; | } |} ------------------------------------------------ ◆提供StdControl接口 ◆使用Timer、ADC、StdControl、Leds接口 ◇nesC程序中可以使用同一个接口的多个实例 ●interface StdControl as ADCControl ●ADCControl是StdControl的实例 ◇不提供实例名,则实例名与接口名相同 ●interface ADC相当于interface ADC as ADC Configuration of Sense Application Sense.nc -------------------------------------------------- |configuration Sense { | // this module does not provide any interface |} |implementation |{ | components Main, SenseM, LedsC, TimerC, Photo; | | Main.StdControl - SenseM; | Main.StdControl - TimerC; | | SenseM.ADC - Photo; | SenseM.ADCControl - Photo; | SenseM.Leds - LedsC; | SenseM.Timer - TimerC.Timer ; |} -------------------------------------------------- ◆不提供任何接口 ◆使用Main、SenseM、LedsC、TimerC、Photo模块 ◆连接Main.StdControl接口到SenseM.StdControl和TimerC.StdControl ◆连接SenseM.ADC接口到Photo.ADC ◆连接SenseM.ADCControl到Photo.StdControl ◆参数化接口 ◇组件可以使用相同接口的不同实例,并分别为其命名 provides { interface StdControl as fooControl; interface StdControl as barControl; } ◇参数化接口允许组件通过运行时或编译时参数值使用多个该接口的实例 provides interface Timer ; ◇每个Timer可以有256实例,每个实例对应一个8位数字 ◇unique、uniqueCount函数 ●产生一个唯一的8位数字与参数关联。 ●unique(Timer)是产生一个唯一的数字与Timer串关联;unique(Timer)与unique(MyTimer)可能产生相同的数; ●uniqueCount返回与参数关联的数的个数 任务 执行应用程序通用后台进程 任务的建立和调度 TinyOS提供任务和硬件事件处理两级调度体系 async关键字声明硬件事件处理的command和event 可以在任意时刻运行 做少量工作,要快速完成 任务用于处理复杂操作,比如后台数据处理,可以被硬件事件处理程序抢占 任务的定义语法 task void taskname() { ... } taskname是给任务取的符号名字 任务不能有参数,必须返回void 分派任务语法 post taskname(); 可以在command中提交任务 可以在event中提交任务 可以在Task中提交任务 post后的任务被放到一个内部FIFO任务队列 ●组件中command接口由组件本身实现 ●组件中event接口由调用者实现 ●接口是双向的,调用command接口必须实现其event接口 ◆实现 ◇modules ●包含应用程序代码,实现接口 ◇configurations ●装配模块,连接模块使用的接口到其提供者 ●每个nesC应用程序都有一个顶级configuration连接内部模块 并发模型 ◆TinyOS只能运行单个由所需的系统模块和自定义模块构成的应用程序 ◆两个线程 ◇任务 ●一次运行完成,非抢占式 ◇硬件事件处理 ●处理硬件中断 ●一次运行完成,抢占式 ●用于硬件中断处理的command和event必须用async关键字声明 ◆执行流程(race conditions) ◇nesC要避免任务排他性访问共享数据 ◇nesC要避免所有共享数据访问都通过原子语句 ◇nesC在编译过程中要检测数据流,但可能误报,可用norace关键字声明不检测,但对其使用应格外小心 CntToLedsAndRfm configuration CntToLedsAndRfm.nc ---------------------------------------------------------- |configuration CntToLedsAndRfm { |} |implementation { | components Main, Counter, IntToLeds, IntToRfm, TimerC; | | Main.StdControl - Counter.StdControl; | Main.StdControl - IntToLeds.StdControl; | Main.StdControl - IntToRfm.StdControl; | Main.StdControl - TimerC.StdControl; | Counter.Timer - TimerC.Timer ; | IntToLeds - Counter.IntOutput; | Counter.IntOutput - IntToRfm; |} ---------------------------------------------------------- ◆使用模块Main、Counter、IntToLeds、IntToRfm和TimerC ◆在Main中初始化Counter、IntToLeds、IntToRfm和TimerC ◆都是标准库 ◆Counter处理Timer.fire()事件 ◆IntOutput接口 ◇output() Command:有一个16位的参数 ◇outputComplete() Event:返回一个result_t ◆IntToLeds:在LED上显示值的低三位 ◆IntToRrm:通过Radio广播 ◆Counter使用IntToLeds和IntToRfm的IntOutput接口 ◆箭头总是由使用者指向提供者 发送消息 ◆TinyOS中的radio通信采用Active Message(AM)模型,网络中的每个包都有一个handler ID,接收结点 会触发这个ID对应的事件,可以认为这个ID是端口号,不同的结点可以把不同的事件关联到相同的handler ID。 ◆在消息传递层,成功的通信涉及5个方面 ◇标明发送数据 ◇标明接收结点 ◇回收与发送数据相关联的内存 ◇缓存接收数据 ◇处理消息 IntToRfm configuration IntToRfm.nc ---------------------------------------------- |configuration IntToRfm |{ | provides interface IntOutput; | provides interface StdControl; |} |implementation |{ | components IntToRfmM, GenericComm as Comm; | | IntOutput = IntToRfmM; | StdControl = IntToRfmM; | | IntToRfmM.Send - Comm.SendMsg ; | IntToRfmM.StdControl - Comm; |} ---------------------------------------------- ◆IntToRfm configuration提供了两个接口IntOputput和StdControl ◆提供了接口的configuration也成为了组件,可以被其它configuartion使用 ◆组件别名 ◇使用了GenericComm组件 ◇取别名(local name)Comm ◇为了能方便地使用其它通信组件替换GenericComm而不用修改每一处作用该组件的代码 ◆=(equal sign) ◇IntOutput = IntToRfmM ◇StdControl = IntToRfmM ◇模块中左面接口的实现等价于右边模块中接口的实现 ◆AM_INTMSG是定义在tos/lib/Counters/IntMsg.h中的全局常量 IntToRfm module IntToRfmM.nc ---------------------------------------------------------------- |bool pending; |struct TOS_Msg data; | |/* ... */ | |command result_t IntOutput.output(uint16_t value) { | IntMsg *message = (IntMsg *)data.data; | | if (!pending) { | pending = TRUE; | | message-val = value; | atomic { | message-src = TOS_LOCAL_ADDRESS; | } | | if (call Send.send(TOS_BCAST_ADDR, sizeof(IntMsg), data)) | return SUCCESS; | | pending = FALSE; | } | return FAIL; |} ---------------------------------------------------------------- ◆IntMsg结构(tos/lib/Counters/IntMsg.h) ◇Field: val ◇Field: src ◆TOS_LOCAL_ADDRESS ◇全局常量 ◇代表local source address ◆TOS_BCAST_ADDR ◇全局常量 ◇代表radio广播地址 ◆TOS_Msg(tos/system/AM.h) ◇send函数所使用的消息结构 ◇IntMsg是对TOS_Msg的封装 ◆调用Send.send()发送数据 ◇数据分段 ◇数据传完触发SendMsg.sendDone()事件 ◇发送成功才接收下一个分段消息队列 ◇发送不成功就不接受传输消息 ◆TinyOS Active Message缓存管理 ◇允许并发操作 ◇遵守严格的可选所有者协议,避免太大内存管理开销 ◇message layer接受send()后,管理缓存,传输完成前不允许请求者再修改缓存 ◆pending flag ◇跟踪缓存状态 ◇前面的消息没发完,则放弃output(),返回FAIL ◇缓存可用,则发送消息 ◆GenericComm网络栈(tos/system/GenericComm.nc) ◇TinyOS generic网络栈的实现 ◇使用低级接口实现通信 ◇AMStandard实现Active Message的接收与发送 ◇UARTNoCRCPacket实现mote的串口通信 ◇RadioCRCPacket实现radio通信 ◆RfmToLeds ◇ReceiveMsg接口(tos/interfaces/ReceiveMsg.nc)只定义了一个事件: receive() ◇接收消息的内存管理是动态继承的 ◇Active Message层解码handler type并进行分派 ◇缓存被传递给程序(通过ReceiveMsg.receive()事件),但关键的是,程序必须在处理完后返回指向缓存的指针 ◇若是要保存消息内容以后处理,那么应复制消息内容到新的缓存,或向网络栈返回一个新缓存的指针 ◆底层细节 ◇消息头中包含group ID,使得多个mote组可以共享同一个radio channel ◇group ID是一个8位数 ◇默认group ID是0x7D ◇使用DEFAULT_LOCAL_GROUP改变默认group ID ●DEFAULT_LOCAL_GROUP = 0x42 # for example... ◇使用MakeLocal文件改变所有程序胡group ID ◇消息头带有16位的目的结点地址 ◇组中的每个通信结点在编译时都分配有惟一一个16位地址 ◇TOS_BCAST_ADDR (0xfff)广播通用地址 ◇TOS_UART_ADDR (0x007e)串口通用地址 TOSSIM ◆TOSSIM是直接从TinyOS代码中编译而来的TinyOS模拟器 ◆运行于桌面电脑和笔记本上 ◆可同时模拟上千个运行相同程序的结点 ◆可在运行时配置调试输出信息 Building and Running an Application ◆make pc编译得到TOSSIM ◆TOSSIM可执行文件是build/pc/main.exe ◆control-C停止模拟 ◆默认输出所有调试信息 ◆TOSSIM的最高频率为40KHZ 增加调试语句 ◆Application components和调试的四种保留模式:usr1、usr2、 usr3、和temp ◆调试信息命令 ◇语法 ●dbg(mode, const char* format, ...); ◇mode指出以那种DBG模式输出调试信息 ◇tos/types/dbg_modes.h包含全部可用模式 ◇其它参数与printf()的参数同语义
个人分类: 科研笔记|3931 次阅读|0 个评论
[转载]avr操作系统内核(可剥夺型)
hlyxue 2010-7-1 15:59
//multask.c //最多同时运行8个任务 //内核总是运行优先级最高的进程,同优先级进程时间片轮转执行 //每个任务有自己的堆栈空间 //中断有自己的堆栈空间,可根据实际要求扩大缩小,便于管理 //此内核为可剥夺型实时内核 //采用消息驱动,可通过消息更改进程优先级,进程优先级为16级 //消息有一定的编码规则,有专门的函数处理消息(应包括提权、传送标识、传送特殊数据等功能) //各任务应设计成一开始检查信箱,根据消息来进行操作 //采用WinAVR-20071221编译 //mcu=atmega16 //f_cup=4000000 #includeavr/io.h #includeavr/interrupt.h #includeinttypes.h #define maxtask 4 //最大任务数,根据实际情况来设定 #define taskstackdeep 100 //任务堆栈的深度 #define intstackdeep 200 //中断空间的堆栈深度 #define qmax 8 //最大可接收的消息数,即消息队列的长度 #define timechiplong 100 //时间片长度 register uint8_t curid asm(r2);//目前正在运行的任务号 register int8_t sig1 asm(r3); //1号信号灯 register uint8_t inttmp asm(r4); //中断中的临时变量 register uint8_t maxpowerid asm(r5); //最大优先级的id register uint8_t maxpower asm(r6); //最大优先级 register uint8_t maxpowertimer asm(r7); //最大优先级时间片 register uint8_t tempR8 asm(r8); register uint8_t tempR9 asm(r9); register uint8_t tempR10 asm(r10); register uint8_t tempR11 asm(r11); register uint8_t tempR12 asm(r12); register uint8_t tempR13 asm(r13); register uint8_t tempR14 asm(r14); register uint8_t tempR15 asm(r15); register uint8_t tempR16 asm(r16); register uint8_t tempR17 asm(r17); void TIMER0_COMP_vect( void ) __attribute__ ( ( signal, naked ) ); //声明时间片中断不自动保护现场 //数据结构 任务控制块 struct tcb{ uint8_t id;//任务id,从1开始 uint8_t stack ; uint8_t *stacktop;//任务堆栈顶,是creat还是从中断恢复都能够执行 uint8_t power;//优先级 uint8_t timer;//任务执行后走了多少个时间片 uint8_t tasksta; //任务状态 0:停止 1:挂起 2:运行/就绪 uint8_t tchipto; //默认值为0;还是时间片轮转,发现此标志时,运行tchipto,相当于将自己的时间片给了tchipto }tasktcb ; uint8_t intstack ;//设定在中断内部堆栈空间的使用包括子程序等等 //消息队列 struct queue{ uint8_t *fstadd; //首地址 uint8_t qelement ; //队列元素 uint8_t qsize; //队列长度 }msgbox ; //队列初始化; void init_msgbox() { uint8_t i; for(i=0;imaxtask;i++) { msgbox .fstadd=msgbox .qelement; msgbox .qsize=0; }; }; //入队列操作 uint8_t in_q(uint8_t id,uint8_t msg) { uint8_t * offset; if(msgbox .qsize=qmax) { return 0; } else { msgbox .qsize++; offset=(msgbox .fstadd+msgbox .qsize)-(msgbox .qelement+qmax); if(offset0); { *(msgbox .qelement+offset-1)=msg; return 1; } else { msgbox .qelement =msg; return 1; }; }; }; //出队列操作,返回状态, 将结果存放在 *msg里 uint8_t out_q(uint8_t id,uint8_t *msg) { if(msgbox .qsize==0) { return 0; } else { msgbox .qsize++; msg=msgbox .fstadd; msgbox .fstadd++; if(msgbox .fstadd(msgbox .qelement+qmax-1)) { msgbox .fstadd=msgbox .qelement; }; }; return 1 } uint8_t sendmsg(uint8_t to,uint8_t msg) { return in_q(to,msg); }; uint8_t readmsg(uint8_t id,uint8_t *msg) { return out_q(id,msg); }; void task1(void) { while(1) { PORTA++;//可考虑有一定的延时 }; }; void task2(void)//可考虑有一定的延时 { while(1) { PORTB--; }; }; //初始化任务 void oscreatetask(void (*fun)(void),uint8_t id,uint8_t power) { uint8_t *stack; stack=tasktcb .stack; stack=stack+63; *stack--=(uint16_t)fun; *stack--=(uint16_t)fun8; *stack--=0x00; //r1=0 *stack--=0x00; //r0=0 *stack--=0x80; //开中断 for(uint8_t i=1;i=14;i++) { *stack--=i; } tasktcb .stacktop=stack; tasktcb .power=power; }; //开始运行任务,从id号任务开始运行 void osstarttask(uint8_t id) { curid=id; SP=(uint16_t)(tasktcb .stacktop+17); __asm__ __volatile__(reti); } //时间片中断,含任务调度程序 ISR(TIMER0_COMP_vect) { __asm__ __volatile__(PUSH __zero_reg__ \n\t); //R1 __asm__ __volatile__(PUSH __tmp_reg__ \n\t); //R0 __asm__ __volatile__(IN __tmp_reg__,__SREG__ \n\t); //保存状态寄存器SREG __asm__ __volatile__(PUSH __tmp_reg__ \n\t); __asm__ __volatile__(CLR __zero_reg__ \n\t); //R0重新清零 __asm__ __volatile__(PUSH R18 \n\t); __asm__ __volatile__(PUSH R19 \n\t); __asm__ __volatile__(PUSH R20 \n\t); __asm__ __volatile__(PUSH R21 \n\t); __asm__ __volatile__(PUSH R22 \n\t); __asm__ __volatile__(PUSH R23 \n\t); __asm__ __volatile__(PUSH R24 \n\t); __asm__ __volatile__(PUSH R25 \n\t); __asm__ __volatile__(PUSH R26 \n\t); __asm__ __volatile__(PUSH R27 \n\t); __asm__ __volatile__(PUSH R30 \n\t); __asm__ __volatile__(PUSH R31 \n\t); __asm__ __volatile__(PUSH R28 \n\t); //R28与R29用于建立在堆栈上的指针 __asm__ __volatile__(PUSH R29 \n\t); //入栈完成 //------------------------------------------------------------------ tasktcb .stacktop=(uint8_t *)SP; SP=(int16_t)(intstack+intstackdeep-1); //此处填入代码 //1、找到优先级最高的任务 =maxpowerid,并比较一次timer 最大的得到执行权 if(maxtask1) { for(inttmp=0;inttmpmaxtask-1;inttmp++) { if(tasktcb .powertasktcb .power) { maxpower=tasktcb .power; maxpowerid=tasktcb .id; maxpowertimer=tasktcb .timer; } else { if(tasktcb .powertasktcb .power) { maxpowr=tasktcb .power; maxpowrid=tasktcb .id; maxpowertimer=tasktcb .timer; } else //相等 { if(tasktcb .timermaxpowtimer) { maxpowerid=inttmp; maxpowertimer=tasktcb .timer; }; }; }; }; } else { if(tasktcb .power=maxpower and tasktcb .timermaxtimer) { maxpowerid=maxtask-1; }; }; //马上要执行的时间片清0 tasktcb .timer=0; //每个时间片加1 for(inttmp=0;inttmpmaxtask;inttmp++) { tasktcb .timer++; }; //选择时间片 curid=maxpowerid; SP=(uint16_t)tasktcb .stacktop; //切换堆栈 //------------------------------------------------------------------ __asm__ __volatile__(POP R29 \n\t); __asm__ __volatile__(POP R28 \n\t); __asm__ __volatile__(POP R31 \n\t); __asm__ __volatile__(POP R30 \n\t); __asm__ __volatile__(POP R27 \n\t); __asm__ __volatile__(POP R26 \n\t); __asm__ __volatile__(POP R25 \n\t); __asm__ __volatile__(POP R24 \n\t); __asm__ __volatile__(POP R23 \n\t); __asm__ __volatile__(POP R22 \n\t); __asm__ __volatile__(POP R21 \n\t); __asm__ __volatile__(POP R20 \n\t); __asm__ __volatile__(POP R19 \n\t); __asm__ __volatile__(POP R18 \n\t); __asm__ __volatile__(POP __tmp_reg__ \n\t); //SERG 出栈并恢复 __asm__ __volatile__(OUT __SREG__,__tmp_reg__ \n\t); // __asm__ __volatile__(POP __tmp_reg__ \n\t); //R0 出栈 __asm__ __volatile__(POP __zero_reg__ \n\t); //R1 出栈 __asm__ __volatile__(reti); } //信号灯函数 p操作 int8_t op_p(int8_t *x) { x--; return *x; }; //信号灯函数 v操作 int8_t op_v(int8_t *x) { x++; return *x; }; //信号灯初始化 void op_init(int8_t *x,uint8_t y) { *x=y; }; void timechip_init(void) { OCR0=100; TIMSK|=(1OCIE0); TCCR0|=(1WGM01)|(1CS02); //256分频 oscreatetask(task1,0,100); oscreatetask(task2,1,100); asm(sei); osstarttask(1); }
个人分类: 科研笔记|3665 次阅读|0 个评论
[转载]【趣闻】Google不让C语言之父提交代码
NatureXin 2010-4-22 10:09
2010-04-22 01:39 | 次阅读 | 【已有 23 条评论】 发表评论 关键词: Google | 感谢 liujiangCE 的提供 | 收藏这篇资讯 哀悼结束,生活还要继续。 说段趣闻吧。大家都知道,C语言和Unix的发明者、图灵奖得主、最具传奇性的程序员Ken Thomson加盟Google之后,与一帮高手一起捣鼓出了又一惊天之作:并发时代的系统编程语言Go。Go一经面世就闯入了编程语言排行榜前20,创造了奇迹。 可是, Gawker网站今天爆料 ,他在Google居然没有提交代码的权力!原因呢,只不过是按公司规定,所有程序员必须通过编程语言考试,而他还没有参加过这种考试,至少在《Coders at Works》一书写作前: Peter Seibel: 我知道Google有一个规定,每个新员工都要在接受编程语言测试之后,才允许提交代码。那就是说你也得考(你自己发明的)C罗? Thompson: 是啊,我还没考呢。 Seibel: 你还没考? 难道你还不能提交代码吗? Thompson: 是啊,我不能提交代码,不行我只是还没有去考试,还没觉得有必要去考。 看来Google真是一家唯算法唯规则的公司。三年前,Google曾被曝光用算法和机器人程序来给申请者提交的简历打分。此外还有很多招聘和面试程序中的古怪事情不断见诸报端。 无独有偶,昨天成为CSDN头条的文章从盖茨到扎克伯格:极客的力量中,也爆出开发Mac操作系统核心程序员之一Hertzfeld现在在Google也不快乐: 使赫兹菲尔德发生变化的不只是时间,还有他的工作环境。谷歌将工程师看作最重要的资产,认为员工必须喜欢自己从事的工作,同时支持开源软件。但赫兹菲尔德承认,谷歌是一家大公司,在产品设计方面有严格的标准和程序,因此减少了他工作中的乐趣。他说:我与工作的关系是艺术家与他的作品的关系,但在谷歌,我无法从自己的工作中获得快乐。 尽管个人的控制力降低了,但赫兹菲尔德拥有了产生更大影响的可能性。有时,谷歌的几行代码可能会影响成千上万的人,这为他的工作带来了一种激情。他说:这里的一切都是主流的。谷歌、iPhone,这些比上世纪60年代甲壳虫乐队更能影响文化,它们甚至会影响整个人类。 对了, 《Coders at Work》 一书是对15位顶级程序员(包括图灵奖得主高德纳、Erlang和JavaScript 之父、Norvig、Guy Steele等等大师)的访谈集,在同类书中是最有趣、最有料而且最精彩的一本。中文版还在翻译中,将由人民邮电出版社图灵公司出版。微软研究院的邹欣做了 不错的读书笔记1 , 2 , 3 , 4 ,大家可以去先睹为快。搞技术的,了解高手的思想有时候至关重要。
个人分类: 未分类|3239 次阅读|0 个评论
扶持软件产业应该从市场入手
hezhenfeng 2010-3-7 20:47
马上就是茶叶季了,老家的人又要忙了。这些年,茶叶价格没涨多少,可雇工价格却涨了很多,所以一般也不请外来工了。没有了外地采茶女,茶叶季就特别忙。也不知道当前炒得很火的软件外包业,随着劳动力成本的上升,会不会沦落到今日采茶女的地步了。 有人会反对,声称这些软件企业到时候会生产自己的软件,不必再干外包了。但软件业与其它产业完全不同:如果有人低价卖一辆车给你,并且保证此车质量很好,你很可能会买。如果有人送(不是卖,是白送!!!)个操作系统XXX,保证XXX比windows强,估计绝大多数人会拒绝。为什么?大家需要的不仅仅是一个操作系统,还有众多运行在该操作系统上的软件,你能保证XXX能一直支持这些软件吗?也就是说,软件业缺少的是顾客。 今天的中国软件业有点象10多年前的房地产:当年因为有福利房,没几个人愿意花钱去买房,但自从98年取消了福利房以后,多数城镇居民就只有买房一条路了,这样就给房地产创造了一个巨大市场。有了市场,房地产就发展起来了。软件业也一样,现在的市场都被牢牢地占了,软件无处可销。如果真要扶持,就给软件业创造一个市场吧。 中国软件业的市场有没有呢?当然有。中小学的信息技术课程似乎是在让学生全面掌握微软的软件。听过两次小学电脑课,让我非常吃惊,内容详细到office最大的字体是多少,最小的字体是多少,windows 桌面上哪些图标只按一次就启动,哪些须按两次。原来我们的义务教育阶段是在替微软培养未来的用户!!! 实际上,义务教育不是职业教育,不应当培养学生使用这些商业软件。国家应当分析义务教育阶段需要教授的软件知识,如绘图,办公系统,操作系统,程序设计等,并据此制订相应的教育软件标准,要求按此标准开发教育软件,各地市教育部门通过招标确定使用的软件,为了保证标准在自己手里,保证义务教育软件市场不致于为某一个软件公司控制,可规定中小学的每一台电脑中安装的这些教育软件应当来自不同的软件企业,除了汉语的教育软件,同时还开发一些民族语言的教育软件。这样,几十万所中小学的教育软件需求,就可能支撑起一些国内的软件企业。同时也能把教育软件的标准掌握在自己手里。经过一段时间以后,当这些标准比较完善,国内软件企业竞争力较强时。还可以开发国家机关、国有企事业单位的软件市场。 当然,这种教育软件招标一定要公开公正。否则,中小学就很可能不愿意使用这些中标软件,阳奉阴违地对付你,市场还是没有了。
个人分类: 未分类|4039 次阅读|1 个评论
我说操作系统有问题为何无人信
accsys 2009-12-19 11:08
我在研究多处理器动态计算机的过程中,深感现代操作系统的处理机管理和内存管理的软件方法,已经成为了多处理器计算机程序并行执行的严重障碍,并经过几年的努力,在2006年设计和制作了能够不用操作系统来管理处理器运行的动态计算机核心,实际地让6个程序自动调度运行在5个处理器上,实现了真正的处理器并行运行。 我的设计发明搞成功后,以一种PU-MU-CHL结构计算机核心设计申请了国家专利,并在这几年到处宣传我的动态计算机。当我说到操作系统对多处理器发展的影响,说到不用操作系统可以完成程序自动调度和运行的时候,许多计算机人士都摇头,其中也不乏有人说:农民造飞机! 峰回路转,今年国外计算机界也开始对操作系统提出了置疑,于是在2009年中国计算机大会上也听到了置疑操作系统的声音。 这件事反映了我们计算机科研界的一个不大不小的问题,由于美国计算机界的领先地位,使我们国内的计算机界一些人陷入了麻木的境地,盲目地追随美国研究题目成风,不知不觉中已经将美国人的话当成了圣旨,而忘记了科学的本身,需要用研究的事实来说明成功与失败,对与错,这样一个现实问题。 我们要想超越美国的计算机领先地位,就应该在学习他们的同时,要有发现他们研究的不足的勇气,脚踏实地地认真分析研究,创立自己的观点和方法,实事求是地相互讨论,取长补短,只有这样我们才能够超越他们。 一个国内著名的计算机杂志编辑问过我一句话:这么重要的问题为什么美国人没搞?面对这样的问题,我无言以对。 在计算机难得的机遇与挑战的大潮中,勇于探索,敢于有依据地否定那些被认为是不变的东西,或者去发现新的东西,相信我们自己,比相信别人会更重要。 2009-12-19
个人分类: 随笔|3442 次阅读|3 个评论
计算机体系结构的圈子
accsys 2009-12-8 08:02
参加了中国计算机2009年大会,目的是寻找同行讨论自己研究的动态计算机问题。最关心的是多核技术分会场,希望能够听到真知灼见的发言。然而,给我的印象是距离计算机体系结构的深层次太远。多数发言者都没有深入到操作系统以下的层面讨论多核,更不要说对片上多核结构提出更有价值的观点。举例来说,某教授演讲,将多个操作系统同时放在一个虚拟计算机上,在虚拟机的下方连接上许多核。会下,我问:如何将多核与虚拟机连接?没有回答。且不说多操作系统同处一机如何协调带来的软件复杂度,这样做不违背操作系统的精神吗?不要因为国外有此类修补之作,我们就一定要跟上,这样会浪费许多宝贵的时间。 片上多核最重要的是结构问题,当前,多核结构设计之所以讨论热烈,是因为结构直接关系到多处理器的充分调动,关系到并行程序设计,关系到如何能够让更多的程序,在一机的多个处理器上自由地同时执行,从而高效大量地完成任务。人们不断地重复着存储墙任务墙功耗墙并行编程墙这些挑战性的课题,然而没有听到一点关于多核技术在这方面的破解之术,哪怕是设想也好,叫人感到遗憾。 对功耗墙我没有研究,因而没有发言权,但我的动态计算机可以解决其他三墙。由于我未能进入计算机体系结构的圈子,自然没有我的发言权。在提问的环节中我提出了希望,希望这个计算机界重要的圈子,能够将理论研究放在一个重要的位置,其次是增强硬件方面的研究(主要指微体系结构方面),硬件结构决定着操作系统。 无论如何,这次计算机大会能一改全盘软件研究为中心的特点,就已经叫人感到安慰和振奋了。 总的感觉,体系结构的圈子,要加快向更深层次的计算机体系结构进军的脚步。 2009-12-8
个人分类: 随笔|4283 次阅读|0 个评论
Cygwin是什么?
zswm27 2009-8-4 11:02
cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购)。它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对cygwin产生了兴趣。 cygnus当初首先把gcc,gdb,gas等开发工具进行了改进,使他们能够生成并解释win32的目标文件。然后,他们要把这些工具移植到windows平台上去。一种方案是基于win32 api对这些工具的源代码进行大幅修改,这样做显然需要大量工作。因此,他们采取了一种不同的方法他们写了一个共享库(就是cygwin dll),把win32 api中没有的unix风格的调用(如fork,spawn,signals,select,sockets等)封装在里面,也就是说,他们基于win32 api写了一个unix系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用unix主机上的交叉编译器来生成可以在windows平台上运行的工具集。以这些移植到windows平台上的开发工具为基础,cygnus又逐步把其他的工具(几乎不需要对源代码进行修改,只需要修改他们的配置脚本)软件移植到windows上来。这样,在windows平台上运行bash和开发工具、用户工具,感觉好像在unix上工作。 关于cygwin实现的更详细描述,请参考 http://cygwin.com/cygwin-ug-net/highlights.html. 安装网络版的cygwin,可以到 http://cygwin.com ,点击Install Cygwin Now!。这样会先下载一个叫做setup.exe的GUI安装程序,用它能下载一个完整的cygwin。按照每一屏的指示可以方便的进行安装。 开始运行bash之前,应该设置一些环境变量。cygwin提供了一个.bat文件,里面已经设置好了最重要的环境变量。通过它来启动bash是最安全的办法。这个.bat文件安装在cygwin所在的根目录下。 可以随意编辑该文件。 CYGWIN变量用来针对cygwin运行时系统进行多种全局设置。开始时,可以不设置CYGWIN或者在执行bash前用类似下面的格式在dos框下把它设为tty C:\ set CYGWIN=tty notitle glob PATH变量被cygwin应用程序作为搜索可知性文件的路径列表。当一个cygwin进程启动时,该变量被从windows格式(e.g. C:\WinNT\system32;C:\WinNT)转换成unix格式(e.g., /WinNT/system32:/WinNT)。如果想在不运行bash的时候也能够使用cygwin工具集,PATH起码应该包含x:\cygwin\bin,其中x:\cygwin 是你的系统中的cygwin目录。 HOME变量用来指定主目录,推荐在执行bash前定义该变量。当cygwin进程启动时,该变量也被从windows格式转换成unix格式,例如,作者的机器上HOME的值为C:\(dos命令set HOME就可以看到他的值,set HOME=XXX可以进行设置),在bash中用echo $HOME看,其值为/cygdrive/c. TERM变量指定终端型态。如果美对它进行设置,它将自动设为cygwin。 LD_LIBRARY_PATH被cygwin函数dlopen()作为搜索.dll文件的路径列表,该变量也被从windows格式转换成unix格式。多数Cygwin应用程序不使用dlopen,因而不需要该变量。 Cygwin程序缺省可以分配的内存不超过384 MB(program+data)。多数情况下不需要修改这个限制。然而,如果需要更多实际或虚拟内存,应该修改注册表的HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER区段。田家一个DWORD键heap_chunk_in_mb并把它的值设为需要的内存限制,单位是十进制MB。也可以用cygwin中的regtool完成该设置。例子如下: regtool -i set /HKLM/Software/Cygnus\ Solutions/Cygwin/heap_chunk_in_mb 1024 regtool -v list /HKLM/Software/Cygnus\ Solutions/Cygwin 这一段讲一下cygwin和传统unix系统的不同之处。 cygwin同时支持win32和posix风格的路径,路径分隔符可以是正斜杠也可以是反斜杠。还支持UNC路径名。(在网络中,UNC是一种确定文件位置的方法,使用这种方法用户可以不关心存储设备的物理位置,方便了用户使用。在Windows操作系统,Novell Netware和其它操作系统中,都已经使用了这种规范以取代本地命名系统。在UNC中,我们不用关心文件在什么盘(或卷)上,不用关心这个盘(或卷)所在服务器在什么地方。我们只要以下面格式就可以访问文件: \\服务器名\共享名\路径\文件名 共享名有时也被称为文件所在卷或存储设备的逻辑标识,但使用它的目的是让用户不必关心这些卷或存储设备所在的物理位置。) 符合posix标准的操作系统(如linux)没有盘符的概念。所有的绝对路径都以一个斜杠开始,而不是盘符(如c:)。所有的文件系统都是其中的子目录。例如,两个硬盘,其中之一为根,另一个可能是在/disk2路径下。 因为许多unix系统上的程序假定存在单一的posix文件系统结构,所以cygwin专门维护了一个针对win32文件系统的内部posix视图,使这些程序可以在windows下正确运行。在某些必要的情况下,cygwin会使用这种映射来进行win32和posix路径之间的转换。 cygwin中的mount程序用来把win32盘符和网络共享路径映射到cygwin的内部posix目录树。这是与典型unix mount程序相似的概念。对于那些对unix不熟悉而具有windows背景的的人来说,mount程序和早期的dos命令join非常相似,就是把一个盘符作为其他路径的子目录。 路径映射信息存放在当前用户的cygwin mount表中,这个mount table 又在windows的注册表中。这样,当该用户下一次登录进来时,这些信息又从注册表中取出。mount 表分为两种,除了每个用户特定的表,还有系统范围的mount表,每个cygwin用户的安装表都继承自系统表。系统表只能由拥有合适权限的用户(windows nt的管理员)修改。当前用户的mount表可以在注册表HKEY_CURRENT_USER/Software/Red Hat, Inc./Cygwin/mounts v 下看到。系统表存在HKEY_LOCAL_MACHINE下。posix根路径/缺省指向系统分区,但是可以使用mount命令重新指向到windows文件系统中的任何路径。cygwin从win32路径生成posix路径时,总是使用mount表中最长的前缀。例如如果c:被同时安装在/c和/,cygwin将把C:/foo/bar转换成/c/foo/bar. 如果不加任何参数地调用mount命令,会把Cygwin当前安装点集合全部列出。在下面的例子中,c盘是POSIX根,而d盘被映射到/d。本例中,根是一个系统范围的安装点,它对所有用户都是可见的,而/d仅对当前用户可见。 c:\ mount f:\cygwin\bin on /usr/bin type system (binmode) f:\cygwin\lib on /usr/lib type system (binmode) f:\cygwin on / type system (binmode) e:\src on /usr/src type system (binmode) c: on /cygdrive/c type user (binmode,noumount) e: on /cygdrive/e type user (binmode,noumount) 还可以使用mount命令增加新的安装点,用umount删除安装点。 当Cygwin不能根据已有的安装点把某个win32路径转化为posix路径时,cygwin会自动把它转化到一个处于缺省posix路径/cygdrive下的的一个安装点. 例如,如果Cygwin 访问Z:\foo,而Z盘当前不在安装表内,那么Z:\将被自动转化成/cygdrive/Z. 可以给每个安装点赋予特殊的属性。自动安装的分区显示为auto安装。安装点还可以选择是textmode还是 binmode,这个属性决定了文本文件和二进制文件是否按同样的方式处理。 cygpath工具提供了在shell脚本中进行win32-posix路径格式转换的能力。 HOME, PATH,和LD_LIBRARY_PATH环境变量会在cygwin进程启动时自动被从Win32格式转换成了POSIX格式(例如,如果存在从该win32路径到posix路径的安装,会把c:\cygwin\bin转为/bin)。
个人分类: 学习之路|11417 次阅读|0 个评论
观止
maywuyi 2009-7-30 14:57
我们刚出版了一本新书:《观止》,为这本书的出版,译者花费了很多心思。下面摘录一下译者序: 很多人都知道微软公司,它依靠软件变得非常富有。关于微软是如何从一个只有十来个人的小公司成长起来的故事,很多人都听过。听了后,不少人都觉得它很幸运。那么除了幸运之外,微软还有什么过人之处么?... 微软的软件产品很多,但是在其产品线中,起着中流砥柱作用的当属操作系统,即Windows,中文称视窗。这本书记录了开发Windows NT的全过程。... 讲述了5年中的很多精彩故事,特别是NT团队如何解决开发中的Showstopper类问题的动人情节。 在介绍紧张的开发过程的同时,作者用简炼的笔法,为我们描绘了一大批个性鲜明的人物,包括他们的学习工作经历、性格、家庭、婚恋,以及他们面对困难和压力时的反应。... 我在四年前买了这本书,放在案头,有空的时候就拿起来读一读,有些内容读了很多遍,但是每一次都有新的感受,能受到不同的启发,有技术方面的,有项目管理方面的,也有处世和人生方面的。... 尽管在打算翻译这本书的时候就预计了这个任务会很难,但是实际感受到的难度还是超出了预料。这本书的作者是《华尔街杂志》的著名记者,也许是因为写惯了针砭时弊的新闻稿,他的文笔很是犀利,用词泼辣,豪放不羁。不管是书中的小人物,还是大人物,作者都不加任何粉饰,直言其原貌,甚至缺点,毫不留情。另外,为了力求生动,作者在很多地方使用了口语化的描述方式,用了很多俚语和固定用法的短语。这些特点,使这本书让人读起来感觉很是过瘾,但是却给翻译带了很大的挑战。... 最近几年,我越来越喜欢阅读古代的文学作品,...,有一天,当我在书柜中搜索其它可看的书时,发现了《古文观止》。... 观止是好到极致的意思,出自著名的历史典籍《左传》。原文是说,吴国公子季札到鲁国访问,请求观赏一下周朝的音乐,于是鲁国派了乐队为他演奏,季札一边观赏,一边称赞。当看到歌舞《韶箾》时,他发出由衷的赞叹:德至矣哉,大矣!如天之无不帱也,如地之无不载也!虽有盛德,其蔑以加于此矣。观止矣!若有他乐,吾不敢请已!成语叹为观止就出自于此。 看来汉语中的观止本来也是用来形容精彩的演出,观意为观赏、欣赏,止即停止。这与SHOWSTOPPER(原书名)这个词何其相似,SHOW即表演,STOP即停止,二者加到一起就是令演出停止,后面的ER是英文中名词的常用后缀。看来,中国的古人和西方的圣贤不约而同的使用了同一种方式来表达他们对美好事物的终极赞叹,最由衷的情感和最美丽的语言是跨越地域差异的。想到这里,我如获至宝,决定将SHOWSTOPPER翻译为观止。 原书名:SHOWSTOPPER!:The Breakneck Race to Create Windows NTand the Next Generation at Microsoft 作者:G.Pascal Zachary ISBN:7-111-26530-6 定价:42.00 页数:204 出版日期:2009年04月10日 译者:张银奎; 王毅鹏; 李妍
个人分类: 读书笔记|4845 次阅读|1 个评论
谷歌操作系统尚未出世, Jolicloud捷足先登
pkuzeal 2009-7-10 23:21
如果你在期待着谷歌的操作系统 Chrome ,请先将它放一边, 已经有数个类似的产品了。其中一个就是基于 Linux 的 Jolicloud 该公司刚获得首轮四百二十万美元的风险投资,目前公司正与部分笔记本电脑厂商接洽中。 该系统被称为巴黎计划, 是由 Netvibes 的创始人 Triq Krim 开发的并在业界论证的。当时 Krim 想生产出一个完美的笔记本产品,但现在,他彻底转向了操作系统。注资是由当年孵化出 Skype , KazaA 和 Joost 的 风投 Atomico . Jolicloud 的理念是将传统台式机的图形界面由整合好的网页程序所替代(这点和谷歌的设计出发点很相似)。 其基于 Ubuntu 而能运行 Linux 程序,同时也支持 Windows 软件。该系统甚至包含了一个媒体播放器。尽管 Ubuntu 尚未被外界揭开面纱, Joliclound 这个以网页为中心基于 Linux 用户自定义图形界面的系统已经通过所以大笔记本厂商的测试,其中一些是谷歌的战略伙伴。 目前尚未有人在谈论 Jolicloud 称为网页操作系统中最终获胜,或者谷歌在这场竞争中爆发,甚至 Windows 和 Mac OS 的灭亡。但人们至少认为, Jolicloud 能盈利。
个人分类: 未分类|1055 次阅读|1 个评论
谷歌宣布明年推出PC操作系统 将直接挑战微软(转载)
whitesun 2009-7-9 16:29
谷歌宣布明年推出PC操作系统 将直接挑战微软 (转自http://tech.qq.com/a/20090708/000355.htm) 腾讯科技讯 北京时间7月8日消息,据国外媒体报道,谷歌今日在官方博客中宣布,它正在开发它自己的电脑操作系统,准备向微软在个人电脑市场的领先地位发出直接挑战。 谷歌在博客中表示,谷歌Chrome OS系统是对Chrome网络浏览器的扩展,它是一款面向上网本电脑的开源操作系统。它表示会在今年晚些时候公开其源代码,预计基于该操作系统的上网本产品将在2010年下半年与消费者见面。 谷歌表示,它已经开始同合作伙伴协商有关新操作系统的事宜。 那 篇博客文章的作者是谷歌产品管理副总裁Sundar Pichai和技术总监Linus Upson。他们在博客中写道:速度、简洁与安全是谷歌Chrome OS的关键特点。我们将把这款操作系统设计成快捷、轻便的操作系统,用户只需几秒钟的时间就可以启动并连接到网络。 谷 歌表示,Chrome OS系统与公司为移动设备开发的Android系统不同。Android系统一开始就被设计成能够在手机、机顶盒和上网本等各种设备上运行的系统,而 Chrome OS系统是专为那些在网络上花费大量时间的用户而设计的,它适用于从上网本到完整台式机电脑的各种电脑产品。 谷歌的这项计划加剧了它与微软之间的竞争。除了网络浏览器之外,谷歌与微软还在网络搜索、办公系统软件等领域进行竞争。 谷歌表示:我们听到很多用户明确提出,电脑应该再好一点。 现在用来运行网络浏览器的操作系统是在网络还没有出现的时代被设计出来的。 微软发言人Frank Shaw对此未予置评。(编译/林靖东)
个人分类: 有思有考|2594 次阅读|3 个评论
计算机的心智:操作系统之哲学原理
maywuyi 2009-4-30 16:39
我们出版的新书《计算机的心智:操作系统之哲学原理》是我近年来看到的最好的计算机教材。不是老王卖瓜,没有哪本计算机图书能让我一口气读下去,真的。而这本书中大量的比喻和描述,使枯燥的技术让人轻松起来,很适合入门的读者。下面摘录一点(这是草稿,出版后文字有修改): 1.2 人造与神造 要想学好操作系统,具有恰当的思维模式将十分必要。这个思维模式就是本书所强调的哲学:一种思维方式或一种生活方式。我们以一个问题来说明这一点。这个问题是: 什么是计算机的根本特征? 对于这个问题,相信很多人会说计算机就是个计算机器,或者是用来进行大规模计算的机器。或者是用于数据处理的机器,或其它计算机所具备的某些具体功能。这些回答当然没有错,问题是这些答案并不能帮助我们更好地学习理解计算机。就像我们问张三这个人的根本特点是什么?,而回答是张三有175厘米高一样。这种答案虽然是正确的,但意义不大。因为我们无法从答案中推导出一系列有用的结论。 那这个问题该如何回答呢?这就要看我们对这个世界上事物的观察到什么程度。如果我们仔细看看身边的事物,就会发现所有的东西可以划分为两类:一类是本来就存在于自然中,人类所做的只不过是发现;另一类本来并不存在,人类所做的是发明。第一类事物我们称之为神造事物或者自然存在的事物,第二类事物当然就是人造事物。从这个思维模式上看,计算机毫无疑问就是人造事物。而这正是我们所需要的答案。即计算机的根本特征是人造。 引申一下,我们可知计算机学科就是一个人造学科。那么知道计算机学科是人造学科对我们学习计算机有什么帮助呢?有,太多了。下面我们来看看人造和神造有什么区别。 人造学科的四个特点: 1. 不精确、具有相对性 2. 从对人类活动的观察而导出 3. 依赖于人的主观判断力 4. 通常符合人的直觉 第一个特点说白了就是所谓的没有对错。在人造的学科里,没有什么绝对的对或者错,而只有所谓的好或坏,或者有意义和没意义。例如,如果本书在讨论计算机时某个方面论述得与你见到的计算机不一样,这不说明本书错了。就算世界上没有本书所论述的计算机存在,也不说明本书错了。我们只需要按照本书的论述再造一台计算机即可。但是,本书论述的计算机与你知道的计算机之间可以进行好和坏的比较。 第二个特点说的是人造学科是从什么得到灵感的,那就是对人类活动的观察。这样,读者只要对人类生活仔细观察,就可以容易地理解计算机里面的很多原理。例如,在操作系统里面广泛使用的栈和队列就是从生活中观察到的现象进行抽象所获得,图1-1。 图1-1 从观察人类活动而获得的栈和队列结构 第三个特点说的是在人造学科里,人的主观能动性起到关键的作用。不同的人虽然可能观察到同样的现象,但得出的结论或抽象出的东西不见得一样,甚至完成相反。这样,多数人所认同的抽象就将成为人造学科里的标准。即存在所谓的少数服从多数的原则。 第四个特点说的是人造学科里面的许多原理与人的直觉直接呼应,即如果我们按照人的直觉去理解这些原理,则会十分直截了当。例如,操作系统里面的同步机制与人类男女谈恋爱时所用的约会机制十分相似。对于一个谈过恋爱或与别人约会过的人来说,如果将自己谈恋爱的直觉用在操作系统进程的学习上,就会发现进程同步是个十分容易理解的概念。 相对人造学科,自然存在的,或神造学科刚好具有相反的四个属性: 1. 精确、绝对 2. 从对自然存在的观察而导出 3. 不依赖于人的主观判断力 4. 通常违反人的直觉 第一个特点说的是神造的事物具有精确、绝对的属性。对于这种学科,存在正确与错误之分,我们提出的观点要么正确,要么错误,不存在中间。例如,纯数学领域的各种运算如22的结果应该是4。如果运算的结果不是4,则属于运算错误。 第二个特点说的是人类对这些事物的理解是从对自然存在的观察中获得。例如,牛顿通过观察苹果落地的自然现象和严密的推理,得出了万有引力定律。 第三个特点说的是这些观察的结果是不依赖于人的主观能动性的。这里说的是,如果一个人的观察是正确的话,她的观察将和所有观察正确的人的结果一样,而绝不会是两样。从另外一个角度说,一个人的观察抽象结果是可以被他人验证的。例如,30,000,000,000+ 20,000,000,000对于任何人来说,如果计算正确,则结果必然是50,000,000,000。 第四个特点说的是如果我们按照人的直觉或直观感来学习,就会面临重重困难。因为人的思维与神不一样。自然,按照人的思维模式将很难理解神所创造的这一切。这就是为什么在这些学科耕耘的人都必须依赖灵感的出现,和严密、一丝不苟的数学与逻辑推理。 图1-2 从观察自然存在和严密的数学推理而获得的质能方程 明白了计算机是人造事物,操作系统是一个人造的系统,我们就可以按照人造物的特点来进行学习,从而易如反掌地掌握操作系统的原理。 作者是上海交大的邹恒明博士,很用心的人。更多的连载在华章博客上: http://blog.csdn.net/hzbooks/archive/2009/04/15/4075790.aspx
个人分类: 读书笔记|7183 次阅读|1 个评论
对付高科技骇客的葵花宝典
lujiangxiao 2009-4-4 05:01
刚到NBC网站看了那关于计算机病毒的报导。太牛了,那东东居然能把你家的计算机复制到俄国偏僻村庄,你按那个键那边都能看见。你的果照,个人隐私啥的没啥好看就算了,可你银行帐号啊,信用卡啦,密码啦全都到了在人手里。NBC访问的那人居然在自己的屏幕上眼睁睁地看着骇客远程把自己的银行里的钱集中到一个帐号上,准备移走。  太可怕了,每天都有千百个极为聪明的骇客千方百计地琢磨个人计算机操作系统和互联网的弱点,以便把病毒渗透进每个计算机里。咱老中不怕贼偷,就怕贼惦记。普通百姓没人家聪明,也不懂技术。就算懂了技术也没时间对付千上万的骇客每天24小时的攻击。那咋办呢?   炉匠有炉匠的办法,百分之百保险的办法是,比如,把钱藏在枕头套子里。次一点的如,不把银行账户开在网上,所有开销纸来纸去。这当然没那么方便啦,但也是有效的。    至少对付IRS不错,也就是说,你报税时如果藏有小猫腻,最好不要在网上填表,因为网上的税表是数字版,可以很方便地在那些清华MM编的程序里过一遍,找出可姨的,再让专家看。靠,你这不是往人枪上撞吗!    但是,对付骇客比对付IRS难多了,就得靠炉匠祭出葵花宝典,吐血奉献给大家: 骇客一般是老太太挑柿子,专找软的捏。你在你的肉里添点刺,他就可能不吃了,反正网上肥羊遍地。怎么做呢?比如把密码,银行账户等敏感信息藏在照片里。有软件把这些东东编进去,用时再解出来。因为那些信息体积很小,藏在照片电影中根本看不见。如果你计算机里有万张照片,12G的电影,骇客可没耐心把它们都搬到自己机器里,找到了信息再用。而你只要记住照片或电影名字,就能保险了。    但是,如果骇客看见你一买东西就调用某个电影,也能破了你的阵。所以,你必须在用的时候调用十个电影,一百张照片。反正计算机内部的运作总是超过网上通讯百万倍的,所以只要你不厌其烦,那边就玩不起了。当然这些也并不用你亲手去做,可以用个小程序没事老把信息移来移去,反正计算机闲着也是闲着。买东西一结束立即换密码,不买东西也常常上去换密码。    也许这还不够,更先进的办法是把操作系统变成一个金刚不坏之身。方法很简单,用个bios里的小病毒不断地改变系统文件的名字,同时也去调用这些文件的地方做相应的修改。这样,每个文件名对于骇客来讲都是个谜语,每台机器的系统都成了世界独一无二的。除了本机,谁也不能读写或改动系统文件。    总之,我宝典的精髓是利用本机资源来对付互联网入侵,应该是永远有优势的。如果你们想知道从哪里买这样的程序,抱歉呀,还没有产品呢。方法都是我刚才去打酱油时候才想出来的,献给大家去开发。如和那为顶级天才的想法重合,纯属巧合。
个人分类: 生活点滴|4428 次阅读|2 个评论
微软为何没理了?
ningxinfei 2008-10-22 13:53
文/宁鑫斐 微软开始玩黑了,网友开始恐慌了。微软想借助法律打击盗版,没想到北京律师向公安部举报微软黑屏触犯五大法律。 很多人都说,XP操作系统售价太贵了。但看看国产软件的售价就知道XP操作系统的售价并不是天价,零售版瑞星杀毒软件2008版组合套装的官方售价为398元,而且买了不一定能杀了毒。所以说,不是XP操作系统的售价太贵了,而是我们太穷了!另外,很多人说要是微软操作系统卖100元他们会买,但这样瑞星公司就得喝西北风了。 有人说微软操作系统标价那么高,涉嫌暴利!但看看中国的暴利企业,据媒体报道,中国移动2008年上半年净利润548亿,平均每天的净利润近3亿,这是多么可怕的数字啊!广州移动动感地带用户每个月不打电话,至少也得交25块钱的话费,半年就得150块。《中国青年报》2008年9月8日载文《敢不敢对中移动征收暴利税》,文中作者质疑中移动凭什么获得如此巨大的利润?是因为经营管理得当吗?还是由于他们占据了市场的垄断地位? 答案是显然的。所以,我觉得微软这次玩黑看起来手段有点硬有点狠,但并不高明。而中国移动的手段一直是软的,但很狠很高明。 只要有过科研经历的人就知道,研究出一项成果多么不容易,更不用说创新了。因此我们应该理解微软的做法,保护知识产权是对的,虽然我们现在没有能力不能通过实际行动去支持。如果我们没有钱去买正版,那就继续用盗版啊,微软并不是强制我们的电脑黑屏。如果我们用着盗版,做着理亏的事,还显得振振有词,这样岂不是很不厚道? 有人说:中国应该采取措施,向全世界征收纸张、指南针、印刷、火药等使用费,他们盗版也太猖狂了,用到现在还没提个使用费。 唉,说中国古代文明,其实并不文明,连点知识产权保护意识都没有。 有人说:XP操作系统经过中国人改进,由中国人自己制成商品名曰:蕃茄花园。中国纸经美国人改进,在美国制成商品,名曰美国纸,二者异曲同工,都没给版权费(中国还向美国交了些XP的钱,美国人根本就没给中国人纸的版权费)要算盗版的话,美国造的纸和中国的蕃茄都算盗版,不算的话都不应该算,如果美国人可以对蕃茄等软件黑屏,是否是说中国人就可以对美国生产的纸喷黑墨水? 嗯,具有较好的思维逻辑,但不会算帐,墨水贵还是纸贵? 有人说:如果一个技术加以改进,我们就叫他创新,比如爱迪生发明了电灯,后来的根据他的发明,创新了日光灯,以及现在的组合灯。微软是英文版,我们拿来经过创新,变成了价廉物美的中文版。这只能叫创新,不叫盗版,什么叫盗版,就是拿来完全没有改娈,甚至只改娈了10之1的才叫盗版。 嗯,听到这个创新的观点很新鲜,不过微软操作系统本来就有中文版。如果你写一本书100页的书的话,我在书的后面加上11页,然后作者就成我了,这叫创新,不叫盗版。 有人说:美国不还说英语吗?那是不是每个人要给英国支付一定的盗版费?说我们用的是盗版,可是你的美式英语不也是盗版吗? 唉,实在不能同意这个观点,一则我的版权意识还没这么强,不知道语言也有版权;二则我还希望美国人能盗版中国话,说出美式汉语呢。 有人说:明显的侵权行为。比如一个人购买了一件冒牌的衣服,却在马路上或者家里碰到了正牌的服装厂商,正牌商告诉他你的衣服是冒牌的,服装厂商现在将强行要求你把衣服脱了,然后花钱买我们的正牌衣服。这是正牌商维权的正当理由和方法吗? 不管怎么说,微软似乎变得没理了。那就继续用盗版系统吧,如果微软人的嘴还继续硬,就把正版三鹿婴儿奶粉免费送给他们的孩子喝,包准他们的孩子胆也硬。
个人分类: 麻辣评论|393 次阅读|0 个评论
10月21日,真的排队装系统?
daijingwei 2008-10-17 00:51
近日微软的正版验证被成为一大热点,黑屏和持续提醒毕竟不是什么好玩的,虽然自己也不是什么电脑行家,但看到天涯上一帖,觉得可笑和惊叹:10月21日,电脑菜鸟们真的要排队装系统? 不可否认的是,菜鸟的确很多,重装虽不是难事,但却要花时间和精力。也曾经见过微软在电脑任务栏的那个您是盗版软件的受害者提醒,很是反感,虽然从内心深处也认为应当支持正版,打击盗版(CET-6好像还考过一次盗版呢,当时真的是信誓旦旦宣称自己绝不会买盗版啦~~),但是,一张专业版的XP真不是一笔小数目(据说要上千块),购买的地方也少之又少(比起满大街兜售的盗版),安装起来也很繁琐,可恶的XP啊 但是,windows几乎达到了对操作系统的垄断地位,尽管有那么多漏洞,成天不停的打补丁,但还是几乎人人在用。开源的linux和安全性好的unix远没有蓝天白云的windows风光,所以,微软可以毫不客气的说:我就算黑屏你,又怎样?黑不死你烦死你! 所以,网民的反应是强烈的,太黑心,不厚道的说法比比皆是,但除了重装,除了关闭自动更新,除了更多的抱怨,我们还是要用windows 有人说,中国的黑客是很厉害的,我相信这一点。其实,各种破解黑屏之法早已开始各显神威了,这次号称是最严厉正版验证或许又将被新一轮的反破解所湮没,但是,难道我们就没有更优秀的解决办法? 愿黑屏来的更猛烈些吧       ★★新闻链接:   微软正式公布反盗版政策 盗版用户将遭黑屏警告 人民网北京10月15日讯 (记者陈健)微软中国今天正式宣布,将从10月20日起同时推出两个重要更新,使用XP专业版盗版系统与Office XP、Office 2003、Office 2007盗版软件的用户将分别遭遇电脑黑屏与提醒标记等警告。   据了解,被称为Windows正版增值计划通知和Office正版增值计划通知的这两个项目均是可选择式的服务。用户可以通过微软更新站点或自动更新选择下载安装、经过验证过程后了解自己使用的Windows XP或 Office产品是否为正版并获得了相应的授权。   微软方面透露,验证通过的用户直接使用Windows XP或Office程序即可。对于因不同原因未通过验证的用户,将收到相应的系统通知。如:产品未激活或使用试用版下的未激活验证失败;因同步超时等原因引起的验证无法完成;或非正版验证失败。   如果Windows XP用户没有通过正版验证,将会体验到: 用户开机进入后,桌面背景变为纯黑色,用户可以重新设置桌面背景,但是每隔60分钟,桌面背景将重新变回黑色;会看到一个登录中断的对话框,并在屏幕的右下角会出现一个永久通知和持续提醒的对话框显示您可能是软件盗版的受害者等提示信息。   如果Office用户没有通过正版验证,用户体验将分为三个阶段:验证失败后的第1-14天内,客户将在每天首次打开Office软件和此后2小时分别收到一次对话框提醒;从验证失败后的第15天开始,提示信息将告知用户如不采取行动,将在14天后,Office软件被添加视觉标记;客户在收到这些对话框通知30天后,Office软件的Word、Excel,PowerPoint 和Outlook程序的菜单栏中将被添加视觉标记。   微软方面认为,这两项计划是旨在帮助中国用户甄别他们电脑中安装的微软Windows操作系统和Office应用软件是否是获得授权的正版软件,从而帮助那些在不知情的情况下安装和使用了盗版软件的用户免受侵害。
个人分类: 自言自语|2734 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-19 13:50

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部