‘壹’ 永恒之塔伸缩武器,永恒之塔aion3.2合成生命体,永恒之塔武器合成,永恒之塔武器制作
强化要看读条和听声音,具体说不清楚,我一老缓昌般都用80 85的强60的 20多块侍扒强到15 3.2没有伸缩武器,挂机脚本也没有只有挂生活技能的脚本哪散 但是有一定几率封号
‘贰’ 求一个仙境传说炼精生命体自动喂食和放技能的ai 我的是飞里乐
这是AI人工智能研究所的链接者兄 http://ai.d2lo.com/ 里面都是有光AI设置的 可以自己导出 还让塌有自动喂食AI是不能实现的 不然就成挂了 你可以下载坦嫌圆个按键精灵自己做个脚本喂食
‘叁’ 假面骑士空我的评价是什么
假面骑士空我的评价是一部以五代雄介的信念为题,贯穿了整部剧的骑士。他也是开创了平成和昭和不同存在的骑士,看过假面骑士的人也都10分的清楚,昭和的骑士原本都是以改造人为主。打破了传统假面骑士的套路,延续扩展了RX的多形态特点,加上了警匪以逗桐及单元剧的元素,打造了一个像是小人物般淳朴却又不平凡的英雄。
所说,这是一部全新的英雄片,它让英雄片再一次摆脱定式,回到更言之有物、内容更接近真实的故事片。这是一部开辟时代,理想的,并变得孤独的商业作品。哪怕放眼全平成年间的特摄,kuuga达到的境界也是可遇不可求的。
‘肆’ 应急救援预案演练频率及参考标准
1、应急救援预案演练频率:
综合应急预案演练和专项应急预案演练每年进行一次,现场处置方案每半年进行一次。
2、应急救援预案演练的参考标准:
(1)脚本:脚本内容规范,符合要求,演练目标可行;
(2)仪表:参演护士仪表端庄、服装整洁了解患者的生命体症、意识状态、评估到位;
(3)评估:对清醒患者进行解释取得患者配合,沟通用语文明,态度和蔼;
(4)演练效果及操作流程:
①通知医护人员及时人员到位迅速准确;
②操作熟练准确,职责明闭型确物资充分,全部有效个人防护到位;
③整体组织准确、高效应急小组分工合理、高效报告上级及时;
④与配合部门协作好;
⑤操作过程中护患沟通及时演练过程医护、护护配合到位操作后,物品处置准确及时差亮操作中,遵循无菌原则,身份核对准确演练流程符合要求,流程合理。
(5)效果评价:动作准确,规范、安全,演练效果达到预期目标
(4)脚本生命体扩展阅读:
1、应急救援预案演练的指导方针:
“居安思危,预防为主”
2、原则:
国家突发公共事件总体应急预案提出了六项工作原则,即:以人为本,减少危害;居安思危,预防为主;统一领导,分级负责;依法规范,加强管理;快速反应,协同应对;依靠科技,提高素质。
3、内容:
应急管理工作内容概括起来叫做“一案三制”。
(1)“一案”是指应急预案,就是根据发生和可能发生的突发事件,事先研究制订的应对计划和方案。应急预案包括各级政府总体预案、专项预案和部门预案,以及基层单位的预案和大型活动的单项预案。
(2)“三制”是指应急工作的管理体制轿庆猜、运行机制和法制。
‘伍’ S4C的S4C-S4C作品一览
剧场动画
“MEMORIES”(1995)
三部短片构成:
[1]“彼女の想いで”(MAGNETICROSE),她的回忆
原作:大友克洋
监督:森本晃司
脚本・设定:今敏
音乐:菅野よう子
[2]“最臭兵器”(STINKBOMB),最臭兵器
原作・脚本・角色原案:大友克洋
监督:冈村天斎
角色设计・作画监督:川崎博嗣
音乐:三宅顺
兼修:川尻善昭
[3]“大炮の街”(CANNONFODDER),大炮之街
原作・脚本・监督・美术监督・角色原案:大友克洋
音乐:长嶌寛幸
“スプリガン”(1998)
Spriggan,遗迹守护者
监督:川崎博嗣
总监修:大友克洋
作画监・督角色设计:江口寿史
原作:たかしげ宙、皆川亮二(少年サンデーコミックス)
“アリーテ姫”
“マインド・ゲーム”(2004)
MindGame,心灵游戏
监督・脚本:汤浅政明
原作携郑清:ロビン西“MINDGAME”
“ディープ・イマジネーション创造する遗伝子たち”(2006.7)
DeepImagination
由五部短片组成:
[1]ダンぺトリー教授の忧郁
监督辩前:小原秀一
[2]Endoftheworld
监督:小林治
[3]COMEDY
监督:中泽一登
[4]彼岸
监督:村木靖
[5]ガラクタの町
监督:伊东伸高
“鉄コン筋クリート”(2006.12)
恶童
监督:マイケル・アリアス
原作漫画:松本大洋
“GENIUSPARTY”(竞赛性短篇集,2007预定)
“Sachiko”(森本晃司,2007预定)
TV
“魔法少女队アルス”
MusicClip
“ケン・イシイ/EXTRA”
“GLAY/サバイバル”
OVA
“音响生命体ノイズマン”(1997)
Noiseman,音响生命体
监督・角色设计・作画监督:森本晃司
设定・角色设计・作画监督:汤浅政明
音乐:菅野よう子
‘TREESMAKESEES’
作词:TimJensen
作曲:菅野よう子
歌:CristalWillams
“永久家族”
EternalFamily
“デジタルジュース”
DigitalJuice
“ピロッポ”
“アニマトリックス”
Animatrix,黑客帝国动画版
全九个短篇中的五个:
[1&2]第二次文艺复兴第一部&第二部(TheSecondRenaissance:PartI&PartII)
剧本:AndyandLarryWachowski
监督:前田真宏(MaedaMahiro,青之六号)
[3]孩子的故事(KidsStory)
剧本:AndyandLarryWachowski
监督:渡边信一郎(WatanabeShinichiro,星际牛仔、向日葵武士)
[4]超越(Beyond)
剧丛樱本:真本晃司(MorimotoKoji)
监督:真本晃司
[5]侦探的故事(DetectiveStory)
剧本:渡边信一郎
监督:渡边信一郎
‘陆’ 艾里希·弗洛姆《爱的艺术》:当有了爱,我们便不再孤独
前几天在高铁站候车时,无意中看到墙上的广告语:遇见对的人。然后我就突然想到,现在的年轻人不愿意走进婚姻的殿(fen)堂(mu),是因为没有遇到对的人吗?如果他们遇到了他们的Mr. Right,确定对方就是自己的真爱,那是不是就会欢欢喜喜手牵手领证,最终幸福的生活在一起了呢?但是转念一想,这个逻辑好像不通,因为我们无法忽视离婚率越来越高的事实。即是真爱,为何还要分开?
那么到底是什么促使我们前一刻还在婚礼上面对真爱信誓旦旦,不论贫穷还是疾病都要和对方在一起,直至死亡将我们分开;后一刻却恨不得离这个人越远越好,最好后会无期呢?换句话说, 爱到底是一种什么样的存在呢?
《爱的艺术》这本书的作者弗洛姆从生存的角度告诉我们,爱是人类克服分离焦虑,解决孤独问题的唯一答案。也就是说,我们通过爱与他人结合,从而避免孤独感。
当然,这里说的爱不单单是指男女之间的情爱,也包括父母与子女之间的爱、兄弟姐妹之间的爱、甚至是对自己的自爱。为了理解爱是什么,我们先换个角度,从反面来谈谈爱不是什么。
有三种常见的对爱的误解。
第一种,认为爱是如何被爱而不是如何去爱的问题。 当我们把爱看成是如何被爱的问题时,我们就会将注意力放在如何让自己惹人爱上。在日常生活中表现为,男性就会通过提高自己的财富和社会地位来增加自己的值得被爱的砝码,女性就会通过保持苗条的身材、穿着漂亮的衣服来让自己吸引异性的目光。而弗洛姆认为,爱是一种主动的能力,是一种突破使人与人分离的屏障的能力,一种把自己和他人联合起来的能力。
第二种,认为没有爱是由于缺乏爱的对象而非缺乏爱的能力。 我们经常认为,爱是简单的,困难的是寻找爱的对象。我们经常说要“找对象”,就是要找一个合适的人。“合适”意味着,基于社会价值,这个人应该是值得要的,而就自己公开和隐秘的财产裤梁和潜能而言,对象也应该想要我。这种行为的本质就是一种交易,而爱是作为一种交换的商品,当在这种交易中双方都达到自己交换的价值限度,找到可以得到的最好对象时,这两个人就坠入了情网。而弗洛姆认为,爱是一种能力,是一种可以将自己和他人联合起来的能力。
第三种,将坠入情网时的热恋等同于永恒的爱。 斯科特·派克在《少有人走的路:心智成熟的旅程》中写道,坠入情网是自我界限的暂时性崩溃,这时候一个人将会体会到与对方融为一体的亲密和融洽的感觉,这种突然产生的亲近感使得相爱变得非常容易。但是因为这种融合是暂时性的,所以这类型的爱不能持久。
有一个问题需要大家思考:人为什么会感到孤独?
原文是这样描述的: 人具有天赋的理性。它是了解自身的生命体,他了解他自己、他的同伴、他的过去和未来的趋向。这种对他自己作为一个孤独的实体的认识,对他自己短暂的生命历程的认识,对不由他的愿望出生又违背他的意愿而死去这一事实的认识,对他将在他热爱的那些人之前或之后死去的认识,对他的孤独和寂寞的认识,对他在自然和社会面前无能为力的认识,所有这些都令他感到 孤独和 隔绝的生存状态是不堪忍受的监狱。
简而言之,与动物相比,人拥有自我意识,使得人们能够感受到分离的痛苦闭蠢和无法忍受的孤独。孤独会带来焦虑,如何克服分离达到和谐,答案就是,爱。
爱有四要素,分别是关心、责任、尊重、了解。
关心是对所爱的对象的生命和成长的积极关注。 例如母亲对自己孩子的爱。在婴儿时胡态运期,母亲关心婴儿的健康成长,每天定时哺乳,换尿布,陪伴婴儿,时刻准备安抚婴儿。即使是在熟睡中,婴儿的啼哭也能瞬间唤醒母亲,即使这位母亲平日里睡眠很沉。关心一个人的成长意味着,我们主动将一部分注意力持续地放在被关心人的身上,对他的需求保持敏感,就像有些相处时间很长的伴侣之间,即使不说话,只需要一个眼神,就能明白对方所想。
关心是责任感的表现。从真正意义上讲,责任是一种自愿的行为,是对另一个人表达或没有表达的需要的反应。 我们现在工作中承担的责任更多的是外部强加给自己的责任,而爱中的责任是我们发自内心的对对方的关注并对其需求的积极响应。一般情况下,我们认为责任感就是父母对年幼的子女在物质生活上的照顾,反过来等到父母年迈时,我们照顾老人的生活起居、生病住院时照顾老人的身体。不知道大家发现没有,这其实更多的是满足对方在物质上的需求,更进一步,父母们是否能够在孩子遇到挫折的时候给予更多的支持和安慰,孩子是否能在父母老去,眼睛看不清耳朵听不清的时候,像父母教还是小孩子的自己走路一样,对父母更多一点耐心,这主要是满足对方在精神方面的需求,是更高级的责任感的表现。
没有尊重,责任就有可能变成支配和占有。尊重(Respect)不是害怕和畏惧,respect由两个词根组成,re的意思是再一次,spect的意思是审视,即再一次审视一下你所关注的人或事,它意指按照其本来面目发现一个人,认识其独特性。 尊重一个人意味一个人对另一个人的成长和发展应顺应其规律和意愿。阿米尔·汗主演的电影《三傻大闹宝莱坞》中,帝国理工学院的院长无视亲生儿子的意愿,非要逼迫儿子当工程师,最终导致儿子自杀;他对他的学生也是没有丝毫尊重,而是利用自己院长的身份和权利,对不服从管教的学生以退学为威胁,宣扬自己“适者生存”的丛林法则,他对学生的教育变成了支配,而学生对他也只有畏惧。
不了解一个人就不能尊重他,爱的责任若没有了了解作为向导便是盲目的。 我听过一则故事,讲的是有一只小兔子想要和河里生活的小鲤鱼交朋友,于是小兔子就每天都跑到河边,把胡萝卜绑在鱼竿上想要吸引小鲤鱼出来。但是过了很长时间,小兔子也没有见到小鲤鱼。小兔子很疑惑,为什么它将自己心爱的胡萝卜都拿出来了小鲤鱼也不来见它呢?直到有一天,小鲤鱼忍无可忍地跳出水面向小兔子喊道:“你用胡萝卜钓什么鱼!”如果我们爱一个人却不了解他,那么无异于用胡萝卜钓鱼,你认为自己已经贡献出了自己最好的东西,对方却不领情,自己还觉得委屈无比,暗自觉得费力不讨好。所以下次,先问问自己对方想要的是什么,而不是自己想要给对方的是什么。
《爱的艺术》的作者弗洛姆认为,爱是一种艺术,需要知识和努力。 那是不是有一套方法可以保证我们学会爱的艺术呢?如果你是抱着这样的想法读到这里,那么你可能会失望了,因为作者告诉我们: 爱是一种每个人都只能通过自身并作为自身获得的个人体验 。也就是说,爱是一种具有独特性的体验,无法复制。但是大家也不要气馁,作者在书中告诉了我们通往爱的途径和作为爱的艺术的实践所需的品质,能够帮助我们学会爱的艺术。
通往爱的途径包含了规范、专心、耐心、最大的关注。
首先,这里的规范并非指外界强加于我们身上的准则,而是像责任感一样,应该是一种自身意愿的表达。 艺术的实践要求有规范,如果只是“心血来潮”而为之,也只能作为一种消遣,永远不可能作为艺术的主人。作者将爱视作一种“个人体验”,也就是承认爱的独特性,因此我们无法用同一种规则去适用于每个人,因此每个人都应该有属于自己的规则,这个规则应该基于爱的四要素以及个人的体验。
其次,学习爱的艺术需要专心致志。 现在生活工作节奏很快,做事情讲求效率,我们总是恨不得把自己分成好几个,同时做好几件事,但是你需要明白,人的而精力是有限的,同一时间只能专注于一件事情,同时做两件以上事情,效率反而会降低很多。
除了专心,还需要耐心。 学习爱的艺术不是一件一蹴而就的事情,我们必须假设自己会在此花上相当长的时间,却并未取得大的进展的可能性,但爱的实践却是一件值得我们花上许多时间和精力的事情。当你体验到爱意流动的那一刻,你会明白一切都是值得的。
最后,我们还需要将爱视为一件及其重要的事情,予以最大的关注。 任何艺术的学习都需要对其付出极大的关注,否则最终的学习成果只能浮于表面。
以我个人经历来讲,我的父母算是“爱的行动派”,他们擅长以实际行动来表达爱,但相反的,他们很少在语言上进行爱的沟通和表达,因此有一次我就趁着氛围比较好的时候,提出进行“每日一夸”:即在每天睡觉前用一句话夸奖对方。当然开始的时候,他们双方都非常不好意思,我就把家里的小橘猫“多巴胺”抱过来,让他们先对着“多巴胺”练习。为了便于表述,我借鉴《即兴演讲》的思路,为他们写了一个非常简单的一句话夸奖脚本:前半句是谁做了什么,后半句是用一个词概括自己的感受。比如,妈妈会对爸爸说:“今天中午在我睡觉的时候,你(谁)主动承担了做饭的活儿(做了什么),我觉得非常贴心(我的感受)。”结果证明效果非常好,可以感觉到爱在两个人之间流动的温馨。
爱的艺术的实践需要哪些品质呢?
首先,爱的艺术的实践,我们还需要克服自恋,学会以客观的角度看待事物。 自恋是一种把自己的主观愿望和客观现象混淆的倾向。要想学会爱的艺术,必须学会按其本来的面目认识人或事物。那么我们该如何克服自恋倾向,客观的看待人和事物呢?作者告诉我们: 客观的背后是理智,理智背后的情感是谦卑 。
其次,需要建立理性的信仰。 在此之前,我们需要先明确什么是非理性的信仰。非理性的信仰是指对一个人或一种观念的信仰,以对非理性权威的屈从为基础,比如二战时期,德国军队对希特勒的信仰,他们未必不知道希特勒的做法是错的,但是大多数军人仍然选择遵从,也由此导致了对犹太人的大量屠杀的惨剧,由此可以看出非理性信仰可能造成的严重后果。相对的, 理性的信仰指的是根植于一个人的思想和感情体验之中,并非是对某人某事的信奉,而是我们的信念具有的必胜和坚定的特质。 理性信仰的基础是创造性,靠我们的信仰活着意味着创造性的生活,同时,理性的信仰要求我们要有勇气和冒险能力,甚至准备迎接挫折和厄运。理性的信仰来源于建立在自身富有成果的观察和思考的基础上的独立信念,而不管大多数人的意见如何。就如同我们相信,在适当的条件下,人类一定可以建立一个自由、平等、公正、博爱的社会一样,这并非我们的幻想,而是基于人类在历史上取得的成绩和进步。
活动性是爱的实践的基础。 活动并不意味着“做某事”,它是一种内心活动,如果我在爱,我就常处于一种密切关心被爱的人的状态之中,只有这样才能真正将自己和被爱的人联系在一起。
最后,我们来回顾一下:
弗洛姆在《爱的艺术》中首先提出了三种常见的对爱的误解:认为爱是如何被爱而不是如何去爱的问题;认为没有爱是由于缺乏爱的对象而非缺乏爱的能力;将坠入情网时的热恋等同于永恒的爱。
其次,在爱的理论部分,作者提出了爱的四要素分别是:关心、责任、尊重、了解。
最后,在爱的实践方面,作者提出通往爱的途径包含了规范、专心、耐心、最大的关注;而需要的品质包括克服自恋、建立理性的信仰、爱的活动性。
弗洛姆认为,爱不是一种只需要投入身心的感情,而是需要努力发展自己的全部个性,以此形成一种创造性倾向,否则,一切爱的尝试都是会失败的。正如克里斯多福 · 孟在《亲密关系》中说道,亲密关系是通往灵魂的桥梁,在亲密关系中,你将发掘并治愈自己内心的伤痛,最终成为完整的自己。我相信,在追寻爱的道路上,我们最终也将收获一个真正的自我。
‘柒’ 谁有RO炼金生命体自动喂食按键精灵的脚本
应该写不了,(或许我技术不够吧~ ~!)RO里面有鼠标漂移的设让判定首滑轿,而且与实际值好像者肆是随机数的。试过用实际与目标差值都解决不了。只能键盘操作,掉掉鱼==
‘捌’ 求仙境传说人工生命体脚本
function OnSKILL_AREA_CMD_ST () TraceAI ("OnSKILL_AREA_CMD_ST") local x , y = GetV (V_POSITION,MyID)
if (GetDistance(x,y,MyDestX,MyDestY) <= GetV(V_SKILLATTACKRANGE,MyID,MySkill)) then -- DESTARRIVED_IN
SkillGround (MyID,MySkillLevel,MySkill,MyDestX,MyDestY)
MyState = IDLE_ST
MySkill = 8009
endend function OnFOLLOW_CMD_ST () TraceAI ("OnFOLLOW_CMD_ST") local ownerX, ownerY, myX, myY
ownerX, ownerY = GetV (V_POSITION,GetV(V_OWNER,MyID)) -- 林牢
myX, myY = GetV (V_POSITION,MyID) -- 唱
local d = GetDistance (ownerX,ownerY,myX,myY) if ( d <= 3) then -- 3伎 捞窍 芭府搁
return
end local motion = GetV (V_MOTION,MyID)
if (motion == MOTION_MOVE) then -- 捞悼吝
d = GetDistance (ownerX, ownerY, MyDestX, MyDestY)
if ( d > 3) then -- 格利瘤 函版 ?
MoveToOwner (MyID)
MyDestX = ownerX
MyDestY = ownerY
return
end
else -- 促弗 悼累
MoveToOwner (MyID)
MyDestX = ownerX
MyDestY = ownerY
return
end
end
function GetOwnerEnemy (myid)
local result = 0
local owner = GetV (V_OWNER,myid)
local actors = GetActors ()
local enemys = {}
local index = 1
local target
for i,v in ipairs(actors) do
if (v ~= owner and v ~= myid) then
target = GetV (V_TARGET,v)
if (target == owner) then
if (IsMonster(v) == 1) then
enemys[index] = v
index = index+1
else
local motion = GetV(V_MOTION,i)
if (motion == MOTION_ATTACK or motion == MOTION_ATTACK2) then
enemys[index] = v
index = index+1
end
end
end
end
end local min_dis = 100
local dis
for i,v in ipairs(enemys) do
dis = GetDistance2 (myid,v)
if (dis < min_dis) then
result = v
min_dis = dis
end
end
return result
end function GetMyEnemy (myid)
local result = 0 local type = GetV (V_HOMUNTYPE,myid)
if (type == LIF or type == LIF_H or type == AMISTR or type == AMISTR_H or type == LIF2 or type == LIF_H2 or type == AMISTR2 or type == AMISTR_H2) then
result = GetMyEnemyA (myid)
elseif (type == FILIR or type == FILIR_H or type == VANILMIRTH or type == VANILMIRTH_H or type == FILIR2 or type == FILIR_H2 or type == VANILMIRTH2 or type == VANILMIRTH_H2) then
result = GetMyEnemyB (myid)
end
return result
end
-------------------------------------------
-- 厚急傍屈 GetMyEnemy
-------------------------------------------
function GetMyEnemyA (myid)
local result = 0
local owner = GetV (V_OWNER,myid)
local actors = GetActors ()
local enemys = {}
local index = 1
local target
for i,v in ipairs(actors) do
if (v ~= owner and v ~= myid) then
target = GetV (V_TARGET,v)
if (target == myid) then
enemys[index] = v
index = index+1
end
end
end local min_dis = 100
local dis
for i,v in ipairs(enemys) do
dis = GetDistance2 (myid,v)
if (dis < min_dis) then
result = v
min_dis = dis
end
end return result
end -------------------------------------------
-- 急傍屈 GetMyEnemy
-------------------------------------------
function GetMyEnemyB (myid)
local result = 0
local owner = GetV (V_OWNER,myid)
local actors = GetActors ()
local enemys = {}
local index = 1
local type
for i,v in ipairs(actors) do
if (v ~= owner and v ~= myid) then
if (1 == IsMonster(v)) then
enemys[index] = v
index = index+1
end
end
end local min_dis = 100
local dis
for i,v in ipairs(enemys) do
dis = GetDistance2 (myid,v)
if (dis < min_dis) then
result = v
min_dis = dis
end
end return result
end function AI(myid) MyID = myid
local msg = GetMsg (myid) -- command
local rmsg = GetResMsg (myid) -- reserved command
if msg[1] == NONE_CMD then
if rmsg[1] ~= NONE_CMD then
if List.size(ResCmdList) < 10 then
List.pushright (ResCmdList,rmsg) -- 抗距 疙飞 历厘
end
end
else
List.clear (ResCmdList) -- 货肺款 疙飞捞 涝仿登搁 抗距 疙飞甸篮 昏力茄促.
ProcessCommand (msg) -- 疙飞绢 贸府
end
-- 惑怕 贸府
if (MyState == IDLE_ST) then
OnIDLE_ST ()
elseif (MyState == CHASE_ST) then
OnCHASE_ST ()
elseif (MyState == ATTACK_ST) then
OnATTACK_ST ()
elseif (MyState == FOLLOW_ST) then
OnFOLLOW_ST ()
elseif (MyState == MOVE_CMD_ST) then
OnMOVE_CMD_ST ()
elseif (MyState == STOP_CMD_ST) then
OnSTOP_CMD_ST ()
elseif (MyState == ATTACK_OBJECT_CMD_ST) then
OnATTACK_OBJECT_CMD_ST ()
elseif (MyState == ATTACK_AREA_CMD_ST) then
OnATTACK_AREA_CMD_ST ()
elseif (MyState == PATROL_CMD_ST) then
OnPATROL_CMD_ST ()
elseif (MyState == HOLD_CMD_ST) then
OnHOLD_CMD_ST ()
elseif (MyState == SKILL_OBJECT_CMD_ST) then
OnSKILL_OBJECT_CMD_ST ()
elseif (MyState == SKILL_AREA_CMD_ST) then
OnSKILL_AREA_CMD_ST ()
elseif (MyState == FOLLOW_CMD_ST) then
OnFOLLOW_CMD_ST ()
endend
‘玖’ 嵌入式中的移植是什么意思,移植系统呢
与其它操作系统相比,Linux最大的特点:它是一款遵循GPL的操作系统,我们可以自由
地使用、修改、和扩展它。正是由于这一特色,Linux受到越来越多人士的青睐。于是,
一个经常会被探讨的问题出现了,即关于Linux系统的移植。对于操作系统而言,这种移
植通常是跨平台的、与硬件相关的,即硬件系统结构、甚至CPU不同。下面就让我们来看
看在Linux系统移植方面,我们都需要做些什么。
一、Linux系统移植的两大部分
对于系统移植而言,Linux系统实际上由两个比较独立的部分组成,即内核部分和系
统部分。通常启动一个Linux系统的过程是这样的:一个不隶属于任何操作系统的加载程
序将Linux部分内核调肢兄慧入内存,并将控制权交给内存中Linux内核的第一行代码。加载程
序的工作就完了,此后Linux要将自己的剩余部分全部加载到内存(如果有的话,视硬件
平台的不同而不同),初始化所有的设备,在内存中建立好所需的数据结构(有关进程
、设备、内存等)。到此为止Linux内核的工作告一段落,内核已经控制了所有硬件设备
。至于操作和使用这些硬件设备,则轮到系统部分上场了。内核加载根设备并启动init
守护进程,init守护进程会根据配置文件加载文件系统、配置网络、服务进程、终端等
。一旦终端初始化完毕,我们就会看到系统的欢迎界面了。小结一下:
(1)内核部分初始化和控制所有硬件设备(严格说不是所有,而是绝大部分),为内存
管理、进程管理、设备读写等工作做好一切准备。
(2)系统部分加载必需的设备,配置各种环境以便用户可以使用整个系统。
二、系统移植所必需的环境
在进一步叙述之前,我们有必要提一下做系统移植所必需的环境。
首先,需要一个新版本的gcc。对于一个准备系统移植的程序员而言,“新”到什么
程度应该心里有数。做跨平台编译,gcc也许是最好的选择。另外,Linux内核依赖许多
gcc特有的特性,非它不可。如果你已经会使用gcc并实地操练过多回,那你只需要再进
一步巩固一下跨平台编译的操作即可。两种编译环境是可用的:非目标平台上的Linux或
目标平台上的非Linux系统,除非你的开发平台过于特殊,否则你一定能够找到你能用的
gcc。
其次,编译链接库是必需的,而且必须是目标平台的编译链接库。通常这历答是一个枯
燥、繁琐、又丝毫没有成就感的过程。幸运的话,会有现成的链接库可以用。否则,你
需要自己用gcc建立它。
最后,需要目标平台的所有文档,越多越好。如果有一定的开发支持/仿真环境,L
oader(加载程序)则最好,这些可以帮助你减少移植过程中浪费在琐事上的时间。
三、Linux系统移植
接下来我们从内核和系统两个方面描述一下移植中的关键。
(1) 内存移植
Linux系统采用了相对来说并不是很灵活的单一内核机制,但这丝毫没有影响Linux
系统的平台无关性和可扩展性。Linux使用了两种途径分别解决这些问题,很干净利落,
丝毫不拖泥带水,而且十分清晰易懂。分离硬件相关代码和硬件无关代码,使上层代码
永远不必关心低层换用了什么代码,如何完成了操作。不论对x86上还是在Alpha平台上
分配一块内存,对上层代码而言没什么不同。硬件相关部分的代码不多,占总代码量的
很少一部分。所以对更换硬件平台来说,没有什么真正的负担。另一方面,Linux使用内
核机制很好地解决了扩展的问题,一堆代码可以在需要的时候轻松地加载或卸下,象随
身听,需要的时候带上,不需要时则锁在抽屉里。
Linux内核可以视为由五个功能部分组成:进程管理(包括调度和通信)、内存管理
、设备管理、虚拟文件系统、网络。它们之间有着复杂的调用关系,但幸运的是,在移
植中不会触及到太多,因为Linux内核良好的分层结构将硬件相关的代码独立出来。何谓
硬件相关,何谓无关?以进程管理为例,对进程的时间片轮转调度算法在所有平台的Li
nux中都是一样的,它是与平台无关的;而用来在进程中切换的实现在不同的CPU上是不
同的,因此需要针对该平台编写代码,这就是平台相关的。上面所讲的五个部分的顺序
不是随便排的,从前到后分别代表着它们与硬件设备的相关程度。越靠前越高,后面的
两个虚拟文件系统和网络则几乎与平台无关,它们由设备管理中所支持尘森的驱动程序提供
底层支持。因此,在做系统移植的时候,需要改动的就是进程管理、内存管理和设备管
理中被独立出来的那部分即硬件相关部分的代码。在Linux代码树下,这部分代码全部在
arch目录下。
如果你的目标平台已经被Linux核心所支持的话,那么你是幸运的,因为已经没有太
多的工作让你去做。只要你的交叉编译环境是正确的,你只需要简单的配置、编译就可
以得到目标代码。否则,需要你去编写,或修改一些代码。只需修改平台相关部分的代
码即可。但需要对目标平台,主要是对CPU的透彻理解。在Linux的代码树下,可以看到
,这部分的典型代码量为:2万行左右C代码和2千行左右的汇编(C代码中通常包含许多
伪汇编指令,因此实际上纯C代码要少很多),这部分工作量是不可小看的。它包含了对
绝大多数硬件的底层操作,涉及IRQ、内存页表、快表、浮点处理、时钟、多处理器同步
等问题,频繁的端口编程意味着需要你将目标平台的文档用C语言重写一遍。这就是为什
么说目标平台的文档极其重要。
代码量最大的部分是被核心直接调用的底层支持部分,这部分代码在arch/xxx/ker
nel下(xxx是平台名称)。这些代码重写了内核所需调用的所有函数。因为接口函数是固
定的,所以这里更象是为硬件平台编写API。不同的系统平台,主要有以下几方面的不同
:
进程管理底层代码:从硬件系统的角度来看,进程管理就是CPU的管理。在不同的硬
件平台上,这有很大的不同。CPU中用的寄存器结构不同,上下文切换的方式、现场的保
存和恢复、栈的处理都不同,这些内容主要由CPU开发手册所描述。通常来说,CPU的所
有功能和状态对于Linux不一定有意义。实现时,需要在最小的开发代价和最好的系统性
能之间加以权衡。
* BIOS接口代码:这一名称似乎并不太准确,因为它沿用了PC一贯的叫法。但在不致引
起混淆的情况下我们还是这么叫它。在通用平台上,通常有基本输入输出系统供操作系
统使用,在PC上是BIOS,在SPARC上是PROM,在很多非通用系统上甚至并没有这样的东西
。多数情况下,Linux不依赖基本输入输出系统,但在某些系统里,Linux需要通过基本
输入输出系统中得到重要的设备参数。移植中,这部分代码通常需要完全改写。
* 时钟、中断等板上设备支持代码:即使在同一种CPU的平台上,也会存在不同的板上外
设,异种CPU平台上更是如此。不同的系统组态需要不同的初始化代码。很典型的例子就
是MIPS平台,看看arc/mips/的代码,与其它系统比较一下就知道。因为MIPS平台被OEM
得最广,在嵌入式领域应用最多(相对其它几种CPU而言)。甚至同一种MIPS芯片被不同
厂家封装再配上不同的芯片组。因此要为这些不同的MIPS平台分别编写不同的代码。
* 特殊结构代码:如多处理器支持等。其实每一种CPU都是十分特殊的,熟悉x86平台的
人都知道x86系列CPU着名的实模式与虚模式的区别,而在SPARC平台上根本就没有这个概
念。这就导致了很大的不同:PC机上的Linux在获得控制权后不久就开始切换到虚模式,
SPARC机器上则没有这段代码。又如电源管理的支持更是多种多样,不同的CPU有着不同
的实现方式(特殊的电源管理方式甚至被厂商标榜)。在这种情况下,除非放弃对电源
管理的支持,否则必须重写代码。
还有一部分代码量不多,但不能忽视的部分是在arch/xxx/mm/下的内存管理部分。
所有与平台相关的内存管理代码全部在这里。这部分代码完成内存的初始化和各种与内
存管理相关的数据结构的建立。Linux使用了基于页式管理的虚拟存储技术,而CPU发展
的趋势是:为了提高性能,实现内存管理的功能单元统统被集成到CPU中。因此内存管理
成为一个与CPU十分相关的工作。同时内存管理的效率也是最影响系统性能的因素之一。
内存可以说是计算机系统中最频繁访问的设备,如果每次内存访问时多占用一个时钟周
期,那就有可能将系统性能降低到不可忍受。在Linux系统里,不同平台上的内存管理代
码的差异程度是令人吃惊的,可以说是差异最大的。不同的CPU有不同的内存管理方式,
同一种CPU还会有不同的内存管理模式。Linux是从32位硬件平台上发展起来的操作系统
,但是现在已经有数种64位平台出现。在64位平台上,可用内存范围增大到原来的232倍
,其间差异可略窥一斑了。鉴于这部分代码的重要性和复杂性,移植工作在这里变得相
当谨慎。有些平台上甚至只是用最保守的内存管理模式。如在SPARC平台上的页面大小可
以是多种尺寸,为了简单和可靠起见,SPARC版的Linux只是用了8K页面这一种模式。这
一状况直到2.4版才得以改善。
除了上面所讲的之外,还有一些代码需要考虑,但相对来说次要一些。如浮点运算
的支持。较完美的做法是对FPU编程,由硬件完成浮点运算。但在某些时候,浮点并不重
要,甚至CPU根本就不支持浮点。这时候就可以根据需求来取舍。
对于内核移植的讨论到此为止。实际上,还有一些移植工作需要同时考虑,但很难
说这是属于内核范畴还是属于驱动程序范畴,比如说显示设备的支持,和内核十分相关
,但在逻辑上又不属于内核,并且在移植上也更像是驱动程序的开发。因此不在这里讨
论。
(2)系统移植
当内核移植完毕后,可以说所有的移植工作就已经完成大半了。就是说,当内核在
交叉编译成功后,加载到目标平台上正常启动,并出现类似VFS: Can抰 mount root fi
le system的提示时,则表示可以开始系统移植方面的工作了。系统移植实际上是一个最
小系统的重建过程。许多Linux爱好者有过建立Linux系统应急盘的经验,与其不同的是
,你需要使用目标平台上的二进制代码生成这个最小系统。包括:init、libc库、驱动
模块、必需的应用程序和系统配置脚本。一旦这些工作完成,移植工作就进入联调阶段
了。
一个比较容易的系统部分移植办法是:先着手建立开发平台上的最小系统,保证这
套最小系统在开发平台上正确运行。这样可以避免由于最小系统本身的逻辑错误而带来
的麻烦。由于最小系统中是多个应用程序相互配合工作,有时出现的问题不在代码本身
而在系统的逻辑结构上。
Linux系统移植工作至少要包括上述的内容,除此之外,有一些看不见的开发工作也
是不可忽视的,如某个特殊设备的驱动程序,为调试内核而做的远程调试工作等。另外
,同样的一次移植工作,显然符合最小功能集的移植和完美移植是不一样的;向16位移
植和向64位移植也是不一样的。
在移植中通常会遇见的问题是试运行时锁死或崩溃,在系统部分移植时要好办些,
因为可以容易地定位错误根源,而在核心移植时确实很让人头疼。虽然可以通过串口对
运行着的内核进行调试,但是在多任务情况下,有很多现象是不可重现的。又如,在初
始化的开始,很多设备还没法确定状态,甚至串口还没有初始化。对于这种情况没有什
么很好的解决办法,好的开发/仿真平台很重要,另外要多增加反映系统运行状态的调试
代码;再者要吃透硬件平台的文档。硬件平台厂商的专业支持也是很重要的。
还有一点很重要:Linux本身是基于GPL的操作系统,移植时,可以充分发挥GPL的优
势,让更多的爱好者参与进来,向共同的目标前进。
‘拾’ 电脑病毒是生物吗同上
1、系统病毒
系统病毒的前缀为:Win32、PE、Win95、W32、W95等。这些病毒的一般公有的特性是可以感染windows操作系统的 *.exe 和 *.dll 文件,并通过这些文件进行传播。如CIH病毒。
2、蠕虫病毒
蠕虫病毒的前缀是:Worm。这种病毒的公有特性是通过网络或者系统漏洞进行传播,很大部分的蠕虫病毒都有向外发送带毒邮件,阻塞网络的特性。比如冲击波(阻塞网络),小邮差(发带毒邮件) 等。
3、木马病毒、黑客病毒
木马病毒其前缀是:Trojan,黑客病毒前缀名一般为 Hack 。木马病毒的公有特性是通过网络或者系统漏洞进入用户的系统并隐藏,然后向外界泄露用户的信息,而黑客病毒则有一个可视的界面,能对用户的电脑进行远程控制。木马、黑客病毒往往是成对出现的,即木马病毒负责侵入用掘芹户的电脑,判唤毕而黑客病毒则会通过该木马病毒来进行控制。现在这两种类型都越来越趋向于整合了。一般的木马如QQ消息尾巴木马 Trojan.QQ3344 ,还有大家可能遇见比较多的针对网络游戏的木马病毒如 Trojan.LMir.PSW.60 。这里补充一点,病毒名中有PSW或者什么PWD之类的一般都表示这个病毒有盗取密码的功能(这链知些字母一般都为“密码”的英文“password”的缩写)一些黑客程序如:网络枭雄(Hack.Nether.Client)等。
4、脚本病毒
脚本病毒的前缀是:Script。脚本病毒的公有特性是使用脚本语言编写,通过网页进行的传播的病毒,如红色代码(Script.Redlof)——可不是我们的老大代码兄哦 ^_^。脚本病毒还会有如下前缀:VBS、JS(表明是何种脚本编写的),如欢乐时光(VBS.Happytime)、十四日(Js.Fortnight.c.s)等。