[蘋果官方的MacOSX簡介(PDF)]
如果你曾在 140.112.1.6 這個 BBS 裡面的蘋果討論區裡讀過,就會知道我對於 MacOS X 的態度與想法是怎麼樣。基本上我覺得的確還有很多使用界面的不完美,但是他是很有淺力的。 MacOSX 最好的部份就是他的組織結構,一個單一的核心設計(影響到運作表現),一個強韌的 Unix 相容體,與一個物件導向的程式設計環境。的確,目前他並沒有比 MacOS 9 來的快,缺少應用軟體也是一大傷點,但是,就像我們的大老闆史帝夫說的(*_*) ,這是一個接下來十五年的作業系統。我們應該問的是他的淺力並以此設定對他的期望。 Unix 使用著愛死了 MacOS X 的 Unix 的部份,相反的,蘋果的使用者比較喜歡他麥金塔的部份。不過我覺得重要的問題是,下一個是什麼?你覺得十五年後的電腦是怎樣?你覺得四年後的電腦會跟現在一樣嗎?如果不是的話,那我們應該怎麼辦?我想這是一個重要的問題,當你在評估一個新的作業系統。如果你喜歡他,我建議你看看以下的討論,有建設性 ,而不具攻擊性。
我們現在可以從很多不同的角度來討論 Mac OSX 。商用,或私人用?現有瑕疵?系統結構?我想我會先從現有瑕疵,再到使用界面及系統設計,最後將未來的期望留在甕底,這樣比較有邏輯不是嗎?為了避免顯得冗長,我將先給你這第一個部份,接下來的以後再來。當然任何的討論都是歡迎的。
現在有許多的評論圍繞在 MacOS X ,除了一些應該將會被改進修好的臭蟲 (kernel panics, UI bugs, API Bugs) ,一些還沒有支援的功能如 DVD 播放, Mail 的臭蟲,還有驅動程式的支援以外,我想最重要的問題是“速度“。應用軟提開啟的緩慢, QuickTime 跑的慢, iTune 的視覺畫面緩慢等都讓我們想到一個問題:“ MacOS X 是不是被設計成這麼慢的?“
答案是:是與不是。如果沒有好的設計,應用軟體會跑的慢,許多的慢都是由不好的程式設計造成的。因為MacOSX所使用的事件模型(Event Model)已被更改,任何炭化的應用軟體應該將原本使用的事件模型更改成有比較好表現 (better performannce) 及省資源 (resourece-saving) 的新事件模型。簡單的說,炭化的應用軟體是可以在 MacOS X 裡執行,但是會不斷的吃掉你CPU等待下一個事件的時間 (loop waiting for next event) 。一個不好的程式設計可以用掉百分之八十的cpu時間但什麼都沒有做(而且其實當他真的有在忙著做事情的事後所佔據的 CPU 反而少)。 另一個重要的事情是因為多工的關係,單一的應用軟體會執行的比較慢,除非他使用 Mach 的 fix time RealTime threading policy (固定時間的及時執行緒標準)。 以傳統的 MacOS 來說最前面的應用軟體總是無限制的擁有他所需要的CPU。
基本上 MacOSX 有許多不同的執行緒標準(threading policy) , fix time 或 preemptive 例如 Mac thred/Task, 或是 POSIX 的執行緒模式。 一個及時的preemptive 模式容許較少的 task switch latency ,但是會將應用軟體的反應速度降低很多。 及時的工作搭配定時的執行緒模式,將會使用固定百分比的 CPU 使用時間但是要有足夠的權限。 不過因為有較高權限的執行緒可能會蓋過有較少的權限的的執行緒,所以所謂的定時並不是保證而是對 CPU 的“要求“。 反之,POSIX 與及時模式是有點相衝的,而且在 MacOS X /達爾文裡還不是完善。(這也許是為什麼大覺得緩慢的最重要因素之一。 MacOS X 的核心是很快的,試試看幾個 OpenGL 的描繪就知道了,可是實際上人們也許並不在乎 Excel 試算表使用了三秒或二點三秒,但是會感覺拖延如果界面的元素沒有馬上反應,所以最常被使用的系統最佳化就是給予視窗比較高的優先權,不過這個方法在 MacOS X 裡辦不到)我不會再更深入的討論執行緒的事情,但是重點是 MacOS X 不完善的 POSIX 執行緒搭配多工有兩個問題:( 一)應用軟體會跑的比較慢,而且所使用到的CPU時間大概還沒有在MacOS9底下多; (二)因為執行緒並沒有被處理的好所以程式間並無法高效率的“合作“。 不過這個問題應該將會在下一個 Darwin/MacOS X 核心的更新時改進。 (可以看看 Darwin 的問題 (bug list) 以及追蹤系統,解決方案在那裡,等著被確認) 還有我必須提出的一點是雖然一個單一的應用軟體跑的比較慢, 但你總是可以在各個應用軟體之間做轉換,沒有任何一個應用軟體可以像劫機一班的完全控制住你的電腦,你甚至可以安全的將一個應用軟體硬性 停止工作( kill ) 且在大部分的狀況之下不會影響到其他的別的應用軟體。這是一個記憶體保護(memory protection) 的一大好處-蘋果的使用者終於在新的一世紀擁有他。.
[蘋果官方的MacOSX簡介(PDF)]
[回主頁] [老鼠的前言] [中文第一頁] [中文第二頁] [原文 Enlish]
JackC之MacOSX深度探討
[回主頁] [回教學索引] [老鼠的前言] [中文第一頁] [中文第二頁] [原文 Enlish]
[蘋果官方的MacOSX簡介(PDF)]
但是還有另一個大問題跟 MacOS X 的速度有關,Quartz 2D引擎,基本上是沒有被最佳化的。我曾經看過許多對 MacOS X 的誤解:“當我在做其他的事情的時候 MacOS X 並不能有效作好工作緒而避過 iTune 的跳針,“或者“當我在瀏覽網頁的時候一個真正的多工系統怎麼會吃掉我百 分之三十的 CPU ?“等等。使用者也許不關心真正技術上的細節,但是錯誤的想像以及誤解會引起不必要的恐懼以及批評。從以上來看,你可以了解的確有許多執行緒上的問題,但是並不是那麼的明顯。事實上,使用 iTune 在背景燒 mp3 並同時在網路上瀏覽及交換大量檔案時,你已經可以感覺到它處理多工的能力已經比 MacOS 9 好上許多,但是許多人也許還覺得好奇或不滿足,為什麼 iTune 跟 QuickTime 跑的慢?答案就在 Quartz 的引擎。 Quartz 引擎並沒有在 Carbon 或 Cocoa 的環境裡被加速 (最佳化)。為什麼?兩度空間的顯示單位在繪圖卡只能在緩衝區 (frame buffer) 裡顯示“bitmap" 的圖形,或是使用簡單的 cache 增加視窗拖曳,選單,或捲頁的速度。但另一方面來說, Quratz 讓螢幕上的每個東西都有獨一的層次,並使用 CPU 的能力以層次的重量 (layer weighting) 安排螢幕上的畫面。 Quartz 之所以不能在現有的二度空間單位被加速是因為他不能做 texture bindings 的工作(將不同的層次結構材質混合以組織圖形,例如你可以有一個材質叫“地“另一個叫“暗玻璃“,將這兩個材質混在一起以顯示從穿過暗玻璃所看到的地),所以雖然他可以做非常好的透明化以及陰影,卻使用了極多的 CPU 。這也就是為什麼我們當我們一邊在做其他的事情的時候 iTune 會跳針。還有 QuickTime 引擎是直接被畫在 MacOS9 裡(視窗管理將螢幕緩衝區的一部份交給 QuickTime 引擎,所以電影可以在不需要呼叫視窗管理來改變螢幕化畫面而不斷的播放電影,所以電影播放可以比較快速不間斷),但在 MacOSX 裡卻不是如此。這就是為什麼你可以放個有透明度的視窗在 QuirkcTime 的電影前面,電影可以繼續的被播放。我必須說在將來還是有可能重寫 Quartz,讓他與三度空間單位或甚至與新的可程式化 (prgrammable) GeForce3 引擎加速。這樣一來就可以戲劇化的減少 CPU 的工作並有更好的應用軟體反應表現。
另一個大量使用 CPU 的是 Quartz 的 PDF本質。 Quartz ,不像其他的顯示系統,使用了PDF最為基本的格式,也就是說你在螢幕上看到的每一個東西都是在視窗緩衝區裡的 PDF 。 Quartz 引擎會將圖形從“緩衝區“裡繪出。 PDF 是好的,尤其是他 Anti-Alias 的能力讓螢幕上的圖形與文字鮮明且逼真(當然,有一些 clean type font 引擎對於像我一樣的 LCD 的使用者更好。)還有更正確的畫面, postscrpt 的內容尤其如此。另一個好處是解析度的獨立性,在 1600x1200 的解析度下使用任何的系統對許多人來說是會很困難的,界面的像素太小了。雖然 Aqua 界面在大部分的地方仍然使用的 bitmap 為基礎,但是 Quartz 的能力的確為未來獨立解析度螢幕帶來光明的未來。不過每個東西總是有代價的,我門所付的代價,又一次,是速度,為一個更美又視覺享受的畫面。他也不能被加速,因為目前並沒有含有二度空先單位的繪圖卡可以做向量計算。MacOS X 最常用的辨護是 QuickDraw 當初在其跑階段的時候也是緩慢的,經過時間的琢磨,更快速的繪圖卡終於可以 將QuickDraw處理的相當好。MacOSX跟Quartz也將會是如此嗎?這個論點只能在一個問題之下成立:“蘋果能承受的了嗎?“雖然他美麗高雅好用又穩定,可是一個緩慢又無法被加速的使用界面是不被大眾所歡迎的。QuickDraw 花了許多年的時間,那Quartz呢?未來對我來說是很難講的,但是我想 Quartz 應該是有能力可以存活下去的。MS (微軟)也是在發展 GDI+ 一個向量加 bitmap 相混的繪圖引擎(不過慢的要死),所以將會有硬體的廠商將願意為這個“新“市場發展新的硬體。
第三個 MacOS X 緩慢的問題/起因是機動性(dynamic) 的l取用 Library/資源。 MacOS X 使用非常複雜但卻又很有彈性的方式管理 Libraries/資源。當使用者們開啟一個應用程式的時候,系統會搜尋所有的地方已找尋最新的 "framework (組織各種視窗界面架構的東西)" 以及取用適當的資源組已滿足使用者的設定。舉個例來說,當你開啟 MayApp.app 這個使用 A.0.0 版的foo.framwork 以及 bar.framwork 的應用程式,系統將會搜尋 /System/Library/Frameworks , /Library/Frameworks , ~/Library/Frameworks 以及 /Network/Library/Frameworks 來決定是否有更新的版本的存在。 如果有 A.1.0 的 foo.framework 存在於/Library/Frameworks 還有B.0.0 版存在於~/Library/Frameworks (註:雖然只多了一個~,這兩個是完全不同的路徑), 系統將會取用 A.1.0 版而不會取用 B.0.0 版因為相容性的問題,這樣一來應用軟體總是會使用最新又相容的版本。 另一個容易引起注意的是語言組的取用。 每一個應用軟體都有非常多的語言組包裹,而系統會取用按照使用者在偏好設定裡的設定取用適當的語言包裹。 這複雜性高於想像,因為系統有的時候必須從什麼都沒有的狀況之下組織出適當的資源。 而這些特色的好處是在於程式設計者不需要為不同的語言改變他們的程式碼。 我也不會在這話題上更深入,系統的設計給予了程式開發者最高的彈性 度,好一點簡單一點的使用者管理制度(一個單一的系統或應用軟體可以同時以許多不同的語言被使用)減少相衝,但也同時的拉慢速度。 有一些方法可以有點幫助,例如在Terminal裡使用“upadte_prebinding" - 適當的 prebound現在可以讓OmniWeb在G4不到七秒內開啟; 大約十二秒,使用我的PowerBook G3 400(firewire), 約為是以前的三倍快。 但是我也不知道是否有其他最佳化的可能性 。
待續:
到處都有交換代價?
使用界面及系統設計的討論
未來的察覺
[蘋果官方的MacOSX簡介(PDF)]
[回主頁] [老鼠的前言] [中文第一頁] [中文第二頁] [原文 Enlish]
Mac OS 10.1与PC联网的过渡方案
2001-12-22 00:29:17 中国麦克发烧友 天魔圣君
Mac OS 10.1与PC联网的过渡方案
在Classic环境下苹果与PC联网非常容易,象大家常用的PCMaclan, dave, Macsohu, DoubleTalk等,pcmaclan好像是大家用的最多的软件,它为pc上提供AppleTalk协议,但有一个小问题,有时放入共享文件夹或分区的文件在A pple上访问该共享点时看不到,而且这个AppleTalk协议与Mac os X 10.1通讯有问题,10.1不能访问其共享卷。Dave 3.0不能在10.1下使用,其它几个软件现在还没有碳化版本出现。目前虽有一个Sharity可以使用,设置相对复杂一些,不适于初级用户。
原来的AppleShare IP和Mac os x server支持一个用来和NT域通讯的SMB(Server Message Block)协议,现在的10.1中也支持此协议,它是利用PC到PC之间的通讯协议NetBEUI连接PC,我们通常所用的afp不能直接通过TCP/IP连接P C。
在10.1我们访问其它MAC时,可通过GO: Connect to Server下选择要访问的服务器,或AFP://(服务器IP地址),访问PC的方法是Smb://PC(PC机的名称)/c(PC分区名称,如:C, D...)/folder(共享文件夹)。出现SMB/CIFS Filesystem Authentication窗口,输入用户名与密码,OK。在原来的AppleShare IP的SMB服务只能指定一个NT域,而现在SMB的授权窗口可直接输入相应的NT域或工作组的名字,或访问时直接输入:smb://domain(workg roup)/pc/... 而我们所能访问的共享点只能是windows通过NetBEUI提供的Microsoft网络上的文件与打印服务提供的共享点,而原来的PCMaclan提供的A ppleShare共享点不能被访问。在Win2000以前的系统,除NT外,单机用户管理的功能非常差,控制面板下的用户会把系统设成多用户,建议使用开机时登录的用户名或密码,如果多台P C登录NT域,可从NT的用户设置中为Mac os x 10.1设置一个用户名便能同时访问所有PC。
注:10.1的SMB不能访问利用Microsoft's Active Directory Service设置的共享点,他需要其他的密码验证方法,这是Novell Dierctory Service在PC的应用,OS X本身支持目录服务(Dirctory Service),却不是SMB能解决,需要TCP/IP或LDAP.
喜爱Mac OS X的8个理由
--------------------------------------------------------------------------------
理由1: Cocoa
Cocoa是来自于Apple收购的NeXT的一种快速程序开发环境。Mac OS X自然地继承了它的优势,并推出了一些出色的Cocoa应用程序,包括WebObjects、Apple 邮件系统和OmniWeb Browser等。
理由2: Classic
Classic(典型环境)使苹果在1984年以后编写的所有软件都可在Mac OS X中运行。Classic下应用程序的性能和在程序自身环境下的运行效果相差无几。你可以使用不同的Web客户端运行Netscape 4.7或是老版本的IE来测试Web站点的兼容性。
理由3: Photoshop、Illustrator、ImageReady
正因为有了Classic环境,我们可以运行这些出色的软件。Mac在图形设计领域所惯有的强大性能被移植到了新的操作系统中,为Mac OS X用户扩展了性能。
理由4: Virtual PC
Virtual PC可允许用户在Mac OS X下运行多种PC程序。如果你需要,你可以在一个窗口运行Windows XP、一个窗口运行Linux、在另一个窗口运行另外一个OS,同时效仿3台奔腾处理器。
在Mac OS X下运行PC数量多少的惟一限制在于我们所需要共享的RAM内存、硬盘空间和CPU的多少。
理由5: Microsoft Office X
微软用于Mac的核心软件IE和Office已经超越了该公司的Windows版本。Office X看起来比Office for Windows还要出色,而现有的最完善的Word、Excel、PowerPoint和Entourage都可运行在Mac之上。
理由6: Java SE
Java在Mac OS 9上无所作为。而由于它基于UNIX,在MAC OS X上的Java与在Solaris上运行相差无几。这就意味着Java“编写一次,随处运行”的承诺在Mac上得到了实现,为Solaris编写的Forte for Java等软件在Mac OS X上运行得非常流畅。这就为新的OS打开了上千个Java应用程序。
理由7: Open Source Library
Mac OS X发布时附带了许多流行的Open Source Ltbrary(开放资源库)软件,如ipfw、ssh、apache和perl。但是由于Mac OS X基于UNIX架构,与大量已经载入Mac OS X的应用程序相比,这些软件显得微不足道。
理由8: X Window
传统的UNIX系统使用图形用户界面时依赖于X Window。通过被称为XFree86/XonX(免费软件)或是Xtools(商业软件)的软件,Mac OS X用户不仅可以获得用于Classic和Cocoa的大量应用程序,它们还可以获得XWindow环境。Windows XP无法运行MySQL、GIMP、iMovie,也不能使用iTunes可实现的高端的MP3功能。Linux 无法运行Excel、Photoshop、iMovie,也不能轻松有序地播放DVD。而只有Mac OS X可允许在操作时,同时运行和使用Excel、MySQL、GIMP、Photoshop、iMovie、iTunes等软件,并同时播放DVD。
Mac OS X的名词术语
--------------------------------------------------------------------------------
Apple Computer Glossary
BSD(Berkeley Software Distribution)
正式的名称是UNIX的Berkeley版本。BSD现在简称BSD操作系统。Mac OS X的BSD 部分是基于4.4BSD Lite2和FreeBSD这样的所谓“特色”的4.4BSD版本。
bundle束
它是文件系统中的目录,存放着可执行的代码和与该代码有关的软件原文件。应用程序、插件和框架程序是“束”的一些形式。除了框架程序之外,b undle束是由Finder作为单个文件给出的一些文件包。
Carbon
是Mac OS X上的一个应用程序环境。它有一套衍生于Mac OS早期版本的程序界面。Carbon APIs已被修改过了以适应在Mac OS X上,尤其是在操作系统基础这个内核环境上的工作。Carbon能在Mac OS X, Mac OS 9和所有晚于Mac OS 8.1之后的操作系统上工作。
Classic
是Mac OS X上的一个应用程序环境。它允许你运行非Carbon型的老式Mac OS软件。它对建立在PowerPC和68000系列芯片结构上的程序均予支持而且它与Finder和其它应用程序环境是完全结合在一起的。
Cocoa
是一个位于Mac OS X上的高级目标定向的开发平台。它是一组可由Java和Objective-C语言编写的具有程序界面的框架程序。
Darwin
是Mac OS X核心操作系统的一个别名。Darwin的内核等于Mac OS X的内核加上BSD库和本质上是BSD命令环境的命令集。它是一种开放资源(Open Source)的技术。
demand paging按需分页
是操作系统的一种设备,能把数据分页在需要它们的时候从磁盘中写入物理内存。
device driver外设驱动程序
是操作系统的组成部分,负责从外接设备里存取数据以及控制那个设备。
dynamic shared library动态共享库
是一个其代码可被多重正在运行中的程序分享的资源库。各程序精确地分享着该资源库代码的一个物理拷贝,而不需要每个程序各得到一个那样的代码。借助于动态共享资源库,一个程序不仅企图在运行中决定所有未定义的符号,而且企图在程序执行中涉及到那些符号时去执行它们。
file package
是Finder给用户准备的一个看起来象是一个文件的文件夹。换言之,Finder对用户隐藏了文件夹中的内容。这种黑箱运作避免了用户因偶然不慎换掉了b oundle中的内容。
fork
是在普通文件名下的能被分别打开和访问的一段数据。Mac的标准和扩展的文件系统把数据叉和源代码叉分别存放为每一个文件的一部分,每个叉中的数据均可被另外的数据独立地访问和处理。在B SD中fork是创建新处理过程的一个系统调用。
framework
是一个典型的“束”(boundle),它包含了一个动态共享库和该库要求的源文件,包括文件头和参考归档文件。
HFS
Hierarchical File System即分层文件系统。它是Mac OS的标准文件格式,过去做为分层的目录或文件夹代表许多文件的集合。每个HFS都可能含有文件和文件夹。它是一种双叉的磁盘格式。
HFS+
它是Mac OS的扩充的文件系统格式。该文件系统格式是被Mac OS 8.1引进的,加上了对字符超过31个的长文件名、文件的Unicode表示和目录名和在超大硬盘上有效运行的支持。它是一种多叉的磁盘格式。
infomation property list信息特性表
是一个含有boundle的基本定制信息的属性表。名为info.plist的文件含有信息特性表并被打包在boundle里。
kernel内核
是完整的Mac OS X的核心操作系统环境。它包含Mach, BSD, I/O Kit, 文件系统和网络组件。也被称为内核环境。
Mach马赫
是Mac OS X的最底层。马赫提供下述基本的服务和提炼工作:线程、任务、接口、内部信息交换(IPC)、时间管理计划、物理的和虚拟的地址管理、虚拟内存和定时器。
main thread主要线程
通过默认,一条指令的处理有一个线程,即主要线程。如果该处理有多条线程,那么主要线程就是执行的第一条线程。一个用户的指令处理可以用P OSIX线程APIs命令来建立其它用户线程。
thread线程
在Mach中,线程是CPU的可用单元。一条线程由一个程序计数器、一套寄存器和一个堆栈指针组成。
thread-safe code线程安全代码
能被几个线程同时安全地使用的代码。
memory protection内存保护
是一个内存管理系统,在该系统中程序受到保护以免被修改或损坏了其它程序的内存分区。Mac OS 8和OS 9没有内存保护,Mac OS X有内存保护功能。
memory-mapped file内存映射文件
是一种把虚拟内存以文件形式映射到物理内存上去的设施。在此之后,任何对该虚拟内存中的内容的访问都会导致对其相应物理内存上的文件的访问。位于该文件上的内容可通过修改内存中的内容而改变。
multitasking多任务
多重程序的同时执行称为多任务。Mac OS X采用多任务优先处理的方式,Mac OS 8和OS 9采用多任务协同处理的方式。
NFS网络文件系统
一个网络文件服务器允许用户在网络上分享其它主机上的文件就好象这些文件位于它们自己的本地磁盘上一样。
pixel象素
在计算机显示器上或计算机图像中的可编程色彩的基本逻辑单位。象素的物理尺寸取决于显示屏幕的分辨率。
POSIX轻便的操作系统界面
被ISO/IEC, IEEE和The Open Group支持的一个操作系统界面标准化结果。
选择 MAC OSX的四大理由
--------------------------------------------------------------------------------
1 内存保护
操作系统的稳定性不应依赖所有运行的软件是所谓的“良民”,这些“良民”们不会往系统或其它软件的地址区乱写数据,以致造成信息丢失或损坏进而造成系统的突然崩溃。马赫保证一个软件不能往另一个软件或系统的内存中写数据。通过在软件之间和软件与系统之间建立防火墙,马赫真正地做到了使某个行为不端的软件无法伤害系统的其他部分。而且,或许更值得称许的是,万一某个应用程序崩溃了,它不会影响到系统的其它部分,因此也不需要你重起计算机。
2 多任务优先
在现代操作系统中,各种信息处理任务充分地分享CPU。马赫监视着计算机的处理器,把任务区分优先次序,确保机器在最高水平上活动,并保证每个任务在执行时都得到了它所需要的资源。 它采用某些标准来决定某一任务的重要性,并以此决定在轮到其它任务之前分配给该任务多少时间。你的程序处理与其它程序处理所需的时间无关。
3 高级虚拟内存
与其它虚拟内存系统一样,马赫维护着地址映射(address maps),该映射控制着把某一任务的虚拟地址翻译到物理内存中去的过程。在任何给定的时间内,典型地只有包含在某一任务的虚拟内存中的一段数据或代码是驻留在物理内存中的。作为映射的分页,它们从硬盘中加载到内存中去。马赫加强了这种提取内存目标的能力。名义上的内存目标能在足够基础的水平上把某一任务映射到一块内存上,退出映射并把该块内存再分配给另一任务。这种能力对于在同一系统中创造出各自独立的执行程序的环境是必不可少的。在M ac OS X中虚拟内存总是开着的。
4 实时支持
为那些对反应时间要求苛刻的应用软件立即进入处理器并作出反应提供保证。
如何在Web中使用数据库
--------------------------------------------------------------------------------
你一旦决定使用Web向访问者传递或者搜集信息,那么毫无疑问,你应该把信息保存到数据库中。这是一项很好的建议。数据库被设计成用来保存和检索需要经常更新的信息,因此它们能够让你把那些不断变化的数据(如电子商务交易数据)集成到你的Web网站中而不至于引起访问速度的下降。
最好的选择是采用SQL(结构化查询语言)数据库。SQL是一种从关系数据库中提取信息的产业标准化工具。SQL比较复杂,但是从长远来看,使用它能让你获得更好的回报。在Web网站后端采用数据库可以把日常更新的数据与网站的外观界面分割开来。
要让这样的系统运行起来,需要将相当多的技术协调使用。我们将一般性地阐述Web/数据库的体系结构,然后看一看目前占主导地位的三种数据库实现方法。
一般说来,你无法将远端用户的Web浏览器直接与数据库系统相连。Java applet可能是唯一的例外,但是在多数情况下,浏览器都要通过与运行在Web服务器上的中间程序对话来访问数据库。该程序可以是CGI(通用网关接口)script、Java servlet或者使用ASP(Active Server Pages)或JSP(JavaServer Pages)编写的代码。用户并不会知道某个页面是普通的HTML文档还是由某个脚本所生成。
显示了用户和基于Web的数据库系统之间的典型交互过程。首先,用户填写在网页上的表单并点击“Submit”按钮(步骤1)。浏览器把信息由表单传送给Web server,然后传递给CGI script(步骤2)。接下来,CGI script装入与SQL数据库服务器对话的运行库,并使用该运行库把SQL命令发送给数据库服务器(步骤3)。数据库服务器将信息保存起来,并通知CGI script所有过程都顺利完成(步骤4)。然后,CGI script生成一个HTML文档作为确认,并把HTML文档写入Web服务器(步骤5),服务器将该文档回送给远端的用户(步骤6),这样,所有过程就完成了。
开放源代码解决方案
LAMP是一系列技术术语的缩写。它代表Linux、Apache、MySQL和P*,P*可以是Perl、Python或者PHP(三种支持Web数据库开发的程序语言)。
Linux是最流行的Web内容服务平台之一,并且其普及程度还在稳定地增长。Linux是免费的并且运行起来十分可靠,它对于负载很重的Web网站也可以提供很好的支持。尽管Linux在多于4个处理器的系统上的性能存在一些问题,但已经有足够的事实证明它在负载分担的运行环境下(多个服务器共同为一个Web地址提供访问支持)是一个相当可靠的操作系统。最终Linux的开发者肯定会隔离并消除它在性能上的某些瓶颈,从而摆脱人们对Linux的非议。最近发布的Linux 2.4已经开始考虑到多处理器下的性能问题。
和Linux一样,Apache的Web服务器也是免费的。另外,同Linux一样,一些主要的Internet厂商(如IBM)对Apache非常关注并积极参与它的开发。Apache基金会(www.apache.org)由独立的开放源代码开发人员以及对Apache的未来感兴趣的公司代表所组成。该基金会致力于为那些高水平的开放源代码爱好者和高端公司用户建造出一个稳定的Web服务器。例如,IBM的WebSphere(www.ibm.com/websphere)就是基于Apache的某个定制版本建立的。
MySQL(www.mysql.com)正如其名称所显示的那样,它是LAMP方案中的SQL数据库服务器部分。MySQL在面世以后很快就成为一家很受欢迎的基于Unix的Web主机托管服务商,这要归功于它所提供的快速、稳定并且易于管理的服务。最初的MySQL有点类似Mini SQL(www.hughes.com.au),只是一个轻量级的数据库系统,它的开发者很谨慎地往里面加入更多的高级功能,并确保不会由此影响到MySQL的运行效率。
Perl、Python和PHP(PHP超文本预处理程序)是Web上最好用的三种开放源代码的程序设计语言。Perl(www.perl.com)是适合在多个平台上运行的解释性脚本语言。它尤其擅长文本处理和数据库操作,并且它在基于服务器的程序设计中非常流行。当你在LAMP体系结构上使用Perl的时候,你可以使用CGI(最基本的Web应用程序开发协议)或者mod_perl(perl.apache.org,一种更高级的把Perl直接并入Apache网络服务器的方法)。
也许Perl是最常用的一种编写CGI程序的语言,但是其他的方法也值得探讨。Python(www.python.org)是另外一种强大的程序设计语言,以其清晰的语法和松散的学习曲线而著称。另外,Python也是Zope(www.zope.org)的基础,Zope为Web提供一个强大的框架(包括一个面向对象的数据库,并提供对MySQL和其它数据库的支持)。
PHP(www.php.net)是一种嵌入网页的语言。它与ASP和JSP有些类似,Web服务器会依次为PHP文档中的HTML和用PHP编写的程序的输出服务。用户所看到的网页是静态的HTML和PHP程序段所产生的HTML的混合体(如图2所示)。
Perl、Python和PHP都带有连接SQL数据库的工具。对LAMP的初学者来说,www.onlamp.com是一个很好的入门网站。
基于Java的方案
Java 2的企业版J2EE(java.sun.com/j2ee)提供了一整套围绕Java 2的技术 。J2EE特别包含了Java servlets、JSP和JDBC(Java数据库连接工具)。Java servlets是一组具有Web功能的Java类库,它可以运行在你的Web服务器上。由于远端用户能使用与CGI脚本一样的协议与Java servlets相连,把servlets并入Web架构并不困难。JSP能让你把Java代码直接嵌入Web网页中,并且它还支持被称作JavaBeans的组件(该组件可以用一个简单界面实现复杂的功能)。你不再需要在每次改变程序后都更新你的Web网页,你只需要更新bean并拷贝到你的Web服务器上就行了。你甚至不需要重新启动Web服务器。JDBC则是用于连接Java程序和SQL数据库的一套程序库。
对于J2EE的Web/database部分来说,Java servlets的官方实现Tomcat是一个很好的入门参考。Tomcat是开放源代码Apache基金会的一个项目,在jakarta.apache.org/tomcat可以下载。它需要Java 2 SDK(java.sun.com/j2se)来运行,Java 2 SDK可以用于多种操作系统(包括AIX、Linux、Mac OS X、Windows和Solaris)。在www.oreillynet.com/pub/ct/33中你可以下载到James Goodwill的如何安装Tomcat的文章,它能从头到尾指导你进行安装。文章中同时提供了Linux和Windows两个操作系统下的安装指南。Linux下的安装指南可以适用于大多数Unix操作系统。
微软公司的方案
目前,Microsoft的Web数据库解决方案由ASP(Active Server Pages)、ADO(ActiveX数据对象)和IIS(Internet信息服务器)所构成,不过这种情况即将改变。很多的开发者都在为Microsoft公司新的Windows技术——.NET(www.microsoft.com/net)作准备。.NET平台把所有的Windows程序转移到一个以Web为中心的模型,在该模型中应用程序通过Web的HTTP(超文本传输协议)和XML(可扩展标注语言)来进行交互。
IIS是Microsoft公司的Web服务器。Windows NT服务器和Windows 2000中提供了IIS的完整版。如果你使用Windows 95、98、Me或者NT Workstation的话,你可以安装Personal Web Server(PWS)。你可以在操作系统光盘上或者Windows NT Option Pack中(即便你使用Windows 95、98或者Me)找到Personal Web Server,Windows NT Option Pack可以到www.microsoft.com/ntserver/nts/downloads/recommended/NT4OptPk/去下载。需要注意的是,尽管你可以在Windows Me上运行PWS,但Microsoft并不支持这样使用,因此如果你非要这样使用的话需要自己承担风险。
IIS和PWS都包含了对ASP、JSP和PHP的支持。ASP文档与JSP和PHP的区别在于你可以使用任一种ActiveX脚本语言来编写,包括VBScript、JScript、Perl、Python等等。Perl和Python的ActiveX脚本版可以到ActiveState(www.activestate.com)下载。
ADO是一种能够让你用Visual Basic、C++、Perl和其他语言与数据库进行交互的编程模型。ADO会随着IIS或者PWS安装,不过你应该升级到最新的版本,从而获得MDAC支持(Microsoft数据存取组件)。从www.microsoft.com/data/download.htm可以下载MDAC。另外,你还应该安装MDAC Software Developers Kit(在上面的同一页面下可以下载),该软件包中带有示例程序和帮助文档。
ASP.NET是ASP的更高级版本,它可以支持新的C#语言以及VB.NET(Visual Basic的修订版)。ASP.NET在原有的ASP实现方案中进行了改进,它首先将所有的ASP.NET页面编译成与平台无关的中间语言(Intermediate Language),然后再用JIT(just-in-time)编译器把它编译成在本地运行的x86代码。其结果是ASP.NET比其前身运行得更快了。有关ASP.NET的更多信息可在msdn.microsoft.com/net/aspnet/找到。
ADO.NET则是ADO的下一代产品。它提供了比ADO更面向对象的编程模型,并简化了XML和关系数据之间的双向转化过程。有关ADO.NET的更多信息可以在.NET构架文档中找到,你可以到msdn.microsoft.com/net/中下载该文档。
在你做决定之前
不要轻率地作出决定;你可能想调查一下主机托管服务商的情形,它可以帮你安装和维护一个带有数据库后端的Web网站。
在最终决定之前,最好阅读一下有关的书籍,如Louis Rosenfeld和Peter Morville的《WWW信息体系结构》和Philip Greenspun为设计网站所著的《Philip和Alex的Web发布指南》。
黑客、病毒、苹果机、OS X
--------------------------------------------------------------------------------
据Symantec公司的高级产品专家罗博特·福兰克林说,由于Mac OS X的Unix基础,黑客和病毒对苹果平台形成了比以往更大的威胁。
黑客,即那些不经允许而设法进入互联网上其他电脑的电脑使用者。他们通过查看、拷贝或毁坏个人文件而构成威胁;他们查看和拷贝诸如名称、地址、重要数字及金融资料这类信息;他们还植入电脑病毒和/或特洛伊木马(Trojan Horse)病毒。
福兰克林说:“黑客因新操作系统而受到挑战,但Mac OS X却由于Unix而面对攻击更加脆弱。Unix因为是网络操作系统就更易受到影响。另外,Unix已经存在了很长时间,比Windows还长,所以人们对它很熟悉。”
当然,电脑病毒是对公共安全的威胁,对苹果和Windows用户都有影响,尽管大多数病毒攻击的是Wintel系统。病毒被设计成能够自我传播的程序,它们往往通过文件共享和电子邮件附件传播,它们具有造成重大破坏的潜力,损毁文件、破坏硬件功能、重新格式化硬盘以及向地址薄中的所有地址群发电子邮件。
福兰克林说:“苹果用户在一定程度上受到误导,认为他们不需要保护。就操作系统的本质而言,并不能说哪一种操作系统比另一种更易受攻击,只是现实中影响Windows机器的病毒比影响苹果机的多而已。”
福兰克林解释说,病毒作者的动机是想让他们的病毒传播给尽可能多的电脑用户。无论是家用还是办公用,Windows平台在全世界普及率最高,所以针对这个平台的病毒也就多。
他解释说:“这并不意味着苹果机就可高枕无忧,或者认为苹果机即使感染了病毒损害也相对较小。就有那么一些专对苹果机的病毒,能够给苹果用户造成不同程度的问题。”
专对苹果机的四大病毒是:
* Mac.Simpsons@mm: AppleScript蠕虫病毒,目标是苹果平台。它可以打开Microsoft Outlook Express或Entourage,随原信向地址薄中的所有人发送自身的拷贝。其脚本名称是“Simpsons Episodes”。
* SevenDust: 此病毒有六个变种,其中四个为变形加密种。它们的共同特点,都是通过修改MDEF和MENU资源来感染应用程序。它们可创建系统扩展(以不可见字符加在名称之前,因而可先行加载)或在系统文件中添加INIT资源。
* CODE 9811: 此病毒在应用程序之间传播。当受感染的应用程序启动时,它会搜索并感染另一个应用程序,将自身复制到该应用程序中。原文件的内容被复制到同一子目录下的一个不可见文件,该文件的名称由任意大写字母组成。被感染的应用程序还企图删除在默认卷的根目录中或者系统、控制板或扩展名目录中找到的杀毒软件。
* MBDF: 首次出现在1992年。MBDF A是源于特洛伊木马病毒Tetracycle的变种。另外,有人发现MBDF A携带于Obnoxious Tetris和Ten Tile Puzzle几个版本中。
Simpsons病毒可影响Mac OS X,SevenDust、CODE 0911和MBDF也都可影响它,但只在Classic环境下。
然后就是宏病毒了。宏病毒即乔装成合法文档的宏(指令系列)。当感染了宏病毒的文档打开时,文件中的病毒便被释放出来。
福兰克林说:“多数宏病毒对苹果机并无危险性,但有些却是危险的。即使是那些没有危险的,也可以经电子邮件附件从苹果用户传给PC用户。”
他补充说,人们在传播病毒时往往并不知道它们是什么。多数病毒通过电子邮件附件传播,而且常常以图片或动画的形式出现,或者有一个很有吸引力的文件名称,如“Check this out”。
我们都希望互联网连接更快一些,而福兰克林说,高速连接(如DSL和线缆)其实加大了染毒或被黑的危险,尤其是用高速连接一直挂在网上的时候。如果一直连接着,黑客就有了绝好的机会定位在线的用户,进而造成危害。
福兰克林说,某些线缆和DSL连接使用“固定IP地址”,也就是说黑客知道故道重游进入同一系统的地点。即使苹果用户在DSL线缆连接中使用“动态IP地址”,机器每次重启都分配新的IP地址,用户对随机的黑客袭击仍然是开放的,只不过面对的是在线病毒而已。
有两种办法可以防止苹果电脑受黑客和病毒袭击:个人防火墙软件和杀毒软件。线缆调制解调器厂家建议使用个人防火墙,它提供多级防线,在互联网上保护电脑和个人稳私。
据专门介绍高速互联网接入最新信息的Cable-modem.net网站说:“最简便的方法就是安装个人防火墙软件,防火墙就象一套安全系统,探测和防止入侵者进入你的财产。当你在线时,个人防火墙软件监测电脑的可疑活动,在入侵者进入电脑之前就先行予以拦截,并且储存该进攻者的记录,包括其IP地址。”个人防火墙软件并不昂贵,安装也简单。如果你使用线缆调制解调器或DSL联接,或者你频繁地拨号上网,那么我们认为这个投资是值得的”。
当然啦,防止苹果电脑染毒的最佳且最容易的办法就是使用杀毒软件,用它可扫描并修复受感染的文件。请注意保持杀毒软件的版本为最新。多数杀毒软件都可上网升级,以使对病毒的定义常新。
福兰克林说,随着Mac OS X的普及,病毒和黑客也在对这个新系统构成威胁,两者造成威胁的方式都是多种多样的。
他解释说:“病毒的威胁可能是祸不单行,且常常出其不意。黑客更具有经常的威胁性,他们常备不懈。”
苹果用户应该在Mac OS X下继续同时使用杀毒和个人防火墙软件产品,以最大限度地保护自己的系统。另外,使用的这类产品必须是与Mac OS X兼容的。 可在Symantec杀毒研究中心网站了解关于病毒的更多信息。在Virus Encyclopedia的搜索栏中输入“Macintosh”,即可搜索与苹果机有关的所有病毒。
从Mac OS X说起
在漫长的等待之后,Mac OS X终于在3月24日“如期”发布了。苹果公司为了这一操作系统的开发几乎倾尽了全力,,且不说银子象淌海水一样花个没完,光是已知的测试版本,就有78个,可谓是精雕细刻,精益求精。其中所凝结的巨大劳动就可想而知了。怪不得乔布斯会说:“Mac OS X是未来15年内最重要的软件。”
追溯Mac OS X的开发史,,其实早在10多年前的斯卡利时代就已经开始了。那时操作系统7.0刚上市不久,虽然在性能上比6.0版本增加了不少,和微软的Win 95相比,在效能上仍然略胜一筹,但是明眼人一看就知道,两者的差距已经明显拉近了。照此速度发展下去,广大的电脑用户将不再有兴趣购买功能与PC相近、但价格又贵出一大截的苹果电脑了。这种潜在的威胁,苹果公司的决策者们当然是心知肚明的。在苹果某次技术讨论会上,决定着手开发一种新的操作系统,它的最大特点,是应该具备多工处理和内存保护功能。它同时也应该具有更加吸引人的界面。大轮廓定下来后,开发工作正式开始。被命名为“粉色计划”。当时谁也没有想到,这一步迈出去竟然走了十年!这期间,人事的更迭、财政的危机、技术的发展、决策的变化等等因素都没有使这项工作停止,当然新系统也没有象预期的那样在两年之内推出。就象羊拉屎一般,走走停停,步履蹒跚。人们也经历了期待、失望和愤怒。在五颜六色的狂想曲奏过之后,人们终于等来了老媳妇见公婆的一天。这时大家才发现,新系统除了保留以前构想的基本内核外,其它的早已面目全非了。
Mac OS X 诞生了。对于这个新操作系统,人们的褒贬不一。有人说它是一个无与伦比的天才产品,也有人说它是一个七拼八凑的大杂烩。说归说,是骡子是马,今后一年的检验是至关重要的。也许它确实是一匹良马,任我自由驰骋;也许它还是一头小驹子,有待调教成熟;当然,也许它干脆就是一头老牛,只会慢吞吞拉破车。
做为一个苹果电脑的爱好者,我理所当然地希望看到一个性能非凡的好系统并且愉快地使用它。可是当它真的出现在我的身边时,我不禁又在思索这样的问题:Mac OS X的诞生到底意味着什么?
Mac OS X的诞生对于现在的苹果公司来说是至关重要的,它为苹果公司在激烈竞争的昏天黑地的IT战场上提供了一件强有力的武器。而更加重要的是,它是一个标志,一个象征,它意味着乔布斯终于向市场、向用户低下了那颗高傲的头。
大家知道,乔布斯是在美国六十年代美国嬉皮士文化中孕育出来的电脑怪杰,他生就一副浑不吝的性格。正是由于这种性格,使他能够在汽车房里制造了第一台个人电脑。由他创立的苹果公司,自然也深深地体现了这种风格和理念。在这里,市场需求并不是第一位的,创造新奇才是最重要的。在苹果公司有一句著名的口号:Think different(不同凡响)。口号是很好的,体现了苹果公司不断追求不断创新的努力。不过从另一个角度看,是否也暗含着对传统的反叛,对权威的蔑视呢?苹果公司犹如一座圣殿高高在上俯视着一切。对竞争对手、开发伙伴,甚至是用户,都是如此。充分体现了苹果的理想主义特性。在企业人员构成上,如果说是一群高水平的科学家和管理人才组成了微软和Inter公司,那么在苹果公司的麾下则聚集着一批不食人间烟火的天才。当其它企业说:我们又获得了XX亿元的利润时,苹果则宣称:我们又有了一款独一无二的新电脑。多年以来,苹果公司所有兴衰荣辱,无不与这种理念密切相关。
然而,天才终究也是要吃饭的。苹果公司在经历了二十多年的坎坷历程后,终于感受到,就象人无法抗拒自然规律一样,企业同样无法抗拒商业规律。看看这些年的电脑发展吧,奔腾4、Win2000、Java语言相继诞生并成熟起来,吞噬了大部分的市场份额,而苹果呢?市场占有率持续下滑,连去年被誉为最佳设计的Cube型电脑仅卖出去十万台。剩下的大量积压,看来只有自己熬着吃了。
不错,苹果公司曾经是业界的骄傲,曾经有过辉煌的过去,并且建立了自己独有的文化。它的产品以其人性化的特点吸引了众多用户。但是这只是发展市场的基础。苹果公司毕竟不是一个文化传播公司,而是一个生产软硬件产品的大型电脑企业,你要生存要发展,就必须获得市场的认可,就必须获得利润。有了饭吃,你才能去做爱因斯坦、甘地、毕加索、爱迪生的梦。苹果以前的迅猛发展,证明了它曾经遵循了市场规律,而这两年的持续滑坡,同样是因为它违背了市场规律。市场不去照顾任何人的情绪,不看任何人的脸色行事。你是不同凡响的创新也好,跟在别人后面吃剩饭也好,最后的衡量标准是统一的:以赚钱论英雄。 你可以反叛传统,你可以蔑视权威,但是你不能无视市场。这一点恰恰是苹果公司应该深刻反思的。
事实上,从Mac OS X的开发过程中,我们高兴地看到了这种转变。
这一次,苹果公司不再追求瞬间的惊喜和轰动效应,而是不断地考察市场需求,通过推出多个测试版的方式,去倾听用户的反应,将这些意见、建议、抱怨收集起来,溶于对产品的开发中,使Mac OS X得以完善。
随便拈来几项:
●改进了使用界面,,使之在创新的同时,更符合传统的使用习惯;
●通过多工处理和内存保护功能,极大地提高了电脑运行效能,减少了死机现象;
●在同一台电脑上,不同的人都可以建立自己个性化风格的界面,而且互不相扰;
●照顾到老用户的需要,建立了“Classic”环境,可以无障碍地自动运行以前所有的应用程序。而不是象以前,把麻烦推给客户和开发商,让他们自己去处理68K和PPC的问题。
●努力改善与开发商的关系。放下唯我独尊的架子,开放“达尔文”源代码,鼓励开发商开发出新的应用程序。这种努力已经有了初步成果。到目前为止,在Mac OS X上已经有了350个新的应用软件,并且有超过一万个开发者组织为Mac OS X开发近两万个软件。
●为了适应“数字化生活”的需要,推出了多个方便好用的新产品,如iTunes软件等。
所有这一切,都预示着Mac OS X将是一个面向用户的好东西,将是一个有蓬勃生命力的产品。这也是我们广大的苹果电脑爱好者所希望看到的。同时我们也看到了苹果公司的新思维方式。从“我要给用户提供什么?”转变为“用户现在需要什么?用户将来需要什么?”
这种强烈的市场意识无疑是正确的。
Mac OS X有许多先进的功能,处处都可以感觉到苹果开发者的天才闪光。与其它个人电脑操作系统相比,它应该是最好的。但并非是高不可攀的。微软也不是吃干饭的,也许在不远的将来,我们又将看到Windows 3000的面世。那么对于这种局面苹果是否有足够的心理与技术准备呢?是否要拿出一个Mac OS Y来与之一争高下呢?此外,由于新系统的开销庞大,需要更快的处理器、内存、硬盘。苹果对硬件产品上有什么高招呢?我们在等着瞧。
市场是残酷无情的,在日趋激烈的电脑竞争中,战斗正未有穷期。我们愿苹果保持它固有的棱角,保持它的朝气,并多一些理性去面对市场,才会有永久的魅力。(岁友)
管理50個網站
一台機器,多個網站
AppleShare IP(簡稱ASIP)它的Web伺服器可以管理50個網站(WebSite),一般人可能沒用到,不過要用到的時候卻又不知道怎麼用,只是看著那堆它認識我,我不認識它的英文說明,很是氣人,呵呵!
其實ASIP是可以做到的啦,只是很少人提起就是了,也沒啥中文的解說,不管那麼多了,我們來說說ASIP怎麼管理多個網站好了。
通常會有這種需求的,可能是有好幾個DomainName,想說不用白不用,可以架好幾個網站就架,不過架站的機器可能只有一台,那怎麼辦啊?這個時候就可以使用ASIP的Multiple Web sites的功能喔!
假設有兩個網站,分別是www.macdiy.net,另一個是www.test.com,而這兩個網站都要架設在同一台機器上,機器上只有一個IP,其IP是12.34.56.78
另外,您得熟稔ASIP的操作,這裡無法在對ASIP的操作方式做很詳細的解說。
--------------------------------------------------------------------------------
四個步驟
一、設定DNS
首先您要做的工作就是將 www.macdiy.net與 www.test.com這兩個名稱指向 12.34.56.78 這個位址。這個工作是在DomainName Server上完成的,不管您自己架設DNS或是DNS代管的情況,請先作好這個動作!
二、設定web檔案夾
因為我們要架設兩個網站,所以就要設定兩個檔案夾來分別存放網站的內容,比如說www.macdiy.net的網站檔案夾是Web Folder,而www.test.com的網站檔案夾是Test Folder 好了。Web檔案夾的設定請參考ASIP的手冊。
三、設定Multi Domain Settings檔案
Multi Domain Settings這個檔案位於Web Folder中的Plug-in檔案夾內,請使用SimpleText打開它,裡面寫了一堆英文的說明,先不用裡它。直接在最下面加上兩行。
dns=buy.thismac.com port=80 path=Disk Name:Web Folder
dns=www.macdiy.net port=80 path=Disk Name:Test Folder
請注意,這Disk Name是您安裝ASIP主機的硬碟名稱
加上這兩行設定後,存檔即可。然後將Web Folder中的Plug-in與Errors檔案夾拷貝一份到 Test Folder 中。
四、設定WebServer
執行MOSA程式,打開Configure Web Server ,把Enable Plug-ins這個選項選取來,再將Maximun plug-in memory usage 調大一點。然後重新啟動Web 伺服器即可。
麥金塔錯誤訊息中譯
麥金塔錯誤訊息中譯
當您的 Macintosh 發生這些錯誤時,您可以使用它們解釋發生了什麼事情。
--------------------------------------------------------------------
ID=01 匯流排錯誤
這表示電腦試圖存取不存在的記憶體。您可以從幾乎所有的 Macintosh 上得到此錯誤訊息。如果這些電腦中的某台電腦試圖存取超越了 RAM 總數的一個或數個位元組,您就會看到匯流排錯誤訊息。您在 Macintosh Plus 或 SE 上永遠看不到此錯誤訊息,因為超過界限的位址參照會「循環」。這表示如果有台電腦試圖存取超越 RAM 總數的一個位元組,它實際上會存取記憶體中的第一個位元組。如果您在 Macintosh Plus或 SE 上看到此一錯誤訊息,那是它報告了不正確的錯誤或者有硬體上的問題。
ID=02 位址錯誤
Motorola 68000 微處理器能以一個位元組 (8 位元)、一個字元 (16 位元),或者一個長字元 (32 位元) 的增量存取記憶體。該微處理器能在奇數或偶數記憶體位址上存取一個位元的資訊。但是它必須在偶數位址記憶體上才能存取一個字元或一個長字元。因此,當該微處理器試圖在奇數位址上讀或寫一個字元或者一個長字元,您就會看到此錯誤訊息。因為在執行隨機碼時,這種機率是一半一半,所以此一錯誤訊息會常常出現
ID=03 不合法的指令
電腦有它所能瞭解的特定的機器語言指令字彙。如果電腦試圖執行一條不在此字彙中的指令,您就會看到此錯誤碼。它比錯誤 02 出現的要少,不過還是滿普遍的。
ID=04 除數為零錯誤
此一錯誤的產生是因為微處理器除兩個數字,而除數為零。有時候程式設計師會將它放入程式作為除錯之用,卻忘記將它移除。
ID=5 範圍檢查錯誤
程式設計師能在 Motorola 68000 中用一條指令來檢查某一數字是否在一定的範圍中。此錯誤表示被測試的數字不在指定的範圍中。
ID=06 溢位錯誤
每個儲存於電腦中的數字都被賦予一定的空間。數字越大就需要越多空間來表示該數字。溢位情況的產是因為所產生的數字太大,超出了所分配給它的空間。Motorola68000 有一指令可測試溢位的情況,如果它偵測到溢位時,就會顯示此錯誤訊息。
ID=07 違反取用權限
Motorola 68000 執行於監督者或使用者模式。Macintosh 應該永遠是在監督者模式,但是有時卻被放在使用者模式。有些指令只能在監督者模式下執行。如果電腦在使用者模式下企圖執行這些指令,就會產生違反取用權限錯誤。
ID=08 追蹤模式錯誤
程式設計師在追蹤模式時可以用執行期偵錯程式。這樣可以一次一條指令一地追蹤整個程式。如果並沒有安裝偵錯程式,而 Motorola 68000 無意中被置於追蹤模式時,您就會看到此錯誤訊息。
ID=09 和 ID=10 行 1010 及 1111 陷阱
Macintosh ROM 中有許多常式可以被置於程式中的指令所呼叫,這些指令並不在Motorola 68000 的字彙中。當 68000 碰到這些指令時,它會到指令表中去尋找。此一指令表會列出與每一指令相對應的常式之位址。如果 68000 在表中找到此一指令時,它就分支到此一常式去執行。如果在表中找不到此指令,您就會看到此錯誤訊息。
ID=12 未執行的核心常式
程式設計師可能會程式某些部份設置中斷點用來檢查錯誤。這將需要使用到偵錯程式。如果中斷點出現,而偵錯程式並未安裝,您就會看到此錯誤碼。
ID=13 未安裝的中斷
Macintosh 使用中斷來識別何時像鍵盤和磁碟機等裝置需要服務。在記憶體中必須有對應的常式來告訴電腦如何為這些裝置服務。如果發生中斷時這些常式不在記憶體中時,您就會看到此錯誤訊息。
ID=15 區段載入程式錯誤
Macontosh 程式均被分割為若干區段,而每個程至少將會有一個區段。多區段讓程式能夠分成為數個部份載入記憶體,以提供更多的內部隨機存取記憶體空間供資料使用。區段載入程式負責將要用到的一個區段載入隨機存取記憶體。如果無法執行此動作,您就會看到此錯誤訊息。
ID=17 至 ID=24 缺少資料封包 0-7
Macintosh 使用資料封包來做一些特定的工作。資料封包之中有內部公用程式、二進位至十進位轉換、標準檔案工具,和磁碟機初始化。這些資料包均位於 System 檔案夾中,如果您得到這些錯誤訊息,可能是某個系統檔案損壞了。當系統檔案損壞時,錯誤碼 15、16、26、27、30,和 31 也會出現。試著取代損壞的系統檔案。
ID=25 記憶體已滿錯誤
您的隨機存取記憶體可能已經用盡。但是當先前的某項錯誤造成 Macintosh 錯誤地偵測到記憶體用完的情況時,您也會得到此錯誤訊息。
ID=26 開啟不正確的程式
Macintosh 無法執行所開啟的程式。
ID=28 堆疊碰撞堆陣
這和記憶體已滿錯誤類似。最好是經常儲存您的工作,並且保持您硬碟資料的最新備份。一但真的發生系統當機,如果您已經採取這些預防措施,資料損失就會降到最低。
疑難排解系統錯誤
最好是經常儲存您的工作,並且保持您硬碟資料的最新備份。一但真的發生系統當機,如果您已經採取這些預防措施,資料損失就會降到最低。如果您時常發生系統錯誤,請探查這些可能性:
試以最新版本的應用程式來開啟文件。
試以同一應用程式開啟其它文件。
檢查文件大小是否超出應用程式大小的限制。
在關閉延伸功能狀態下開啟系統 (重新啟動時按住 SHIFT 鍵)。
您對系統所做的任何變更 (新的控制面板、延伸功能等),都可能給您造成當機原因的線索。
記下當機時您已開啟的桌面附件,以及當機前一刻您到底做了些什麼。記下錯誤的識別碼或文字,以及您使用應用程式和系統軟體版本號碼。
試著在其它 Macintosh 上重建此一問題。
清潔安裝系統軟體,然後再試著使用該應用程式。
負值錯誤碼
這裡是負值錯誤碼 (0 到 -261) 的列表以及簡短說明。
一般系統錯誤 (VBL 管理程式,佇列)
0 noErr0 代表成功「或是」
0 smNotTruncated 不需要截短
-1 qErr 刪除時找不到佇列元件「或是」
-1 smTruncErr 僅是截短指示器已寬於所指定寬度
-2 vTypErr 無效的佇列元件
-3 corErr 核心常式編號超出範圍
-4 unimpErr 未執行的核心常式
-5 slpTypeErr 無效的佇列元件
-8 seNoDB 未安裝偵錯程式來處理偵錯程式指令 Color Manager 錯誤
-9 iTabPurgErr 從 Color2Index/ItabMatch
-10noColMatch 從 Color2Index/ItabMatch
-11qAllocErr 從 MakeITable
-12tblAllocErr 從 MakeITable
-13overRun 從 MakeITable
-14noRoomErr 從 MakeITable
-15seOutOfRange 從 SetEntry
-16sePortErr 從 SetEntry
-17i2CrangeErr 從 SetEntry
-18qdBadDev從 SetEntry
-19reRangeErr 從 SetEntry
-20seInvRequest 從 SetEntry
-21seNoMemErr 從 SetEntry
I/O 系統錯誤
-17controlErr 驅動程式無法回應控制呼叫
-18statusErr 驅動程式無法回應狀態呼叫
-19readErr 驅動程式無法回應讀取呼叫
-20writErr 驅動程式無法回應寫入呼叫
-21badUnitErr 驅動程式參照號碼和單位表不相符
-22unitEmptyErr 驅動程式參照號碼指定單位表中之 NIL 處理
-23openErr 要求的讀/寫許可不符合驅動程式的開啟許可,或是企圖開啟 RAM 序列驅動程式失敗
-24closErr 關閉失敗;關閉 .MPP 驅動程式要求被拒絕
-25dRemovErr 試圖移除開啟之驅動程式
-26dInsErr DrvrInstall 無法在資源中找到驅動程式
-27abortErr IO 呼叫被 KillIO 中止;出版者已發行新版本「或是」
-27iIOAbortErr IO 中止錯誤 (列印管理程式)
-28notOpenErr 無法讀/寫/控制因為驅動程式未開啟
-29unitTblRullErr 單位表上有一條以上項目
-30decExtErr 裝置延伸功能錯誤
檔案系統錯誤
-33dirFulErr 目錄已滿
-34dskFulErr 磁碟已滿
-35nsvErr 無此磁碟;磁碟找不到
-36ioErrI/O 錯誤
-37bdNamErr 檔名不正確;在最終系統可能沒有不正確檔名
-38fnOpnErr 檔案未開啟
-39eofErr 檔案結尾;格式內無其它資料
-40posErr 試圖指向檔案起始位置之前 (讀/寫)
-41mfulErr 記憶體已滿或者檔案不合 (載入)
-42tmfoErr 開啟太多檔案
-43fnfErr 找不到檔案;找不到檔案夾;找不到容器;找不到目標
-44wPrErr 磁碟有寫入保護;磁碟由硬體鎖住
-45flckdErr 檔案被鎖住
-45flckdErr 出版者正寫入某版本
-46vLckdErr 磁碟由軟體鎖住
-47fBsyErr 檔案忙碌中 (刪除);區段正執行I/O
-48dupFNErr 檔名重覆 (重新命名);找到檔案而不是檔案夾
-49opWrErr 檔案已開啟並允許寫入
-50paramErr 使用者參數列表錯誤
-51rfNumerr 參照號碼無效
-52gfpErr 取得檔案位置錯誤
-53voloffLinErr 磁碟為離線
-54permErr 軟體鎖住檔案;非訂閱者 (開啟檔案許可錯誤)
-55volOnLinErr 磁碟機已連線於 MountVol
-56nsDrvErr 無此磁碟機 (試圖連接錯誤的磁碟機號碼)
-57noMacDskErr 非 Macintosh 磁碟 (訊號位元組錯誤)
-58extFSErr 外部檔案系統檔案系統識別碼為非零
-59fsRnErr 檔案系統內部錯誤;重新命名時舊名稱已刪除但無法還原
-60badMDBErr 錯誤的主目錄區塊
-61wrPermErr 寫入許可錯誤;不是出版者 Font Manager 錯誤
-64fontDecError 字型宣告錯誤
-65fontNotDeclared 字型未宣告
-66fontSubErr 字型替代錯誤
磁碟、序列埠、時鐘特定錯誤
-64lastDskErr
-64noDriveErr 磁碟機未安裝
-65offLinErr 要求讀/寫離線之磁碟
-66noNybErr 嘗試 500 次中找不到 5 個半字節
-67noAdrMkErr 找不到有效的位址記號
-68dataVerErr 讀取驗證比較失敗
-69badcksmErr 位址記號加碼檢查未執行檢查
-70ba
- 加关注
- 发私信



