• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 12, comments - 4, trackbacks - 0, articles - 36

            2006年4月9日

            分手,是由短信開始!

            06.04.01???14:52
            ???寶貝,我親愛的寶貝,請(qǐng)你去愛別人,好嗎?你是我一生最好的朋友,是我的親人,可是不再有戀人的感覺了。

            06.04.02???16:05
            修不好算了,也不要緊,錢不重要,下次攢錢買個(gè)好些的

            06.04.02???18:16
            不開通網(wǎng)絡(luò),電腦對(duì)我沒有用的,你先拿去用吧,哪天來拿說一聲就好。

            06.04.02???19:26
            你知道,這兩年來我們之間一直有些人,我不是好女人,但是為了你我都結(jié)束了。只是我現(xiàn)在忽然有了年齡壓力

            06.04.02???19:42
            不是的,單純的年齡小些的女孩子更適合你,而我需要各方面都制得住我的,請(qǐng)相信我是理智的

            06.04.02???19:55
            對(duì)我來說,沒什么是長久的

            06.04.02???20:14
            這件事你不要告訴別人,我不希望公司里有干擾。公司里你還是我名義上的男友。

            06.04.02???20:41
            我們把最美好的歲月都給了彼此,沒有什么可遺憾的了。

            06.04.02???21:07
            你永遠(yuǎn)是我最好最可信賴的朋友,我會(huì)在北京待幾年,因?yàn)檫€喜歡這份工作。但將來應(yīng)該會(huì)去上海的。

            06.04.03???21:33
            我會(huì)的。謝謝你!我牽掛你如同你牽掛我,家里都是白酒味,呵呵。

            06.04.03???21:45
            不一定離婚,但是很可能出軌/不要去追究了,從功利或者世俗的角度看,我們不適合過一聲,我作的很,而你適合好女孩子。

            06.04.03???22:10
            這次你比我想象的堅(jiān)強(qiáng),也許我們習(xí)慣了彼此看作孩子吧。我還夢想著有天能用學(xué)生的方式去蝥源,不知道是否永遠(yuǎn)變成一個(gè)夢想。我們都是完美主義者,而世界永遠(yuǎn)是不完美的,不說了,干活,你也好好看書,我們都好好生活:)

            06.04.09???11:51
            我們之間近兩年有一些小插曲,你也知道我因?yàn)楹ε聜δ悖罱K都放棄了,可是戀愛太久,確實(shí)沒有激情了,也不想平淡過下去。

            06.04.09???11:54
            你對(duì)我太好,我卻不知足,反而覺得有壓力,對(duì)我而言保留一個(gè)人的空間很重要,即使一個(gè)人住,一個(gè)人打掃,不用遷就別人的感覺很自由。

            06.04.09???16:02
            我遇到一個(gè)和自己很象的人,彼此都看得透,但是都不說,類似的人可能不是個(gè)好選擇,也不會(huì)長久,但是這次我不想再背著你,腳踏兩條船會(huì)有負(fù)疚感

            06.04.09???16:29
            你不明白,我卻了解自己,我實(shí)在是太愛玩了,根本不能用理智控制自己,不論什么結(jié)果,將來出什么亂子都是自找的。但是,不該一再對(duì)不起你。這樣我再?zèng)]有心理負(fù)擔(dān)了。

            06.04.09???22:05
            我知道,你是少有的好男人,但是我更看重情商,你明白嗎?你的成熟度已經(jīng)比我落后,以后也不可能趕上,因?yàn)槟阄噎h(huán)境不同,而且我也在成長。

            06.04.09???22:12
            謝謝你一直以來的寬容和愛護(hù),你是我一輩子的親人和朋友,我依舊牽掛你的點(diǎn)點(diǎn)滴滴,只有這次,我必須負(fù)你,其他能為你做的,我絕不猶豫

            06.04.09???22:26
            別計(jì)較這些了,好嗎?我很可能是錯(cuò)的,是幼稚的,但是我既然已經(jīng)做了決定,請(qǐng)尊重我,后果我也會(huì)自己承擔(dān)

            06.04.06???22:36
            恩,我知道,這次經(jīng)歷會(huì)讓我們都更成熟,我很喜歡你這樣,結(jié)束吧,這段戀愛的結(jié)束,也許是新的開始,我對(duì)你的感情,早就是親情了。

            06.04.09???22:51
            謝謝你,親愛的,謝謝你的努力!但這是我最后一次說愛你了,對(duì)了,我給你帶了兩袋奶酪,不知道你會(huì)不會(huì)喜歡,我睡了,再見

            posted @ 2006-04-09 17:43 inwind 閱讀(325) | 評(píng)論 (0)編輯 收藏

            2006年4月3日

            比干問菜農(nóng),空心菜無心是菜,人如果無心了呢?
            ?
            終于明白中國古人為什么用心痛,傷心,揪心這些詞了。
            ?
            思考的是大腦,可是,痛得是心,揮之不去的,痛徹心菲的

            posted @ 2006-04-03 08:13 inwind 閱讀(239) | 評(píng)論 (0)編輯 收藏

            2006年3月21日

            1. 數(shù)據(jù)結(jié)構(gòu)不必強(qiáng)求功能復(fù)雜,夠用就行,太復(fù)雜的數(shù)據(jù)結(jié)構(gòu)難于控制,并且消耗資源。
            2. 注意內(nèi)存的分配&回收,設(shè)計(jì)實(shí)現(xiàn)時(shí)一定要清楚所使用內(nèi)存的生存周期,出生點(diǎn)&死亡點(diǎn)
            3. 初始化,所有使用的變量一定要初始化,一點(diǎn)點(diǎn)的開銷,可以節(jié)省大量的時(shí)間
            4. 算法的修煉有欠火候

            posted @ 2006-03-21 12:02 inwind 閱讀(264) | 評(píng)論 (0)編輯 收藏

            2006年2月10日

            項(xiàng)目主頁: http://www.uclinux.org/

            簡介
            Linux是一種很受歡迎的操作系統(tǒng),它與UNIX系統(tǒng)兼容,開放源代碼。它原本被設(shè)計(jì)為桌面系統(tǒng),現(xiàn)在廣泛應(yīng)用于服務(wù)器領(lǐng)域。而更大的影響在于它正逐漸的應(yīng)用于嵌入式設(shè)備。uClinux正是在這種氛圍下產(chǎn)生的。在uClinux這個(gè)英文單詞中u表示Micro,小的意思,C表示Control,控制的意思,所以u(píng)Clinux就是Micro-Control-Linux,字面上的理解就是"針對(duì)微控制領(lǐng)域而設(shè)計(jì)的Linux系統(tǒng)"。

            uClinux小型化的做法

            標(biāo)準(zhǔn)Linux可能采用的小型化方法
            1. 重新編譯內(nèi)核
            Linux內(nèi)核采用模塊化的設(shè)計(jì),即很多功能塊可以獨(dú)立的加上或卸下,開發(fā)人員在設(shè)計(jì)內(nèi)核時(shí)把這些內(nèi)核模塊作為可選的選項(xiàng),可以在編譯系統(tǒng)內(nèi)核時(shí)指定。因此一種較通用的做法是對(duì)Linux內(nèi)核重新編譯,在編譯時(shí)仔細(xì)的選擇嵌入式設(shè)備所需要的功能支持模塊,同時(shí)刪除不需要的功能。通過對(duì)內(nèi)核的重新配置,可以使系統(tǒng)運(yùn)行所需要的內(nèi)核顯著減小,從而縮減資源使用量。
            2. 制作root文件系統(tǒng)映象
            Linux系統(tǒng)在啟動(dòng)時(shí)必須加載根(root)文件系統(tǒng),因此剪裁系統(tǒng)同時(shí)包括root file system的剪裁。在x86系統(tǒng)下,Linux可以在Dos下,使用Loadlin文件加載啟動(dòng),
            uClinux采用的小型化方法
            1.uClinux的內(nèi)核加載方式
            uClinux的內(nèi)核有兩種可選的運(yùn)行方式:可以在flash上直接運(yùn)行,也可以加載到內(nèi)存中運(yùn)行。這種做法可以減少內(nèi)存需要。
            Flash運(yùn)行方式:把內(nèi)核的可執(zhí)行映象燒寫到flash上,系統(tǒng)啟動(dòng)時(shí)從flash的某個(gè)地址開始逐句執(zhí)行。這種方法實(shí)際上是很多嵌入式系統(tǒng)采用的方法。
            內(nèi)核加載方式:把內(nèi)核的壓縮文件存放在flash上,系統(tǒng)啟動(dòng)時(shí)讀取壓縮文件在內(nèi)存里解壓,然后開始執(zhí)行,這種方式相對(duì)復(fù)雜一些,但是運(yùn)行速度可能更快(ram的存取速率要比flash高)。同時(shí)這也是標(biāo)準(zhǔn)Linux系統(tǒng)采用的啟動(dòng)方式。
            2.uClinux的根(root)文件系統(tǒng)
            uClinux系統(tǒng)采用romfs文件系統(tǒng),這種文件系統(tǒng)相對(duì)于一般的ext2文件系統(tǒng)要求更少的空間。空間的節(jié)約來自于兩個(gè)方面,首先內(nèi)核支持 romfs文件系統(tǒng)比支持ext2文件系統(tǒng)需要更少的代碼,其次romfs文件系統(tǒng)相對(duì)簡單,在建立文件系統(tǒng)超級(jí)塊(superblock)需要更少的存儲(chǔ)空間。Romfs文件系統(tǒng)不支持動(dòng)態(tài)擦寫保存,對(duì)于系統(tǒng)需要?jiǎng)討B(tài)保存的數(shù)據(jù)采用虛擬ram盤的方法進(jìn)行處理(ram盤將采用ext2文件系統(tǒng))。
            3.uClinux的應(yīng)用程序庫
            uClinux小型化的另一個(gè)做法是重寫了應(yīng)用程序庫,相對(duì)于越來越大且越來越全的glibc庫,uClibc對(duì)libc做了精簡。
            uClinux對(duì)用戶程序采用靜態(tài)連接的形式,這種做法會(huì)使應(yīng)用程序變大,但是基于內(nèi)存管理的問題,不得不這樣做(這將在下文對(duì)uClinux內(nèi)存管理展開分析時(shí)進(jìn)行說明),同時(shí)這種做法也更接近于通常嵌入式系統(tǒng)的做法。

            uClinux的開發(fā)環(huán)境

            GNU開發(fā)套件
            Gnu開發(fā)套件作為通用的Linux開放套件,包括一系列的開發(fā)調(diào)試工具。主要組件:
            Gcc: 編譯器,可以做成交叉編譯的形式,即在宿主機(jī)上開發(fā)編譯目標(biāo)上可運(yùn)行的二進(jìn)制文件。
            Binutils:一些輔助工具,包括objdump(可以反編譯二進(jìn)制文件),as(匯編編譯器),ld(連接器)等等。
            Gdb:調(diào)試器,可使用多種交叉調(diào)試方式,gdb-bdm(背景調(diào)試工具),gdbserver(使用以太網(wǎng)絡(luò)調(diào)試)。
            uClinux的打印終端
            通常情況下,uClinux的默認(rèn)終端是串口,內(nèi)核在啟動(dòng)時(shí)所有的信息都打印到串口終端(使用printk函數(shù)打印),同時(shí)也可以通過串口終端與系統(tǒng)交互。
            uClinux在啟動(dòng)時(shí)啟動(dòng)了telnetd(遠(yuǎn)程登錄服務(wù)),操作者可以遠(yuǎn)程登錄上系統(tǒng),從而控制系統(tǒng)的運(yùn)行。至于是否允許遠(yuǎn)程登錄可以通過燒寫romfs文件系統(tǒng)時(shí)有用戶決定是否啟動(dòng)遠(yuǎn)程登錄服務(wù)。
            交叉編譯調(diào)試工具
            支持一種新的處理器,必須具備一些編譯,匯編工具,使用這些工具可以形成可運(yùn)行于這種處理器的二進(jìn)制文件。對(duì)于內(nèi)核使用的編譯工具同應(yīng)用程序使用的有所不同。在解釋不同點(diǎn)之前,需要對(duì)gcc連接做一些說明:
            .ld(link description)文件:ld文件是指出連接時(shí)內(nèi)存映象格式的文件。
            crt0.S:應(yīng)用程序編譯連接時(shí)需要的啟動(dòng)文件,主要是初始化應(yīng)用程序棧。
            pic:position independence code ,與位置無關(guān)的二進(jìn)制格式文件,在程序段中必須包括reloc段,從而使的代碼加載時(shí)可以進(jìn)行重新定位。
            內(nèi)核編譯連接時(shí),使用ucsimm.ld文件,形成可執(zhí)行文件映象,所形成的代碼段既可以使用間接尋址方式(即使用reloc段進(jìn)行尋址),也可以使用絕對(duì)尋址方式。這樣可以給編譯器更多的優(yōu)化空間。因?yàn)閮?nèi)核可能使用絕對(duì)尋址,所以內(nèi)核加載到的內(nèi)存地址空間必須與ld文件中給定的內(nèi)存空間完全相同。
            應(yīng)用程序的連接與內(nèi)核連接方式不同。應(yīng)用程序由內(nèi)核加載(可執(zhí)行文件加載器將在后面討論),由于應(yīng)用程序的ld文件給出的內(nèi)存空間與應(yīng)用程序?qū)嶋H被加載的內(nèi)存位置可能不同,這樣在應(yīng)用程序加載的過程中需要一個(gè)重新地位的過程,即對(duì)reloc段進(jìn)行修正,使得程序進(jìn)行間接尋址時(shí)不至于出錯(cuò)。(這個(gè)問題在 i386等高級(jí)處理器上方法有所不同,本文將在后面進(jìn)一步分析)。
            由上述討論,至少需要兩套編譯連接工具。在討論過uClinux的內(nèi)存管理后本文將給出整個(gè)系統(tǒng)的工作流程以及系統(tǒng)在flash和ram中的空間分布。
            可執(zhí)行文件格式
            先對(duì)一些名詞作一些說明:
            coff(common object file format):一種通用的對(duì)象文件格式
            elf(excutive linked file):一種為Linux系統(tǒng)所采用的通用文件格式,支持動(dòng)態(tài)連接
            flat:elf格式有很大的文件頭,flat文件對(duì)文件頭和一些段信息做了簡化
            uClinux系統(tǒng)使用flat可執(zhí)行文件格式,gcc的編譯器不能直接形成這種文件格式,但是可以形成coff或elf格式的可執(zhí)行文件,這兩種文件需要coff2flt或elf2flt工具進(jìn)行格式轉(zhuǎn)化,形成flat文件。
            當(dāng)用戶執(zhí)行一個(gè)應(yīng)用時(shí),內(nèi)核的執(zhí)行文件加載器將對(duì)flat文件進(jìn)行進(jìn)一步處理,主要是對(duì)reloc段進(jìn)行修正(可執(zhí)行文件加載器的詳見fs/binfmt_flat.c)。以下對(duì)reloc段進(jìn)一步討論。
            需要reloc段的根本原因是,程序在連接時(shí)連接器所假定的程序運(yùn)行空間與實(shí)際程序加載到的內(nèi)存空間不同。假如有這樣一條指令:
            jsr app_start;
            這一條指令采用直接尋址,跳轉(zhuǎn)到app_start地址處執(zhí)行,連接程序?qū)⒃诰幾g完成是計(jì)算出app_start的實(shí)際地址(設(shè)若實(shí)際地址為 0x10000),這個(gè)實(shí)際地址是根據(jù)ld文件計(jì)算出來(因?yàn)檫B接器假定該程序?qū)⒈患虞d到由ld文件指明的內(nèi)存空間)。但實(shí)際上由于內(nèi)存分配的關(guān)系,操作系統(tǒng)在加載時(shí)無法保證程序?qū)磍d文件加載。這時(shí)如果程序仍然跳轉(zhuǎn)到絕對(duì)地址0x10000處執(zhí)行,通常情況這是不正確的。一個(gè)解決辦法是增加一個(gè)存儲(chǔ)空間,用于存儲(chǔ)app_start的實(shí)際地址,設(shè)若使用變量addr表示這個(gè)存儲(chǔ)空間。則以上這句程序?qū)⒏臑椋?BR>movl addr, a0;
            jsr (a0);
            增加的變量addr將在數(shù)據(jù)段中占用一個(gè)4字節(jié)的空間,連接器將app_start的絕對(duì)地址存儲(chǔ)到該變量。在可執(zhí)行文件加載時(shí),可執(zhí)行文件加載器根據(jù)程序?qū)⒁虞d的內(nèi)存空間計(jì)算出app_start在內(nèi)存中的實(shí)際位置,寫入addr變量。系統(tǒng)在實(shí)際處理是不需要知道這個(gè)變量的確切存儲(chǔ)位置(也不可能知道),系統(tǒng)只要對(duì)整個(gè)reloc段進(jìn)行處理就可以了(reloc段有標(biāo)識(shí),系統(tǒng)可以讀出來)。處理很簡單只需要對(duì)reloc段中存儲(chǔ)的值統(tǒng)一加上一個(gè)偏置(如果加載的空間比預(yù)想的要靠前,實(shí)際上是減去一個(gè)偏移量)。偏置由實(shí)際的物理地址起始值同ld文件指定的地址起始值相減計(jì)算出。
            這種reloc的方式部分是由uClinux的內(nèi)存分配問題引起的,這一點(diǎn)將在uClinux內(nèi)存管理分析時(shí)說明。
            針對(duì)實(shí)時(shí)性的解決方案
            uClinux本身并沒有關(guān)注實(shí)時(shí)問題,它并不是為了Linux的實(shí)時(shí)性而提出的。另外有一種Linux--Rt-linux關(guān)注實(shí)時(shí)問題。Rt- linux執(zhí)行管理器把普通Linux的內(nèi)核當(dāng)成一個(gè)任務(wù)運(yùn)行,同時(shí)還管理了實(shí)時(shí)進(jìn)程。而非實(shí)時(shí)進(jìn)程則交給普通Linux內(nèi)核處理。這種方法已經(jīng)應(yīng)用于很多的操作系統(tǒng)用于增強(qiáng)操作系統(tǒng)的實(shí)時(shí)性,包括一些商用版UNIX系統(tǒng),Windows NT等等。這種方法優(yōu)點(diǎn)之一是實(shí)現(xiàn)簡單,且實(shí)時(shí)性能容易檢驗(yàn)。優(yōu)點(diǎn)之二是由于非實(shí)時(shí)進(jìn)程運(yùn)行于標(biāo)準(zhǔn)Linux系統(tǒng),同其它Linux商用版本之間保持了很大的兼容性。優(yōu)點(diǎn)之三是可以支持硬實(shí)時(shí)時(shí)鐘的應(yīng)用。uClinux可以使用Rt-linux的patch,從而增強(qiáng)uClinux的實(shí)時(shí)性,使得 uClinux可以應(yīng)用于工業(yè)控制、進(jìn)程控制等一些實(shí)時(shí)要求較高的應(yīng)用。

            uClinux的內(nèi)存管理
            應(yīng)該說uClinux同標(biāo)準(zhǔn)Linux的最大區(qū)別就在于內(nèi)存管理,同時(shí)也由于uClinux的內(nèi)存管理引發(fā)了一些標(biāo)準(zhǔn)Linux所不會(huì)出現(xiàn)的問題。本文將把uClinux內(nèi)存管理同標(biāo)準(zhǔn)Linux的那內(nèi)存管理部分進(jìn)行比較分析。
            標(biāo)準(zhǔn)Linux使用的虛擬存儲(chǔ)器技術(shù)
            標(biāo)準(zhǔn)Linux使用虛擬存儲(chǔ)器技術(shù),這種技術(shù)用于提供比計(jì)算機(jī)系統(tǒng)中實(shí)際使用的物理內(nèi)存大得多的內(nèi)存空間。使用者將感覺到好像程序可以使用非常大的內(nèi)存空間,從而使得編程人員在寫程序時(shí)不用考慮計(jì)算機(jī)中的物理內(nèi)存的實(shí)際容量。

            為了支持虛擬存儲(chǔ)管理器的管理,Linux系統(tǒng)采用分頁(paging)的方式來載入進(jìn)程。所謂分頁既是把實(shí)際的存儲(chǔ)器分割為相同大小的段,例如每個(gè)段1024個(gè)字節(jié),這樣1024個(gè)字節(jié)大小的段便稱為一個(gè)頁面(page)。
            虛擬存儲(chǔ)器由存儲(chǔ)器管理機(jī)制及一個(gè)大容量的快速硬盤存儲(chǔ)器支持。它的實(shí)現(xiàn)基于局部性原理,當(dāng)一個(gè)程序在運(yùn)行之前,沒有必要全部裝入內(nèi)存,而是僅將那些當(dāng)前要運(yùn)行的那些部分頁面或段裝入內(nèi)存運(yùn)行(copy-on-write),其余暫時(shí)留在硬盤上程序運(yùn)行時(shí)如果它所要訪問的頁(段)已存在,則程序繼續(xù)運(yùn)行,如果發(fā)現(xiàn)不存在的頁(段),操作系統(tǒng)將產(chǎn)生一個(gè)頁錯(cuò)誤(page fault),這個(gè)錯(cuò)誤導(dǎo)致操作系統(tǒng)把需要運(yùn)行的部分加載到內(nèi)存中。必要時(shí)操作系統(tǒng)還可以把不需要的內(nèi)存頁(段)交換到磁盤上。利用這樣的方式管理存儲(chǔ)器,便可把一個(gè)進(jìn)程所需要用到的存儲(chǔ)器以化整為零的方式,視需求分批載入,而核心程序則憑借屬于每個(gè)頁面的頁碼來完成尋址各個(gè)存儲(chǔ)器區(qū)段的工作。
            標(biāo)準(zhǔn)Linux是針對(duì)有內(nèi)存管理單元的處理器設(shè)計(jì)的。在這種處理器上,虛擬地址被送到內(nèi)存管理單元(MMU),把虛擬地址映射為物理地址。
            通過賦予每個(gè)任務(wù)不同的虛擬--物理地址轉(zhuǎn)換映射,支持不同任務(wù)之間的保護(hù)。地址轉(zhuǎn)換函數(shù)在每一個(gè)任務(wù)中定義,在一個(gè)任務(wù)中的虛擬地址空間映射到物理內(nèi)存的一個(gè)部分,而另一個(gè)任務(wù)的虛擬地址空間映射到物理存儲(chǔ)器中的另外區(qū)域。計(jì)算機(jī)的存儲(chǔ)管理單元(MMU)一般有一組寄存器來標(biāo)識(shí)當(dāng)前運(yùn)行的進(jìn)程的轉(zhuǎn)換表。在當(dāng)前進(jìn)程將CPU放棄給另一個(gè)進(jìn)程時(shí)(一次上下文切換),內(nèi)核通過指向新進(jìn)程地址轉(zhuǎn)換表的指針加載這些寄存器。MMU寄存器是有特權(quán)的,只能在內(nèi)核態(tài)才能訪問。這就保證了一個(gè)進(jìn)程只能訪問自己用戶空間內(nèi)的地址,而不會(huì)訪問和修改其它進(jìn)程的空間。當(dāng)可執(zhí)行文件被加載時(shí),加載器根據(jù)缺省的ld文件,把程序加載到虛擬內(nèi)存的一個(gè)空間,因?yàn)檫@個(gè)原因?qū)嶋H上很多程序的虛擬地址空間是相同的,但是由于轉(zhuǎn)換函數(shù)不同,所以實(shí)際所處的內(nèi)存區(qū)域也不同。而對(duì)于多進(jìn)程管理當(dāng)處理器進(jìn)行進(jìn)程切換并執(zhí)行一個(gè)新任務(wù)時(shí),一個(gè)重要部分就是為新任務(wù)切換任務(wù)轉(zhuǎn)換表。我們可以看到Linux系統(tǒng)的內(nèi)存管理至少實(shí)現(xiàn)了以下功能:
            運(yùn)行比內(nèi)存還要大的程序。理想情況下應(yīng)該可以運(yùn)行任意大小的程序
            ◇可以運(yùn)行只加載了部分的程序,縮短了程序啟動(dòng)的時(shí)間
            ◇可以使多個(gè)程序同時(shí)駐留在內(nèi)存中提高CPU的利用率
            ◇可以運(yùn)行重定位程序。即程序可以方于內(nèi)存中的任何一處,而且可以在執(zhí)行過程中移動(dòng)。
            ◇寫機(jī)器無關(guān)的代碼。程序不必事先約定機(jī)器的配置情況。
            ◇減輕程序員分配和管理內(nèi)存資源的負(fù)擔(dān)。
            ◇可以進(jìn)行共享--例如,如果兩個(gè)進(jìn)程運(yùn)行同一個(gè)程序,它們應(yīng)該可以共享程序代碼的同一個(gè)副本。
            ◇提供內(nèi)存保護(hù),進(jìn)程不能以非授權(quán)方式訪問或修改頁面,內(nèi)核保護(hù)單個(gè)進(jìn)程的數(shù)據(jù)和代碼以防止其它進(jìn)程修改它們。否則,用戶程序可能會(huì)偶然(或惡意)的破壞內(nèi)核或其它用戶程序。
            虛存系統(tǒng)并不是沒有代價(jià)的。內(nèi)存管理需要地址轉(zhuǎn)換表和其他一些數(shù)據(jù)結(jié)構(gòu),留給程序的內(nèi)存減少了。地址轉(zhuǎn)換增加了每一條指令的執(zhí)行時(shí)間,而對(duì)于有額外內(nèi)存操作的指令會(huì)更嚴(yán)重。當(dāng)進(jìn)程訪問不在內(nèi)存的頁面時(shí),系統(tǒng)發(fā)生失效。系統(tǒng)處理該失效,并將頁面加載到內(nèi)存中,這需要極耗時(shí)間的磁盤I/O操作。總之內(nèi)存管理活動(dòng)占用了相當(dāng)一部分cpu時(shí)間(在較忙的系統(tǒng)中大約占10%)。
            uClinux針對(duì)NOMMU的特殊處理
            對(duì)于uClinux來說,其設(shè)計(jì)針對(duì)沒有MMU的處理器,即uClinux不能使用處理器的虛擬內(nèi)存管理技術(shù)(應(yīng)該說這種不帶有MMU的處理器在嵌入式設(shè)備中相當(dāng)普偏)。uClinux仍然采用存儲(chǔ)器的分頁管理,系統(tǒng)在啟動(dòng)時(shí)把實(shí)際存儲(chǔ)器進(jìn)行分頁。在加載應(yīng)用程序時(shí)程序分頁加載。但是由于沒有MMU管理,所以實(shí)際上uClinux采用實(shí)存儲(chǔ)器管理策略(real memeory management)。這一點(diǎn)影響了系統(tǒng)工作的很多方面。
            uClinux系統(tǒng)對(duì)于內(nèi)存的訪問是直接的,(它對(duì)地址的訪問不需要經(jīng)過MMU,而是直接送到地址線上輸出),所有程序中訪問的地址都是實(shí)際的物理地址。操作系統(tǒng)對(duì)內(nèi)存空間沒有保護(hù)(這實(shí)際上是很多嵌入式系統(tǒng)的特點(diǎn)),各個(gè)進(jìn)程實(shí)際上共享一個(gè)運(yùn)行空間(沒有獨(dú)立的地址轉(zhuǎn)換表)。
            一個(gè)進(jìn)程在執(zhí)行前,系統(tǒng)必須為進(jìn)程分配足夠的連續(xù)地址空間,然后全部載入主存儲(chǔ)器的連續(xù)空間中。與之相對(duì)應(yīng)的是標(biāo)準(zhǔn)Linux系統(tǒng)在分配內(nèi)存時(shí)沒有必要保證實(shí)際物理存儲(chǔ)空間是連續(xù)的,而只要保證虛存地址空間連續(xù)就可以了。另外一個(gè)方面程序加載地址與預(yù)期(ld文件中指出的)通常都不相同,這樣 relocation過程就是必須的。此外磁盤交換空間也是無法使用的,系統(tǒng)執(zhí)行時(shí)如果缺少內(nèi)存將無法通過磁盤交換來得到改善。
            uClinux對(duì)內(nèi)存的管理減少同時(shí)就給開發(fā)人員提出了更高的要求。如果從易用性這一點(diǎn)來說,uClinux的內(nèi)存管理是一種倒退,退回了到了UNIX早期或是Dos系統(tǒng)時(shí)代。開發(fā)人員不得不參與系統(tǒng)的內(nèi)存管理。從編譯內(nèi)核開始,開發(fā)人員必須告訴系統(tǒng)這塊開發(fā)板到底擁有多少的內(nèi)存(假如你欺騙了系統(tǒng),那將在后面運(yùn)行程序時(shí)受到懲罰),從而系統(tǒng)將在啟動(dòng)的初始化階段對(duì)內(nèi)存進(jìn)行分頁,并且標(biāo)記已使用的和未使用的內(nèi)存。系統(tǒng)將在運(yùn)行應(yīng)用時(shí)使用這些分頁內(nèi)存。
            由于應(yīng)用程序加載時(shí)必須分配連續(xù)的地址空間,而針對(duì)不同硬件平臺(tái)的可一次成塊(連續(xù)地址)分配內(nèi)存大小限制是不同(目前針對(duì)ez328處理器的 uClinux是128k,而針對(duì)coldfire處理器的系統(tǒng)內(nèi)存則無此限制),所以開發(fā)人員在開發(fā)應(yīng)用程序時(shí)必須考慮內(nèi)存的分配情況并關(guān)注應(yīng)用程序需要運(yùn)行空間的大小。另外由于采用實(shí)存儲(chǔ)器管理策略,用戶程序同內(nèi)核以及其它用戶程序在一個(gè)地址空間,程序開發(fā)時(shí)要保證不侵犯其它程序的地址空間,以使得程序不至于破壞系統(tǒng)的正常工作,或?qū)е缕渌绦虻倪\(yùn)行異常。
            從內(nèi)存的訪問角度來看,開發(fā)人員的權(quán)利增大了(開發(fā)人員在編程時(shí)可以訪問任意的地址空間),但與此同時(shí)系統(tǒng)的安全性也大為下降。此外,系統(tǒng)對(duì)多進(jìn)程的管理將有很大的變化,這一點(diǎn)將在uClinux的多進(jìn)程管理中說明。
            雖然uClinux的內(nèi)存管理與標(biāo)準(zhǔn)Linux系統(tǒng)相比功能相差很多,但應(yīng)該說這是嵌入式設(shè)備的選擇。在嵌入式設(shè)備中,由于成本等敏感因素的影響,普偏的采用不帶有MMU的處理器,這決定了系統(tǒng)沒有足夠的硬件支持實(shí)現(xiàn)虛擬存儲(chǔ)管理技術(shù)。從嵌入式設(shè)備實(shí)現(xiàn)的功能來看,嵌入式設(shè)備通常在某一特定的環(huán)境下運(yùn)行,只要實(shí)現(xiàn)特定的功能,其功能相對(duì)簡單,內(nèi)存管理的要求完全可以由開發(fā)人員考慮。
            標(biāo)準(zhǔn)Linux系統(tǒng)的進(jìn)程、線程
            進(jìn)程:進(jìn)程是一個(gè)運(yùn)行程序并為其提供執(zhí)行環(huán)境的實(shí)體,它包括一個(gè)地址空間和至少一個(gè)控制點(diǎn),進(jìn)程在這個(gè)地址空間上執(zhí)行單一指令序列。進(jìn)程地址空間包括可以訪問或引用的內(nèi)存單元的集合,進(jìn)程控制點(diǎn)通過一個(gè)一般稱為程序計(jì)數(shù)器(program counter,PC)的硬件寄存器控制和跟蹤進(jìn)程指令序列。
            fork:由于進(jìn)程為執(zhí)行程序的環(huán)境,因此在執(zhí)行程序前必須先建立這個(gè)能"跑"程序的環(huán)境。Linux系統(tǒng)提供系統(tǒng)調(diào)用拷貝現(xiàn)行進(jìn)程的內(nèi)容,以產(chǎn)生新的進(jìn)程,調(diào)用fork的進(jìn)程稱為父進(jìn)程;而所產(chǎn)生的新進(jìn)程則稱為子進(jìn)程。子進(jìn)程會(huì)承襲父進(jìn)程的一切特性,但是它有自己的數(shù)據(jù)段,也就是說,盡管子進(jìn)程改變了所屬的變量,卻不會(huì)影響到父進(jìn)程的變量值。
            父進(jìn)程和子進(jìn)程共享一個(gè)程序段,但是各自擁有自己的堆棧、數(shù)據(jù)段、用戶空間以及進(jìn)程控制塊。換言之,兩個(gè)進(jìn)程執(zhí)行的程序代碼是一樣的,但是各有各的程序計(jì)數(shù)器與自己的私人數(shù)據(jù)。
            當(dāng)內(nèi)核收到fork請(qǐng)求時(shí),它會(huì)先查核三件事:首先檢查存儲(chǔ)器是不是足夠;其次是進(jìn)程表是否仍有空缺;最后則是看看用戶是否建立了太多的子進(jìn)程。如果上述說三個(gè)條件滿足,那么操作系統(tǒng)會(huì)給子進(jìn)程一個(gè)進(jìn)程識(shí)別碼,并且設(shè)定cpu時(shí)間,接著設(shè)定與父進(jìn)程共享的段,同時(shí)將父進(jìn)程的inode拷貝一份給子進(jìn)程運(yùn)用,最終子進(jìn)程會(huì)返回?cái)?shù)值0以表示它是子進(jìn)程,至于父進(jìn)程,它可能等待子進(jìn)程的執(zhí)行結(jié)束,或與子進(jìn)程各做個(gè)的。
            exec系統(tǒng)調(diào)用:該系統(tǒng)調(diào)用提供一個(gè)進(jìn)程去執(zhí)行另一個(gè)進(jìn)程的能力,exec系統(tǒng)調(diào)用是采用覆蓋舊有進(jìn)程存儲(chǔ)器內(nèi)容的方式,所以原來程序的堆棧、數(shù)據(jù)段與程序段都會(huì)被修改,只有用戶區(qū)維持不變。
            vfork系統(tǒng)調(diào)用:由于在使用fork時(shí),內(nèi)核會(huì)將父進(jìn)程拷貝一份給子進(jìn)程,但是這樣的做法相當(dāng)浪費(fèi)時(shí)間,因?yàn)榇蠖鄶?shù)的情形都是程序在調(diào)用fork后就立即調(diào)用exec,這樣剛拷貝來的進(jìn)程區(qū)域又立即被新的數(shù)據(jù)覆蓋掉。因此Linux系統(tǒng)提供一個(gè)系統(tǒng)調(diào)用vfork,vfork假定系統(tǒng)在調(diào)用完成 vfork后會(huì)馬上執(zhí)行exec,因此vfork不拷貝父進(jìn)程的頁面,只是初始化私有的數(shù)據(jù)結(jié)構(gòu)與準(zhǔn)備足夠的分頁表。這樣實(shí)際在vfork調(diào)用完成后父子進(jìn)程事實(shí)上共享同一塊存儲(chǔ)器(在子進(jìn)程調(diào)用exec或是exit之前),因此子進(jìn)程可以更改父進(jìn)程的數(shù)據(jù)及堆棧信息,因此vfork系統(tǒng)調(diào)用完成后,父進(jìn)程進(jìn)入睡眠,直到子進(jìn)程執(zhí)行exec。當(dāng)子進(jìn)程執(zhí)行exec時(shí),由于exec要使用被執(zhí)行程序的數(shù)據(jù),代碼覆蓋子進(jìn)程的存儲(chǔ)區(qū)域,這樣將產(chǎn)生寫保護(hù)錯(cuò)誤(do_wp_page)(這個(gè)時(shí)候子進(jìn)程寫的實(shí)際上是父進(jìn)程的存儲(chǔ)區(qū)域),
            這個(gè)錯(cuò)誤導(dǎo)致內(nèi)核為子進(jìn)程重新分配存儲(chǔ)空間。當(dāng)子進(jìn)程正確開始執(zhí)行后,將喚醒父進(jìn)程,使得父進(jìn)程繼續(xù)往后執(zhí)行。
            uClinux的多進(jìn)程處理
            uClinux沒有mmu管理存儲(chǔ)器,在實(shí)現(xiàn)多個(gè)進(jìn)程時(shí)(fork調(diào)用生成子進(jìn)程)需要實(shí)現(xiàn)數(shù)據(jù)保護(hù)。
            uClinux的fork和vfork:uClinux的fork等于vfork。實(shí)際上uClinux的多進(jìn)程管理通過vfork來實(shí)現(xiàn)。這意味著 uClinux系統(tǒng)fork調(diào)用完程后,要么子進(jìn)程代替父進(jìn)程執(zhí)行(此時(shí)父進(jìn)程已經(jīng)sleep)直到子進(jìn)程調(diào)用exit退出,要么調(diào)用exec執(zhí)行一個(gè)新的進(jìn)程,這個(gè)時(shí)候?qū)a(chǎn)生可執(zhí)行文件的加載,即使這個(gè)進(jìn)程只是父進(jìn)程的拷貝,這個(gè)過程也不能避免。當(dāng)子進(jìn)程執(zhí)行exit或exec后,子進(jìn)程使用 wakeup把父進(jìn)程喚醒,父進(jìn)程繼續(xù)往下執(zhí)行。
            uClinux的這種多進(jìn)程實(shí)現(xiàn)機(jī)制同它的內(nèi)存管理緊密相關(guān)。uClinux針對(duì)nommu處理器開發(fā),所以被迫使用一種flat方式的內(nèi)存管理模式,啟動(dòng)新的應(yīng)用程序時(shí)系統(tǒng)必須為應(yīng)用程序分配存儲(chǔ)空間,并立即把應(yīng)用程序加載到內(nèi)存。缺少了MMU的內(nèi)存重映射機(jī)制,uClinux必須在可執(zhí)行文件加載階段對(duì)可執(zhí)行文件reloc處理,使得程序執(zhí)行時(shí)能夠直接使用物理內(nèi)存。

            posted @ 2006-02-10 09:52 inwind 閱讀(389) | 評(píng)論 (0)編輯 收藏

            2006年2月9日

            傳統(tǒng)的入侵檢測系統(tǒng)(IDS)只能被動(dòng)地給管理員提供檢測報(bào)告,最終還必須通過人工來解決問題。雖然大部分IDS產(chǎn)品能夠在攻擊發(fā)生后與防火墻進(jìn)行互動(dòng),但是這種互動(dòng)只能夠?qū)Τ掷m(xù)的低層次攻擊產(chǎn)生很好的阻止作用,在容易受到深層次攻擊的場合,用戶還是希望采用能夠?qū)粜袨檫M(jìn)行實(shí)時(shí)阻斷的產(chǎn)品,來提高信息系統(tǒng)的安全級(jí)別,因此入侵防護(hù)系統(tǒng)McAfee IntruShield應(yīng)運(yùn)而生。

            體驗(yàn)部署和配置

            IntruShield 2600有別于基于通用平臺(tái)的產(chǎn)品,它采用NP(network processor)和ASIC(專用集成電路)混合的架構(gòu)設(shè)計(jì)。因?yàn)樾枰獙?shí)現(xiàn)實(shí)時(shí)阻斷,所以IntruShield 2600在進(jìn)行協(xié)議重組的過程中需要比傳統(tǒng)IDS更強(qiáng)的處理能力。通用的硬件平臺(tái)在多端口的配置的情況下很難滿足實(shí)時(shí)阻斷的需求。NP加ASIC這種結(jié)構(gòu)在高端的3層交換機(jī)和防火墻中被大量采用,能夠?qū)崿F(xiàn)非常高的轉(zhuǎn)發(fā)率,可以幫助入侵防護(hù)設(shè)備進(jìn)行實(shí)時(shí)阻斷。

            靈活多樣的配置方式

            這款產(chǎn)品配置了8個(gè)端口,在SPAN (Switched Port Analysis)模式工作時(shí),全部可以用作檢測端口,即如果用戶只需要傳統(tǒng)的IDS功能,這款產(chǎn)品完全可以充當(dāng)一個(gè)8口的IDS,不過在部署時(shí)需要考慮到吞吐量。IntruShield 2600的拿手好戲在于對(duì)入侵和非法的數(shù)據(jù)包進(jìn)行阻斷,這是在In-line的模式下實(shí)現(xiàn)的,這個(gè)模式是把IPS作為一個(gè)以太網(wǎng)的橋接器,透明地連接到已有的網(wǎng)絡(luò)中,而不需要改動(dòng)原有網(wǎng)絡(luò)的配置,對(duì)于一個(gè)復(fù)雜的網(wǎng)絡(luò)來說,這種設(shè)計(jì)可以減輕調(diào)試安裝設(shè)備對(duì)原有網(wǎng)絡(luò)的影響。在這種模式下,必須成對(duì)地配置端口。因此在只使用全部100M銅纜口時(shí),這款產(chǎn)品幾乎可以達(dá)到100%的利用率,而在使用千兆光口時(shí),這款產(chǎn)品就只能處理60%左右的網(wǎng)絡(luò)流量,對(duì)于一個(gè)正常設(shè)計(jì)的網(wǎng)絡(luò)來說,60%已經(jīng)是很高的突發(fā)流量了。

            即插即用的快速部署

            這款產(chǎn)品的軟件和硬件的配合程度是非常高的。雖然各個(gè)管理服務(wù)器上都需要安裝多個(gè)服務(wù)程序,但是McAfee通過把這些服務(wù)打包,整合成安裝向?qū)峁┙o了用戶。我們只需要點(diǎn)擊幾次“下一步”,并且設(shè)置好管理端口的IP地址,就能夠完成安裝。通過RS-232配置好控制網(wǎng)絡(luò)接口的IP地址后,我們就可以采用瀏覽器對(duì)設(shè)備進(jìn)行管理了。

            整個(gè)管理配置界面完全是由動(dòng)態(tài)網(wǎng)頁和Java Applet組成,既能在管理服務(wù)器本機(jī)上進(jìn)行管理,還可以在任意能夠訪問管理服務(wù)器的計(jì)算機(jī)上通過瀏覽器進(jìn)行管理和配置。這樣可以把警告信息匯總到單個(gè)管理服務(wù)器上,然后在其他節(jié)點(diǎn)上進(jìn)行分析或者報(bào)告。

            高性能的安全屏障、檢測率測試

            我們選擇了Blade測試工具進(jìn)行模擬攻擊測試,選取50種典型攻擊樣例。通過模擬攻擊和被攻擊的環(huán)境,把IntruShield 2600設(shè)置為阻斷模式,通過比較發(fā)出的攻擊和從控制臺(tái)上觀察到的報(bào)警信息來確定設(shè)備檢測的正確性。Blade是目前可以模擬攻擊類型最多的安全測試工具。我們選擇的攻擊樣例也是按照最近比較盛行、危害比較大以及容易發(fā)生的原則來進(jìn)行的。

            測試結(jié)果非常令人振奮。在測試中,所有的攻擊都沒有被漏報(bào)。但是,在這樣的測試中,我們并不能確定攻擊是否真的被阻斷了,于是我們進(jìn)行了下面的測試。

            阻斷能力測試

            我們找來了一個(gè)針對(duì)Windows NetBIOS缺陷的攻擊工具,這個(gè)缺陷存在于Windows 2000 SP3(包括SP3)以下的版本中。在沒有打開IntruShield 2600阻斷功能的情況下,僅打了SP2補(bǔ)丁的目標(biāo)主機(jī)直接藍(lán)屏,在進(jìn)行內(nèi)存轉(zhuǎn)存以后自動(dòng)啟動(dòng),而在開啟IntruShield 2600阻斷功能后再次發(fā)起攻擊,目標(biāo)主機(jī)就會(huì)安然無恙,并且兩次攻擊在管理服務(wù)器上都有詳細(xì)的報(bào)告,這說明IntruShield 2600的阻斷能力非常出色。

            大家可能已經(jīng)發(fā)現(xiàn)了,我們所采用的攻擊類型并不是簡單的畸形IP包攻擊,而是在防火墻看來正確連接的情況下進(jìn)行的高層次的操作,這些操作大多是利用系統(tǒng)或者應(yīng)用本身的缺陷,制造異常操作來導(dǎo)致其無法正常工作,尤其是一些七層攻擊,如果只采用IDS和防火墻互動(dòng)的方法來阻止攻擊,很可能讓攻擊得逞,因此需要在攻擊進(jìn)行中立即阻斷。在阻斷模式下,IntruShield 2600除了要重組協(xié)議進(jìn)行判斷外,還需要放行正確的數(shù)據(jù),因此面臨著嚴(yán)峻的性能考驗(yàn)。

            吞吐能力測試

            為了考驗(yàn)NP/ASIC架構(gòu)的性能,我們創(chuàng)建了一個(gè)穩(wěn)定的背景流,然后模擬攻擊。通過觀察在處于標(biāo)稱吞吐量邊緣的IntruShield 2600對(duì)攻擊的報(bào)告情況來確定這款產(chǎn)品的實(shí)際吞吐性能。

            我們采用思博倫通信的Avalanche和Reflector,制造了一個(gè)約等于600Mbps的HTTP流量,然后依然沿用功能驗(yàn)證中的攻擊檢測方法對(duì) IntruShield 2600進(jìn)行了測試。在標(biāo)稱的600Mbps吞吐量下,IntruShield 2600居然能一個(gè)不漏地檢測到攻擊,這一測試結(jié)果一方面肯定了這種基于NP和ASIC混合平臺(tái)的優(yōu)勢,另一方面,也說明了這款產(chǎn)品在標(biāo)稱的吞吐量下,還保留了一部分處理能力,用于應(yīng)付突發(fā)的流量對(duì)系統(tǒng)正常運(yùn)作帶來的影響。

            測試總結(jié)

            由于采用了NP/ASIC架構(gòu),在進(jìn)行大數(shù)據(jù)量的協(xié)議分析時(shí),這款產(chǎn)品表現(xiàn)出了非常強(qiáng)的吞吐性能,使得阻斷攻擊這一獨(dú)特的功能沒有受到任何影響。因?yàn)檫@款產(chǎn)品主要聚焦在4到7層的攻擊類型,在測試中,我們并沒有看到太多基于一些3層以下的入侵檢測和阻斷手段。不過,在后來我們采用Nessus端口掃描工具進(jìn)行變形逃逸測試時(shí),發(fā)現(xiàn)這款產(chǎn)品對(duì)于SynScan等掃描入侵手段能夠進(jìn)行檢測,但是需要配合防火墻來更徹底地杜絕這類攻擊。由此證實(shí)了我們的推斷,單一的 SynScan或者Flood攻擊對(duì)于系統(tǒng)是沒有攻擊性的,并且由于這類攻擊非常簡單,不需要IPS進(jìn)行復(fù)雜的協(xié)議分析,只需要在偵測出攻擊后,通過和防火墻聯(lián)動(dòng),由防火墻就能進(jìn)行處理。

            通過對(duì)IntruShield 2600進(jìn)行測試,我們發(fā)現(xiàn):IPS是對(duì)IDS的增強(qiáng)和延伸,能夠彌補(bǔ)和防火墻之間的空白,而不是簡單地對(duì)防火墻和IDS進(jìn)行融合的結(jié)果。

            IntruShield 2600

            產(chǎn)品亮點(diǎn)
            ● 在1U厚度實(shí)現(xiàn)2個(gè)千兆光口,6個(gè)銅纜百兆端口的入侵阻斷系統(tǒng),所有端口可以靈活配置,完全邏輯隔離。
            ● 能夠快速進(jìn)行安裝部署,支持分布式部署管理。
            ● 完善的檢測引擎,沒有漏報(bào)一個(gè)測試樣例中的攻擊。
            ● 高性能的吞吐能力,能夠在高達(dá)600Mbps的HTTP背景流下正常工作。
            (e129)

            posted @ 2006-02-09 16:50 inwind 閱讀(414) | 評(píng)論 (0)編輯 收藏

            CNET科技資訊網(wǎng)2月8日國際報(bào)道 Jason Fried,37Signals 公司的總裁是一位很棒的軟件企業(yè)家。但他不想用傳統(tǒng)模式去開辦一間軟件公司。沒有試圖擠進(jìn)復(fù)雜的,價(jià)格昂貴的產(chǎn)品業(yè)務(wù)市場,F(xiàn)ried 和他的同志選擇了相對(duì)比較偏門的軟件:主機(jī)式個(gè)人組織器及項(xiàng)目管理應(yīng)用。 對(duì)于Fried 而言,那種老式的依靠客戶拿出大把美金維持運(yùn)營的模式已經(jīng)作古。

            Fried 說:"我認(rèn)為企業(yè)軟件的理念已經(jīng)死亡。企業(yè)軟件是一個(gè)骯臟的世界-大而無用的東西從來就不奏效,永遠(yuǎn)沒法按時(shí)為客戶就位,并且,它們太昂貴了。" 雖然發(fā)展速度比以往幾年有所放緩,企業(yè)軟件市場仍然是一個(gè)價(jià)值數(shù)十億美金的行業(yè),它還在增長。一些投資者和企業(yè)家們說,不斷變化的這個(gè)行業(yè)使得它很難突入進(jìn)去。

            Onset Ventures公司的Mark Hildenbrand說:"投資者們對(duì)企業(yè)軟件的興奮度正在降低。毫無疑問,它是一個(gè)具有挑戰(zhàn)性的區(qū)域。"

            與此相反,過去兩年,小型公司正在大量的出現(xiàn),它們開發(fā)基于網(wǎng)絡(luò)的應(yīng)用,或者開發(fā)開源軟件,人們有時(shí)稱它們?yōu)閃eb2.0公司。 它們中的許多能夠依靠相對(duì)小規(guī)模的前沿投資獲得騰飛,而不是過去那種上億美元的大手筆。 例如,37Signals 的商業(yè)計(jì)劃就是構(gòu)建簡單的主機(jī)式應(yīng)用,按月向小企業(yè)或者個(gè)人收取注冊(cè)費(fèi)用。 自從推出它的第一個(gè)服務(wù)的兩年多以來,這家自籌資金起步的公司已經(jīng)獲得了成百上千名客戶,它沒有債務(wù)。這家公司還成功的資助了開源Web 開發(fā)項(xiàng)目Ruby on Rails.


            Fried 說:"你可以利用互聯(lián)網(wǎng)建立很棒的小巧產(chǎn)品,你可以獲得1 百萬或者50萬用戶。"
            企業(yè)家和投資者們說,一系列技術(shù)的變化令非常專門的產(chǎn)品生存下來變?yōu)橐环N可能。大多數(shù)的變革是那些正在不斷發(fā)展普及的主機(jī)式應(yīng)用,或者服務(wù)式的軟件。
             
            網(wǎng)絡(luò)字處理器公司Upstartle 的創(chuàng)始人們,最開始考慮開發(fā)針對(duì)企業(yè)內(nèi)部網(wǎng)的協(xié)同與文件管理軟件,但他們最終放棄了這個(gè)主意,而決定將注意力集中在互聯(lián)網(wǎng)上的字處理器上。


            Writely 公司的創(chuàng)始人之一的Claudia Carpenter 說:"過去,你不得不做一種巨大的事情-象套件一類的東西。現(xiàn)在,似乎你能夠做一些輕量級(jí)的東西。" 由于互聯(lián)網(wǎng)已經(jīng)成為一種應(yīng)用平臺(tái),Writely 能夠?qū)⑺淖痔幚砥鞣?wù)與其它網(wǎng)絡(luò)服務(wù)連接起來,比如網(wǎng)絡(luò)日志或者照片分享網(wǎng)站。現(xiàn)在,很多網(wǎng)站不斷的公布它們的應(yīng)用程序接口(API ),這讓用戶及開發(fā)者們能夠在不同的主機(jī)式服務(wù)之間分享信息。


            另外一個(gè)重要的技術(shù)進(jìn)步就是AJAX(異步JavaScript+XML)的興起。這是一種創(chuàng)建交互式圖形用戶界面(GUI )及網(wǎng)頁的開發(fā)技術(shù),它能夠自動(dòng)的刷新網(wǎng)絡(luò)服務(wù)器上的數(shù)據(jù)。利用AJAX,程序員門能夠開發(fā)出桌面應(yīng)用程序的主機(jī)式版本,比如文件和照片發(fā)布,AJAX可以給用戶提供和在PC上類似的用戶體驗(yàn)。


            除了將注意力集中在專門的產(chǎn)品上,和以往相比,這些新創(chuàng)公司能夠用很少的資金實(shí)現(xiàn)騰飛。
            自由提供的開源軟件正在增長,功能強(qiáng)大的硬件服務(wù)器價(jià)格變得越來越低。而在5 年之前,新創(chuàng)業(yè)的公司可能需要花費(fèi)成千上萬美元去購買這些硬件設(shè)備。


            運(yùn)營成本也變得相當(dāng)?shù)牡汀R?7Signals 為例,這家公司沒有花錢在市場營銷上,他們采用了網(wǎng)上的營銷手段,比如網(wǎng)絡(luò)日志的口碑宣傳。這家7 人公司沒有銷售人員。


            紐約天使投資公司的董事David Rose說:"我們看到的Web2.0是一場軟件公司發(fā)生深刻變革的運(yùn)動(dòng)。" Rose表示,現(xiàn)在的網(wǎng)絡(luò)企業(yè)家可以在短短的一年時(shí)間內(nèi),僅僅用50萬美元的資金即可實(shí)現(xiàn)從概念到功能性產(chǎn)品的轉(zhuǎn)變。他說:"要是放在過去,得花數(shù)年時(shí)間,上百萬美元,以及多次的計(jì)劃修改才會(huì)等到第一個(gè)產(chǎn)品出籠。"


            RDF 風(fēng)險(xiǎn)基金的主任Richard Forman認(rèn)為,基于網(wǎng)絡(luò)的軟件模式可以同時(shí)輻射個(gè)人與企業(yè)兩個(gè)市場。 他說:"Web 2.0 的迷人之處在于它是一種雙管齊下的模式。一方面,你擁有用戶提交的內(nèi)容,這對(duì)網(wǎng)絡(luò)來講是一種巨大的機(jī)會(huì),另外一方面,你擁有針對(duì)協(xié)同性工作以及應(yīng)用服務(wù)提供商的網(wǎng)絡(luò)服務(wù),它將給企業(yè)世界產(chǎn)生真實(shí)的影響。"


            現(xiàn)在,Salesforce.com,NetSuite和SAP 都在鼓吹,企業(yè)客戶正希望放棄那些大型的軟件項(xiàng)目,而選用主機(jī)式服務(wù)。即使微軟這個(gè)軟件世界的君王也已經(jīng)發(fā)出過類似的感言。


            進(jìn)入Web 2.0 世界的低門檻使得那些新奇主意可以輕易的轉(zhuǎn)化為新創(chuàng)企業(yè)。一些分析師說,也許這個(gè)門檻太低了。 許多的Web 2.0 網(wǎng)絡(luò)應(yīng)用可以由幾個(gè)人,相對(duì)較少的創(chuàng)業(yè)投資和時(shí)間來完成。但是,與此同時(shí),投資者們認(rèn)為,這些服務(wù)很容易被復(fù)制。另外,一些Web 2.0 公司的業(yè)務(wù)模式?jīng)]有經(jīng)過完全測試,比如Writely 就仍處于測試當(dāng)中,公司仍然在評(píng)估幾種不同的收入模式,比如客戶注冊(cè)和廣告模式。(編輯:孫瑩)


            Small is beautiful for Web 2.0 start-ups

             

             

             

             

             

             

             

             

             

            posted @ 2006-02-09 16:46 inwind 閱讀(429) | 評(píng)論 (0)編輯 收藏

            2005年12月23日

            本文列出了當(dāng)今計(jì)算機(jī)軟件開發(fā)和應(yīng)用領(lǐng)域最重要十種關(guān)鍵技術(shù)排名,如果你想保證你現(xiàn)在以及未來的幾年不失業(yè),那么你最好跟上這些技術(shù)的發(fā)展。雖然你不必對(duì)這十種技術(shù)樣樣精通,但至少應(yīng)該對(duì)它們非常熟悉。

            一、XML
                在十種技術(shù)中,最重要的一種技術(shù)我想應(yīng)該非XML莫屬。這里不僅僅指XML規(guī)范本身,還包括一系列有關(guān)的基于XML的語言:主要有XHTML,XSLT,XSL,DTDs,XML Schema(XSD),XPath,XQuery和SOAP。如果你現(xiàn)在還對(duì)XML一無所知,那么趕快狂補(bǔ)吧。XML是包含類似于HTML標(biāo)簽的一個(gè)文本文件,在這個(gè)文件中定義了一個(gè)樹型結(jié)構(gòu)來描述它所保存的數(shù)據(jù)。
                XML最大的優(yōu)點(diǎn)是你既可以在這個(gè)文本文件中存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),也可以在其中存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)——也就是說,它能包含和描述"粗糙的"文檔數(shù)據(jù),就象它描述"規(guī)則的"表格數(shù)據(jù)一樣。
            • XHTML是目前編寫HTML的首選方法;因?yàn)閄HTML本身就是格式良好的XML,與通常畸形的HTML文檔相比, XHTML格式文檔更容易處理。
            • XSLT和XSL是對(duì)XML文檔進(jìn)行轉(zhuǎn)換的語言。它們可以將XML文檔轉(zhuǎn)換成各種格式,比如另一個(gè)文本文件、PDF文件、HTML文件、逗號(hào)分割的文件,或者轉(zhuǎn)換成其它的XML文檔。
            • DTDs 和XML Schema用來描述XML文件所包含的數(shù)據(jù)內(nèi)容的類型,使你不用編寫定制的代碼就能對(duì)XML文檔的內(nèi)容進(jìn)行"有效性"檢查,使內(nèi)容強(qiáng)行遵守給出的規(guī)則。
            • XPath 和 XQuery是查詢語言,用它們可以從XML文檔中吸取單個(gè)的數(shù)據(jù)項(xiàng)或者數(shù)據(jù)項(xiàng)列表。XQuery的功能特別強(qiáng)大,因?yàn)樗鼘?duì)XPath查詢進(jìn)行了擴(kuò)展。實(shí)際上,XQuery和XML的關(guān)系就像SQL之于關(guān)系數(shù)據(jù)庫一樣。
            • SOAP是Web services間進(jìn)行通訊的標(biāo)準(zhǔn)協(xié)議。你不必知道SOAP協(xié)議的所有細(xì)節(jié),但是你應(yīng)該熟悉其常用規(guī)則及其工作原理,這樣你才能使用它。
            二、Web Services
                Web服務(wù)是XML流行后的直接產(chǎn)物。因?yàn)閄ML可以描述數(shù)據(jù)和對(duì)象,XML大綱可以保證XML文檔數(shù)據(jù)的有效性,因?yàn)閄ML的基于文本的規(guī)范,因而XML文檔極其適合于作為一種跨平臺(tái)通訊標(biāo)準(zhǔn)的基本格式。如果你還沒有接觸過Web服務(wù),那么過不了多久你肯定會(huì)碰到它,所以必須熟練掌握Web服務(wù),最好是精通它,因?yàn)樗瞧駷橹箲?yīng)用程序間跨不同種類機(jī)器、語言、平臺(tái)和位置通訊的最簡單的一種方式。不管你需不需要它,Web服務(wù)都會(huì)是將來互用性的主要趨勢。
                XML工作組的John Bosak曾說過:"XML使得Java有事可做",那么,我們也可以說,Web服務(wù)使得所有語言都有事可做。Web服務(wù)讓運(yùn)行在大型機(jī)上的COBOL應(yīng)用程序與運(yùn)行在手持設(shè)備上的應(yīng)用程序相互溝通;讓Java小應(yīng)用與.NET服務(wù)器相互通訊,讓桌面應(yīng)用與Web服務(wù)器進(jìn)行無縫交互,不但為商業(yè)數(shù)據(jù)處理,同時(shí)也為商業(yè)功能提供了方便的實(shí)現(xiàn)——并且這種實(shí)現(xiàn)與語言、平臺(tái)、和位置無關(guān)。

            三、面向?qū)ο缶幊?/B>
                許多程序員仍然認(rèn)為OOP乃技術(shù)的象牙之塔,但是細(xì)細(xì)想一下過去十年里在面向?qū)ο箢I(lǐng)域里占據(jù)過統(tǒng)治地位的開發(fā)語言之后,你就不會(huì)這么認(rèn)為了,OOP理念從Smalltalk開始,然后蔓延到C++和Pascal(Delphi),到Java成為真正的主流,幾年之后,VB.NET 和 C#的出現(xiàn)可以說是OOP發(fā)展到了登峰造極的地步。雖然使用這些語言不必了解OOP的概念,但如果你缺乏一些OOP的基本知識(shí)和方法,我想你很難在逐漸疲軟的就業(yè)市場中找到工作。

            四、Java, C++, C#, VB.NET
                如果你熱衷于技術(shù),并且熱愛編程,那么我想你應(yīng)該輕松玩轉(zhuǎn)這些高級(jí)語言,我說的玩轉(zhuǎn)并不一定要你成為超級(jí)編程高手。而是能看懂用這些語言編寫的代碼即可。如果你還有精力用它們編碼那就更好了。其實(shí)這種機(jī)會(huì)甚少。但是看代碼的機(jī)會(huì)很多,學(xué)習(xí)編程的最有效的一種方式就是看源代碼——浩如煙海的源代碼中很多都不是用你所鐘愛的開發(fā)語言編寫的。
                在過去的幾年里,各個(gè)語言功能的發(fā)展基本上都差不多。現(xiàn)在你完全可以用VB.NET來寫Windows服務(wù)、Web應(yīng)用或者命令行程序。即使你只用其中的一種語言寫程序。我認(rèn)為也完全有必要學(xué)習(xí)另外一種語言,使自己能閱讀和理解它們現(xiàn)有的例子代碼,并且能將一種語言編寫的代碼轉(zhuǎn)換成你首選的編程語言代碼。這里列出的四種語言可謂是一個(gè)強(qiáng)大的開發(fā)語言工具箱,如果你掌握了它們,毫無疑問你一定是一個(gè)眾人仰慕的高手。這里我要聲明一下:那就是我并沒有要忽略和排除其它的高級(jí)語言,如:FORTRAN、COBOL、APL、ADA、Perl和Lisp等等,根據(jù)你所從事的領(lǐng)域不同,應(yīng)該選擇適合的語言和工具。

            五、JavaScript
                Java 和JavaScript兩者的名字盡管很類似,但它們之間并沒有什么關(guān)系。為什么一種腳本語言會(huì)如此重要,以至于將它列入十種關(guān)鍵技術(shù)之一呢?仔細(xì)想一下就知道了,目前所有主流的瀏覽器都使用JavaScript。如果你要編寫Web應(yīng)用程序,那么JavaScript不可或缺。此外,JavaScript還能作為一種服務(wù)器端的腳本語言,如將它嵌入在ASP、ASP.NET中,或者嵌入XSLT來擴(kuò)展功能。目前JavaScript在Mozilla/Netscape中是激活基于XUL界面的首選語言,它派生出了ActionScript,成為Flash MX應(yīng)用的編程語言。還有就是JavaScript極有可能成為未來新設(shè)備的腳本語言以及主流應(yīng)用的宏語言。
                相比之下,VBScript雖然在微軟的產(chǎn)品中得到很好的支持,但從長遠(yuǎn)來看,沒有跡象表明它會(huì)有美好前途。微軟自己都趨向于用JavaScript(或者用由JavaScript派生的JScript)來編寫其客戶端腳本代碼。因此,如果你要選擇腳本語言,非JavaScript莫屬。

            六、Regular Expressions
                從所周知,關(guān)系數(shù)據(jù)庫的查詢使用SQL,搜索XML文檔用XPath 和XQuery,而正則表達(dá)式則用來搜索純文本。例如,你可以用一個(gè)命令來查找或刪除HTML格式文件中的注釋內(nèi)容。大家都用過"IndexOf"、"InStr"以及"Like"這些內(nèi)建在JavaScript或VB中的文本搜索函數(shù),這些函數(shù)雖然很容易使用,但是它們的功能卻無法與正則表達(dá)式同日而語——現(xiàn)在每一種主流的開發(fā)語言都提供對(duì)正則表達(dá)式的存取。盡管有人認(rèn)為正則表達(dá)式本身的讀寫艱澀難懂,但畢竟它的功能強(qiáng)大,使用它的領(lǐng)域也越來越多。

            七、Design Patterns
                就像OOP通過創(chuàng)建和分類對(duì)象來簡化編程一樣,設(shè)計(jì)模式將普通的對(duì)象交互分類成指定的模型,這是一個(gè)從一般到具體的過程。OOP的成分使用得越多,設(shè)計(jì)模式就顯得越有用武之地。所以你必須理解它們,跟上其總體理論的發(fā)展。

            八、Flash MX
                當(dāng)你需要比HTML和CSS所能提供的更多的客戶端圖形和編程能力時(shí),F(xiàn)lash是最佳選擇。在Flash中編程比用Java小應(yīng)用或者.NET代碼來得快得多,也容易得多。
                在最新版本中(MX),F(xiàn)lash不僅可以畫圖和進(jìn)行動(dòng)畫打包,它還是個(gè)高度的可編程應(yīng)用環(huán)境。具備強(qiáng)大的與SOAP Web服務(wù)溝通的能力,可以調(diào)用運(yùn)行在遠(yuǎn)端服務(wù)器上的ColdFusion、Java或.NET代碼。可以說Flash幾乎無處不在,包括手持設(shè)備、置頂盒、甚至是新的平板電腦,你到處都可以見到它的身影,所以使用它實(shí)際上可以擴(kuò)展和延伸你的應(yīng)用程序使用領(lǐng)域。

            九、Linux/Windows
                這是當(dāng)今PCs機(jī)操作系統(tǒng)的兩大陣容,如果你想在計(jì)算機(jī)行業(yè)里混,就一定要熟悉它們。對(duì)于Linux,最好能自己安裝,配置,下載它的圖形用戶界面以及一些應(yīng)用程序。自己安裝Apache并會(huì)編寫Web應(yīng)用程序。要清醒地認(rèn)識(shí)到這個(gè)世界除了Windows之外,還有Linux的存在。并且這種局面將會(huì)長期存在。反過來,如果你是一個(gè)死忠的Linux開發(fā)者,不要再繼續(xù)對(duì)Windows的憎惡,要相互學(xué)習(xí),取長補(bǔ)短,看看Windows有什么好的東東可以采納。記住Windows仍然是桌面之王。
                誰也說不準(zhǔn)你們公司什么時(shí)候會(huì)決定從Linux轉(zhuǎn)向Windows,或者從Windows轉(zhuǎn)向Linux。誰也說不準(zhǔn)什么時(shí)候你會(huì)跳槽跑到另外一個(gè)使用不同平臺(tái)的公司上班——或者即便不跳槽,也有可能在不同平臺(tái)上開始另外一個(gè)殺手級(jí)項(xiàng)目——所以最好在每個(gè)平臺(tái)上都積累一些經(jīng)驗(yàn),而不要在一棵樹上吊死。

            十、SQL
                盡管SQL在當(dāng)今眾多的技術(shù)中已不是什么新東西,而且在未來的十年里它的作用很有可能被削弱,甚至整個(gè)被淘汰,但它仍然是一種基本技能——?jiǎng)e看它是一種基本技能,至今仍有許多開發(fā)人員不懂什么是SQL或?qū)λ私獠欢唷2灰竿趫D形用戶界面的SQL構(gòu)造器會(huì)幫你的忙,還是自己親手寫SQL查詢吧,確定你掌握了SQL的基本語法。現(xiàn)在理解了SQL,不僅對(duì)以后學(xué)習(xí)XQuery有所裨益,而且可以使你很快找到簡化或改進(jìn)當(dāng)前開發(fā)項(xiàng)目的途徑。

            尾聲:培養(yǎng)對(duì)技術(shù)的好奇心
                其實(shí),不管技術(shù)的發(fā)展趨勢如何,每個(gè)人最重要的一個(gè)技能是好奇心。敢于面對(duì)挑戰(zhàn),在你目前或未來的工作中,新語言或新技術(shù)可能很重要,也可能不怎么重要,你所學(xué)習(xí)的東西并不一定非要針對(duì)你的工作。不要怕失敗,任何新的技術(shù)對(duì)初學(xué)者來說都是困難的。大多數(shù)的失敗都可以歸咎于本身急功近利,希望速成。俗話說——千里之行,始于足下,應(yīng)該腳踏實(shí)地,一步一個(gè)腳印地往前走。不要讓時(shí)間來左右你行動(dòng),而是要利用時(shí)間來關(guān)注、研究、測試新的開發(fā)技術(shù)和工具。
                本文的用意不在于要讓你成為任何一種技術(shù)的專家——只是想借VCKBAE這塊寶地拋磚引玉,和大家暢談現(xiàn)在和未來哪些技術(shù)是我們要密切關(guān)注的,討論今后IT行業(yè)就業(yè)的知識(shí)結(jié)構(gòu),思考自己今后應(yīng)該在哪些方面需要多花些功夫。因?yàn)槊恳粋€(gè)人的情況各有不同,應(yīng)該根據(jù)具體情況來構(gòu)筑自己的知識(shí)層面。但有一點(diǎn)無庸置疑——那就是保持良好的好奇心始終會(huì)使你充實(shí)和睿智。

            posted @ 2005-12-23 17:13 inwind 閱讀(343) | 評(píng)論 (0)編輯 收藏

            2005年12月22日

            這一天,大夫伍舉進(jìn)見楚王。楚莊王手中端著酒杯,口中嚼著鹿肉,醉醺醺地在觀賞歌舞。他瞇著眼睛問道:"大夫來此,是想喝酒呢,還是要看歌舞?"伍舉話中有話地說:"有人讓我猜一個(gè)謎語,我怎么也猜不出,特此來向您請(qǐng)教。"楚莊王一面喝酒,一邊問:"什么謎語,這么難猜?你說說。"伍舉說:"謎語是‘楚京有大鳥,棲上在朝堂,歷時(shí)三年整,不鳴亦不翔。令人好難解,到底為哪樁?'您請(qǐng)猜猜,不鳴也不翔。這究竟是只什么鳥?”楚莊王聽了,心中明白伍舉的意思,笑著說: "我猜著了。它可不是只普通的烏。這只鳥啊,三年不飛,一飛沖天;三年不鳴,一鳴驚人。你等著瞧吧。"伍舉明白了楚莊王的意思,便高興地出退了來。

            posted @ 2005-12-22 13:43 inwind 閱讀(349) | 評(píng)論 (0)編輯 收藏

            2005年12月8日

            讀書讀到這個(gè)份上了,如果只是做一個(gè)coder,太虧了,也不一定有小本做得好。

            但是問題在于,只作科研,paper,對(duì)于以后找工作呢?

            實(shí)驗(yàn)室?guī)孜划厴I(yè)的碩士今年找工作,就凸現(xiàn)了這個(gè)問題,而相識(shí)的幾位科大的碩博,找到的工作都非常棒。他們除了有比較出色的科研成績之外,另外一個(gè)相同之處,就是都對(duì)一項(xiàng)或者幾項(xiàng)技術(shù)非常非常的熟練。說到底,資本家雇用你,是因?yàn)槟隳軐?shí)際的為他做事,能為他創(chuàng)造實(shí)際的價(jià)值,而不是需要只能做文章的理論者——雖然也需要,但是非常非常的少,而且做為理論,我們又怎么做得過數(shù)學(xué)系出身的人呢?

            考慮一下需要研究的技術(shù)
            c/c++,java ,vc, c#,
            linux系統(tǒng)和網(wǎng)絡(luò)編程,驅(qū)動(dòng)程序編程
            windows的系統(tǒng)和驅(qū)動(dòng)程序編程

            還有,看到某位大蝦說得,感覺挺有道理,應(yīng)該找個(gè)時(shí)間,研究一下腳本語言的說

            在近一年以內(nèi),要做什么呢?
            linux內(nèi)核,在放假前應(yīng)該可以看完了,然后可以參與社區(qū)的開發(fā)研究——限于條件,暫時(shí)可以不用linux的機(jī)器,不要緊,關(guān)鍵在于理解其內(nèi)核運(yùn)行的機(jī)制,算法等
            然后是c++,一月份之前需要徹底復(fù)習(xí)一下,然后,就需要開始vc內(nèi)幕四版的學(xué)習(xí),加上算法的學(xué)習(xí)——算法i-iv,然后是art of programming。對(duì)于c++的深入研修也是必要的,primer加上那兩本特價(jià)書。

            除了art of programing,其他應(yīng)該在三月份以內(nèi)搞定。

            oh yeah~~~~~

            posted @ 2005-12-08 22:09 inwind 閱讀(402) | 評(píng)論 (0)編輯 收藏

            2005年12月7日

            剛剛注冊(cè)了這個(gè)blog,熱情足啊,一口氣轉(zhuǎn)載了那么多文章,沒有幾篇仔細(xì)看的,呵呵:)
            不過,先放著,下班之后就可以看了。
            還是先把本職工作做一下吧

            posted @ 2005-12-07 13:42 inwind 閱讀(237) | 評(píng)論 (0)編輯 收藏

            狠狠精品久久久无码中文字幕 | 亚洲午夜久久影院| 久久国产午夜精品一区二区三区| 久久久久免费视频| 99国产欧美精品久久久蜜芽| 久久本道久久综合伊人| 久久亚洲精精品中文字幕| 久久99精品免费一区二区| 久久超乳爆乳中文字幕| 亚洲午夜精品久久久久久浪潮| 久久久国产精品亚洲一区| 亚洲欧美另类日本久久国产真实乱对白| 无码精品久久久久久人妻中字| 国产激情久久久久影院| 久久精品人成免费| 偷偷做久久久久网站| 久久久久一本毛久久久| 久久综合综合久久97色| 久久精品亚洲中文字幕无码麻豆| 伊人久久大香线蕉精品不卡| 久久国产综合精品五月天| 蜜桃麻豆www久久| 97久久超碰国产精品2021| 一本久久知道综合久久| 久久亚洲中文字幕精品一区| 久久亚洲天堂| 色综合久久天天综线观看| 精品久久久久久无码人妻热| 人人狠狠综合久久亚洲婷婷| 精品永久久福利一区二区| 亚洲欧美日韩中文久久| 亚洲中文字幕无码久久综合网 | 久久久亚洲AV波多野结衣| 亚洲成av人片不卡无码久久| 久久精品中文字幕一区| 久久无码精品一区二区三区| 国内精品伊人久久久久网站| 国内精品久久久久久久久| 久久99精品国产麻豆婷婷| 国产亚洲色婷婷久久99精品91| 99久久亚洲综合精品成人|