Home About us Products Services Contact us Bookmark
:: wikimiki.org ::
MySQL

MySQL

MySQL[]是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

MySQL的特性


- 使用CC++编写,并使用了多种编译器进行测试,保证源代码的可移植性
- 支持AIXFreeBSDHP-UXLinuxMac OSNovell NetwareOpenBSDOS/2 WrapSolarisWindows等多种操作系统
- 为多种编程语言提供了API。这些编程语言包括C、C++、EiffelJavaPerlPHPPythonRubyTcl等。
- 支持多线程,充分利用CPU资源
- 优化的SQL查询算法,有效地提高查询速度
- 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中
- 提供多语言支持,常见的编码如中文的GB 2312BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名
- 提供TCP/IPODBCJDBC等多种数据库连接途径
- 提供用于管理、检查、优化数据库操作的管理工具
- 可以处理拥有上千万条记录的大型数据库

MySQL的应用

与其他的大型数据库例如OracleDB2SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL不支持视图(已经被列入5.1版的开发计划)、存储过程、事件等)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。 目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是遵循GPL的开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。

MySQL管理

可以使用命令行工具管理MySQL数据库(命令mysql 和 mysqladmin),也可以从MySQL的网站下载图形管理工具[http://www.mysql.com/products/administrator MySQL Administrator]和[http://www.mysql.com/products/query-browser MySQL Query Browser]。 [http://www.phpmyadmin.net phpMyAdmin]是由php写成的MySQL資料庫系統管理程式,讓管理者可用Web介面管理MySQL資料庫。 [http://sourceforge.net/projects/phpmybackup phpMyBackupPro]也是由PHP写成的,可以透過Web介面创建和管理数据库。它可以创建伪cronjobs,可以用来自动在某个时间或周期备份MySQL 数据库。

相关链接


- [http://www.mysql.com/ MySQL官方主页]
- [http://dev.mysql.com/ MySQL开发者主页] Category:数据库软件 Category:自由软件 ja:MySQL ko:MySQL th:MySQL

开放源码

开放源代码不仅仅只是软件源代码而已,它们也攸关
自由、分享和社群精神;创作、美和黑客所谓的“有趣”。
它们也攸关人人心中的密码,是我们心中至善的根源,
反抗至恶,永世长存。
开放源代码软件就是在开放源代码许可证下发布的软件,以保障软件用户自由使用及接触源代码权利。这同时也保障了用户自行修改、复制以及再分发的权利。简而言之,所有公布软件源代码的程序都可以称为开放源代码软件。 开放源代码有时不仅仅指开放源代码软件,它同时也是一种软件开放模式的名称。使用开放源代码开放模式的软件代表就有Linux操作系统。开放源代码开放模式的名字及其特点最早是由美国电脑黑客 埃里克·斯蒂芬·雷蒙在他的著作《大教堂与市集》(The Cathedral and the Bazaar)等一系列论文集中提出并探讨的。 严格地说来,开放源代码软件与自由软件是两个不同的概念,只要符合开源软件定义的软件就能被称为开放源代码软件(开源软件)。自由软件是一个比开源软件更严格的概念,因此所有自由软件都是开放源代码的,但不是所有的开源软件都能被称为“自由”。但在现实上,绝大多数开源软件也都符合自由软件的定义。比如,遵守GPLBSD许可的软件都是开放的并且是自由的。 开放源代码软件运动是一个主要由程序工程师及其它电脑用户参与的声势浩大的运动。它是自由软件运动的一个分支,但两者的差别并不明显。一般而言,自由软件运动是基于政治及哲学思想(有时被称为所谓黑客文化)的理想主义运动,而开放源代码运动则主要注重程序本身的质量提升。

重要人物


- Richard Stallman——自由软件运动的精神领袖
- Linus Torvalds——Linux操作系统的创造者
- Eric Raymond——开放源代码运动理论家,Fetchmail软件的创造者,《大教堂与市集》的作者

组织及协作计划


- Linux——第一个采用开放源代码软件开放模式的软件协作计划
- Debian——开放源代码开放模式下的Linux套件
- Mozilla——开放源代码的浏览器
- OpenOffice.org——开放源代码的办公软件
- OpenBSDFreeBSDNetBSD——三个不同的开放源代码UNIX版本
- 开放源代码促进会(Open Source Initiative)——促进开放源代码运动发展的组织
- OSDN——专门发布与开放源代码运动有关新闻的网站

介入开源运动发展的企业


- 红帽公司(Red Hat)——最大的Linux套件发行商
- 苹果电脑(Apple)——开放了该公司操作系统Mac OS的内核Darwin的源代码
- IBM——协助发展多项开放源代码计划
- 网景公司(Netscape)——协助发展Mozilla计划
- Sun微系统公司——发表了Java语言源代码,并协助发展OpenOffice.org计划
- 红旗Linux--中国最大的Linux发行商

开源软件基础


- 操作系统
  - Linux
    - Redhat
    - OpenLinux
    - Suse
    - Slackware
    - Debian
  - BSD
    - NetBSD
    - FreeBSD
    - OpenBSD
- 协议基础
  - 高层协议
    - TCP/IP Suite
    - 分布式协议
      - CORBA
      - DCOM
      - RMI
    - 中间件协议
      - XSTP
  - 底层协议
    - OSI模型
    - SNA模型
    - APPN模型
- 开源软件语言
  - 表现层语言(HTML, CSS, XML)
  - 脚本语言(XSL, TCL, PHP, JavaScript, Perl, Python),不同于前三者,其中Perl, Python偏向系统语言。
  - 系统语言(C/C++, Java)

部分开源软件


- Eclipse——最强大的软件开发平台,尤其是对 Java 开发
- GNU Emacs——非常强大的文本编辑软件
- TeX——强大的排版软件
- XFree86,Xorg——用于UNIX/Linux系统的图形用户软件
- Apache——非常流行的HTTP服务器
- GNU GCC——开源的多种语言编译器
- Zope——最优秀的应用服务器
- Plone——内容管理系统 更详细的列表请参见开放源代码软件列表

参见


- 万圣节文件
- 内容开放
- 开放法律
- 开放源代码软件列表
- Sourceforge

外部链接


- [http://www.infonomics.nl/FLOSS/report/ 欧盟关于开放源代码软件使用情况的报告]
- [http://www.oreilly.com/catalog/opensources/book/toc.html <<开源软件文集>>英文版]
- [http://www.opensource.org 开放源代码促进会]

参考文献


- 葛林.穆迪(Glyn Moody)著,杜默译,Linux传奇:让比尔盖茨坐立难安的天才,时报文化2001年台北,ISBN 9571333628 Category:自由软件 ja:オープンソース ko:오픈 소스 simple:Open source th:โอเพนซอร์ส

瑞典

瑞典王国是一个位于斯堪的纳维亚半岛的北欧国家。它西邻挪威,东北与芬兰接壤, 濒临波罗的海卡特加特海峡。瑞典人口稀少,国土大部分为森林和山地。
Konungariket Sverige
瑞典国旗 瑞典国徽
()(大圖)
皇家格言: För Sverige i tiden
(For Sweden - With the times)
image:LocationSweden.png
官方语言 无(瑞典语为事实上的全国语言)
首都斯德哥尔摩
国王卡尔十六世古斯塔夫
首相戈兰·佩尔松(Göran Persson)
国土面积
 - 总计
 - % 水域
第54位
449,964 km²
8.67%
人口
 - 总计 (2000年)
 - 密度
第82位
8,875,053
20/km²
统一:900-1200
货币瑞典克朗(Svensk krona)
时区UTC +1
国歌你古老的光荣的北国山乡(Du gamla, Du fria)
互联网国家域名.SE
国际电话区号46

历史

请参看:瑞典历史 根據考古學家的研究,隨著冰河時期內陸積雪漸漸溶解,瑞典一帶地區石器时代已有人聚居。他們居住在波羅的海附近,主要以打獵、蒐集、捕魚為生。 貿易活動的遺跡顯示瑞典南部青铜时代人口已頗為稠密。 九至十世紀時,瑞典地區發展出維京文化,以貿易、侵略、殖民等方式向東發展,影響的地區包括波罗的海俄羅斯黑海。 公元1389年挪威丹麥、瑞典三國共戴君主,唯各國仍維持國家的身分,史稱卡爾馬(Kalmar)聯盟。15世紀起,瑞典人極力抗拒丹麥吞併的企圖。1521年,瑞典國王古斯塔夫一世(Gustav Eriksson Vasa)再次建立王權,瑞典從聯盟中獨立。 17世紀時瑞典在三十年戰爭(1618-1648)中躍升成為歐洲強國。18世紀大北方戰爭(1700年-1721年)後俄國取代瑞典在歐洲的地位,1809年芬蘭更從瑞典分裂出來成為俄國的大公國。 瑞典的近代史比較平靜。最近期的一次是1814年與挪威的戰事。該戰後兩國組成由瑞典主導的聯盟,1905年解散。瑞典在两次世界大戰中均保持中立。冷戰時期沒有向兩大陣營靠攏。瑞典不是軍事組織的成員,但會參與北约的軍事訓練。 1901年,第一屆诺贝尔奖頒獎禮在瑞典斯德哥尔摩皇家音樂學院舉行。1902年開始諾貝爾獎由瑞典國王頒授。 瑞典在第一次世界大战第二次世界大战都维持中立。可是,1995年放弃中立主义,加入欧盟

政治

请参看:瑞典政治

行政区域

请参看:瑞典行政区域 瑞典1997年和1998年进行了2项省份合并,目前划分为21个省和289个市(2000年)。有21個行政區域。地方行政局由政府任命。行政區有區議會,議員為市代表。行政區由市組成,2002年全國共有市289個。
- 布莱金厄省(Blekinge) 首府:卡尔斯克鲁纳 Karlskrona
- 达拉纳省(Dalarnas) 首府:法伦 Falun
- 耶夫勒堡省 Gävleborgs 首府:耶夫勒 Gävle
- 哥得兰省 Gotlands 首府:哥得兰 Gotland
- 哈兰省 Hallands 首府:哈尔姆斯塔德 Halmstad
- 耶姆特兰省 Jämtlands 首府:厄斯特松德 Östersund
- 延雪平省 Jönköpings 首府:延雪平 Jönköping
- 卡尔马省 Kalmar 首府:卡尔马 Kalmar
- 克鲁努贝里省 Kronobergs 首府:韦克舍 Växjö
- 北博滕省 Norrbottens 首府:吕勒奥 Luleå
- 厄勒布鲁省 Örebro 首府:厄勒布鲁 Örebro
- 东约特兰省 Östergötlands 首府:林雪平 Linköping,北雪平 Norrköpping
- 斯科耐省Skåne 首府:马尔默 Malmö
- 南曼兰省 Södermanlands 首府:尼雪平 Nyköping
- 斯德哥尔摩省 Stockholms 首府:斯德哥尔摩 Stockholm
- 乌普萨拉省 Uppsala 首府:乌普萨拉 Uppsala
- 韦姆兰省 Värmlands 首府:卡尔斯塔德 Karlstad
- 西博滕省 Västerbottens 首府:于默奥 Umeå
- 西诺尔兰省 Västernorrlands 首府:海讷桑德 Härnösand
- 西曼兰省 Västmanlands 首府:韦斯特罗斯 Västerås
- 西约特兰省 Västra Götalands 首府:哥德堡 Göteborg

地理

请参看:瑞典地理

经济

请参看:瑞典经济 瑞典经济 20世紀,瑞典在國際中保持中立,本土相對和平穏定,瑞典实行的資本主義制度不同于美国,有完善的福利保障制度,具有“高工资、高税收、高福利”的特点,在20世纪60年代到90年代,瑞典经济飞速发展,人民生活水平得以大大提高。 瑞典人口稀少,不足九百万,从宏观经济的角度看是一个微不足道的市场,这一特点决定了對外貿易對瑞典尤其重要,主要天然資源有森林、水力發電、鐵礦等。 私有企業佔工業生產九成,其中50%是輸出或輸入的工程項目。農業只佔2%的國內生產總值;全國亦只有2%的就業人口從事農業生產。因政府着力緊縮開支,2001年有大額盈餘;但2002的盈餘因全球經濟衰退而大幅下降一半。 通信机械制造建筑工程运输业是瑞典重要的基础产业。 瑞典有很多国际知名的品牌,沃尔沃汽车、萨博汽车和武器、爱立信伊莱克斯电器、ABB、利乐无菌包装、哈苏相机、宜家家具和H&M服装等等。按人口比例计算,瑞典是世界上拥有跨国公司最多的国家。

人口

请参看:瑞典人口 瑞典的人均壽命高,出生率低。二次大戰後大量移民湧入,情況與戰前相反。現該國12%的人口出生地不在瑞典,五分之一人口是移民或移民的後代。移民多數來自芬蘭、前南斯拉夫伊朗、挪威、丹麥、波蘭,反映了北歐人口流動性高、早期勞工移民及後期的難民潮等現象。 最早的移民是芬蘭人。第二次世界大戰時約70,000芬蘭兒童放逐到瑞典,其中15,000戰後居留瑞典。1950-60年代,戰後的芬蘭經濟陷入困境,大量的芬蘭失業者走到經濟起飛的瑞典。高峰時期瑞典有400,000芬蘭人。1973年能源危機,瑞典失業人數上升,芬蘭從與鄰國蘇聯的貿易中得益,留瑞芬人漸降至200,000人。 瑞典語屬日耳曼语系,與丹麦语挪威语有關係,但發音與寫法均相異。英語是最普遍的第二語言,尤其是50歲以下的人。瑞典語無疑是最普遍的語言,所以官方語言似乎是多餘的政治議題。

文化


- 外連
  - [http://www.uu.se 乌普萨拉大学]
  - [http://www.lu.se 隆德大学]
  - [http://www.gu.se 哥德堡大学]
  - [http://www.su.se 斯德哥尔摩大学]
  - [http://www.uu.se 于默奥大学]
  - [http://www.liu.se 林雪平大学]
  - [http://www.kth.se 皇家工学院]
  - [http://www.chalmers.se 查尔姆斯工学院]
  - [http://www.ki.se 卡洛林斯卡医学院]
  - [http://www.sse.se 斯德哥尔摩经济学院]
- 20世纪末爱尔兰的文化成就
  - ABBA
  - The Ace of Base

節日

瑞典的假期主要是天主教節日及傳統節日如仲夏节(Midsummer)及沃尔帕吉斯夜(Walpurgis Night)。各大的節日同時也是國旗日,家家戶戶會掛起國旗。瑞典人亦會根據名字日日曆掛起國旗。6月6日是瑞典的國慶日,但以前并不是正式的假期,直到2005年首次成为正式假期。

教育

体育

足球冰球, 滑雪

參见

外部鏈接


- [http://www.xzqh.org/waiguo/europe/2018.htm WWW.XZQH (行政区划) 瑞典网页 中文] category:瑞典 als:Schweden fiu-vro:Roodsi [[got:

网站

網站(Website)是指在網際網路上,根據一定的規則,使用HTML等工具製作的用於展示特定內容的相關網頁的集合。簡單地說,網站是一種通訊工具,就像布告欄一樣,人們可以通過網站來發布自己想要公開的資訊,或者利用網站來提供相關的網路服務。人們可以通過網頁瀏覽器來訪問網站,獲取自己需要的資訊或者享受網路服務。 許多公司都擁有自己的網站,他們利用網站來進行宣傳、產品資訊發布招聘等等。隨著網頁製作技術的流行,很多個人也開始製作個人主頁,這些通常是製作者用來自我介紹、展現個性的地方。也有以提供網路資訊為盈利手段的網路公司,通常這些公司的網站上提供人們生活各個方面的資訊如時事新聞旅遊娛樂經濟等。 在網際網路的早期,網站還只能保存單純的文本。經過幾年的發展,當萬維網出現之後,圖像、聲音、動畫視頻,甚至3D技術開始在網際網路上流行起來,網站也慢慢地發展成我們現在看到的圖文並茂的樣子。通過動態網頁技術,用戶也可以與其他用戶或者網站管理者進行交流。也有一些網站提供電子郵件服務。

相關主題


- 門戶網站
- 電子郵件
- 論壇
- 主頁
- 商业网站
- 個人主頁 Category:互联网 Category:網站 ja:ウェブサイト ko:웹 사이트 simple:Website

C语言

C,是一种通用的程序设计语言,它主要用来进行系统程序设计。具有高效、灵活、功能丰富、表达力强和移植性好等的特点,在程序员中备受青睐。 C语言是由UNIX的研制者丹尼斯·里奇(Dennis Ritchie)和肯·汤普逊(Ken Thompson)于1970年研制出的B语言的基础上发展和完善起来的。C语言可以广泛应用于不同的操作系统,例如UNIXMS-DOSMicrosoft WindowsLinux等。C语言是一种面向过程的语言,同时具有高级语言汇编语言的优点。在C语言的基础上发展起来的有支持多种程序设计风格C++语言,网络上广泛使用的JavaJavaScript,微软的C#等。 1983年美国国家标准委员会(ANSI)对C语言进行了标准化,于1983年颁布了第一个C语言标准草案(83 ANSI C),后来于1987年又颁布了另一个C语言标准草案(87 ANSI C)。最新的C语言标准是在1999年颁布并在2000年3月被ANSI采用的 C99 ,但由于未得到主流编译器厂家的支持,直到2004年C99 并未被广泛使用,增加了若干新特性后 C99 已经逐渐让C语言和C++分道扬镳。

C语言的特色


- C语言是系统程序语言
- C语言保留了低级语言的特性,例如涉及内存的指针。
- 使用了预处理机制,使得程序里可以通过包含例如宏处理的方式来处理源程序。 C语言的不足可以由C语言发展而来的更新的编程语言改进。Cyclone语言的拥有提防对于内存错误的特性。C++和Objective C提供了用于面向对象的编程结构。Java和C#增加了面向对象的结构使得对内存的管理自动化。

C語言的主要特性


- C語言保留了低階語言的特性,例如涉及記憶體的指针。
- C語言通過參數在函數裏傳遞數值。
- 使用了預處理機制,使得程式裏可以通過包含例如巨集處理的方式來處理根源程式
- C語言提供了一套標準庫,這些庫裏提供了十分有用的功能。 但是並不是所有的這些特性都是有效的。例如,預處理通常作爲一個獨立的程式被處理,這使得预處理的程式並不一定被完全編譯。 雖然C是高階語言,但是它同時擁有一些組合語言的特性,對其他的語言來說這是接近低階語言的特點。例如,在C語言裏,程式師可以對電腦記憶體進行管理。在默認的情況下,C語言不會對陣列的範圍進行檢查,也就是說即使陣列越界,C語言也不會作出錯誤提示。對電腦記憶體的管理使得程式员可以编出更快捷、更有效的程式,這對於設備驅動程式來說尤爲重要。但是這也使得程式容易産生令人討厭的“臭蟲”,例如緩衝器溢出錯誤。然而,這些錯誤可以由一些工具來避免。 C語言的不足可以由从C語言發展而來的更新的編程語言改進。Cyclone語言的擁有提防對於記憶體錯誤的特性。C++和Objective C提供了用於面向物件的編程結構。Java和C#增加了面向物件的結構使得對記憶體的管理自動化。 近年来,由于Java的编译技术有了极大的提高,采取许多C和C++不能采用的动态编译技术,使得Java的性能日益突出。

C语言的历史

C语言的第一次发展在1969年到1973年之间。C之所以被称为C是因为C语言的很多特性是由一种更早的被称为B语言的编程语言中发展而来的。 到了1973年,C语言已经可以用来编写Unix操作系统的内核。这是第一次用C语言来编写操作系统的内核。丹尼斯·里奇和Brian Kernighan在1978年出版了《C程序设计语言》(The C Programming Language,经常简称为“白皮书”或“K&R”)。 1980年以后,贝尔实验室使得C变得更为广泛的流行,使得C一度成为了操作系统和应用程序编程的首选。甚至到今天,它仍被广泛用于编写操作系统以及作为广泛的计算机教育的语言。但目前Java程序员的数量已经超过了C程序员和C++程序员的总和。2005年4月,C++之父称C++用户超过300万。   分析机构EvansData定期对开发人员展开调查,其调查结果与Stroustrup提出的C++正在扩张的说法相违背。EvansData的数据显示,以C++为工具的开发人员在整个开发界所占的比例由1998年春天的76%下降至2004年秋的46%。 Forrester最新的调查显示,C++、微软VisualBasic和Java是众多公司产品体系的首选语言。对100家公司的调查显示,C/C++、VisualBasic和Java在产品体系中的使用比例分别是59%、61%和66%。 http://tech.sina.com.cn/it/2005-04-25/1042592385.shtml http://www.yesky.com/SoftChannel/72343471356116992/20050425/1940294.shtml 而据路透社2004年6月报道,java程序员在那时就已经超过了420万,java程序员在一年内增长了120万。按最保守的估计,现在java程序员也有500万 http://news.ccidnet.com/pub/article/c1366_a125565_p1.html 1980年代晚期,布贾尼·斯特劳斯特卢普贝尔实验室为C语言添加了面向对象的特性.这种语言成为了C++。C++现在广泛应用的在Microsoft Windows下运行的商业应用程序的编制,然而C仍然是UNIX世界的热门编程语言。

C语言的版本

K&R C

C不断的从它的第一版本进行改进。在1978年,Kernighan和里奇的《C程序设计语言》第一版出版。它介绍了下面的有关C语言版本的特性:
- struct数据类型
- long int数据类型
- unsigned int数据类型
- 把运算符=+改为+=,依次类推。因为=+使得编译器混淆。 在以后的几年里,《C程序设计语言》一直被广泛作为C语言事实上的规范。在这本书中,C语言通常被表述成“K&R C”。(第二版的包括了ANSI C标准) K&R C通常被作为C编译器所支持的最基本的C语言部分。虽然现在的编译器并不一定都完全遵循ANSI标准,但K&R C作为C语言的最低要求仍然要编程人员掌握。但是无论怎样,现在使用广泛的C语言版本都已经与K&R C相距甚远了,因为这些编译器都使用ANSI C标准。 //....

ANSI C和ISO C

1989年,C语言被ANSI标准化。(ANSI X3.159-1989)。标准化的一个目的是扩展K&R C。这个标准包括了一些新的特性。在K&R出版后,一些新的特征被“非官方”的加到C语言中。
- void函数
- 函数返回structunion类型
- void
-
数据类型 在ANSI标准化自己的过程中,一些新的特征被加了进去。ANSI也标准了函数库。ANSI C标准被ISO国际标准化组织)采纳成为ISO 9899。ISO的第一个版本文件在1990年出版。

C99

在ANSI标准化后,C语言的标准在一段相当的时间内都保持不变,尽管C++继续在改进。(实际上,Normative Amendment1在1995年已经开发了一个新的C语言版本。但是这个版本很少为人所知。)标准在90年代才经历了改进,这就是ISO9899:1999(1999年出版)。这个版本就是通常提及的C99。它被ANSI于2000年三月采用。 在C99中包括的特性有:
- 对编译器限制增加了,比如源程序每行要求至少支持到 4095 字节,变量名函数名的要求支持到 63 字节 (extern 要求支持到 31)
- 预处理增强了。例如:
  - 支持取参数 #define Macro(...) __VA_ARGS__
  - 使用的时候,参数如果不写,里用 #,## 这样的东西会扩展成空串。(以前会出错的)
  - 支持 // 行注释(这个特性实际上在C89的很多编译器上已经被支持了)
- 增加了新关键字 restrict, inline, _Complex, _Imaginary, _Bool
  - 支持 long long, long double _Complex, float _Complex 这样的类型
- 支持 <: :> <% %> %: %:%: ,等等奇怪的符号替代,D&E 里提过这个
- 支持了不定长的数组。数组的长度就可以用变量了。声明类型的时候呢,就用 int a[
- ] 这样的写法。不过考虑到效率和实现,这玩意并不是一个新类型。所以就不能用在全局里,或者 struct union 里面,如果你用了这样的东西,goto 语句就受限制了。
- 变量声明不必放在语句块的开头,for 语句提倡这么写 for(int i=0;i<100;++i) 就是说,int i 的声明放在里面,i 只在 for 里面有效。
- 当一个类似结构的东西需要临时构造的时候,可以用 (type_name) 这有点像 C++ 的构造函数
- 初始化结构的时候现在可以这样写: struct hehe[] = ; struct hehe = // 3,4 是对 .c,.d 赋值的
- 字符串里面,\u 支持 unicode 的字符
- 支持 16 进制的浮点数的描述
- 所以 printf scanf 的格式化串多支持了 ll / LL (VC6 里用的 I64) 对应新的 long long 类型。
- 浮点数的内部数据描述支持了新标准,这个可以用 #pragma 编译器指定
- 除了已经有的 __line__ __file__ 以外,又支持了一个 __func__ 可以得到当前的函数名
- 对于非常数的表达式,也允许编译器做化简
- 修改了对于 / % 处理负数上的定义,比如老的标准里 -22 / 7 = -3, -22 % 7 = -1 而现在 -22 / 7 = -4, -22 % 7 = 6
- 取消了不写函数返回类型默认就是 int 的规定
- 允许 struct 定义的最后一个数组写做 [] 不指定其长度描述
- const const int i; 将被当作 const int i; 处理
- 增加和修改了一些标准头文件, 比如定义 bool 的 定义一些标准长度的 int 的 定义复数的 定义宽字符的 有点泛型味道的数学函数 跟浮点数有关的 里多了一个 va_copy 可以复制 ... 的参数。 里多了个 struct tmx 对 struct tm 做了扩展
- 输入输出对宽字符还有长整数等做了相应的支持 但是各个公司对C99的支持所表现出来的兴趣不同。当GCC和其它一些商业编译器支持C99的大部分特性的时候,微软Borland却似乎对此不感兴趣。

C语言的Hello World程序

下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序: #include   int main(void)

进一步了解C

C语言由函数和变量组成。C的函数就像是Fortran中的子程序和函数。 在C语言中,程序从main开始执行。main函数通过调用和控制其他函数进行工作。例如上面的printf。程序员可以自己写函数,或从库中调用函数。在上面的return 0;使得main返回一个值给调用程序的外壳,表明程序已经成功运行。 一个C语言的函数由返回值、函数名、参数列表(或void表示没有返回值)和函数体组成。函数体的语法和其它的复合的语句部分是一样的。

复合语句

C语言中的复合语句的格式为: 复合语句可以使得几个语句变成一个语句。 但一般情况下,我们不推荐这样多个语句顺序书写, 因为这样会使其可读性减弱,加大代码维护难度。

条件语句

C语言有三种条件语句形式。两种是if,另一种是switch。 两种if包括: if (条件表达式) 语句; 以及 if (条件表达式) 语句; else 语句; 在条件表达式中,任何非零的值表示条件为真;如果条件不满足,程序将跳过if后面的语句,直接执行if后面的语句。但是如果if后面有else,则当条件不成立时,程序跳到else处执行。 switch通常用于对几种有明确值的条件进行控制。它要求的条件值通常是整数或字符。与switch搭配的条件转移是case。使用case后面的标值,控制程序将跳到满足条件的case处一直往下执行,直到语句结束或遇到break。通常可以使用default把其它例外的情况包含进去。如果switch语句中的条件不成立,控制程序将跳到default处执行。switch是可以嵌套的。 switch (<表达式>)

循环语句

C语言有三种形式的循环语句: do <语句> while (<表达式>); while (<表达式>) <语句>; for (<表达式1> ; <表达式2> ; <表达式3>) <语句>; whiledo中,语句将执行到表达式的值为零时结束。在do...while语句中,循环体将至少被执行一次。这三种循环结构可以互相转化: for (e1; e2; e3) s; 相当于 e1; while (e2) 当循环条件一直为真时,将产生死循环。

跳转语句

跳转语句包括四种:goto,continue,break和returngoto语句是无条件转移语句: goto 标记 标记必须在当前函数中定义,使用“标记:”的格式定义。程序将跳到标记处继续执行。由于goto容易产生阅读上的困难,所以应该尽量少用。 continue语句用在循环语句中,作用是结束当前一轮的循环,马上开始下一轮循环。 break语句用在循环语句或switch中,作用是结束当前循环,跳到循环体外继续执行。但是使用break只能跳出一层循环。在要跳出多重循环时,可以使用goto使得程序更为简洁。 当一个函数执行结束后要返回一个值时,使用returnreturn可以跟一个表达式或变量。如果return后面没有值,将执行不返回值。

在C99中运算符号

数据类型

基础数据类型

注意:以下是典型的数据位长和范围。但是编译器可能使用不同的数据位长和范围。这取决于使用的编译器。请参考具体的参考手册。 在头文件中说明了基础数据的长度。float,double和long double的范围就是在IEEE 754标准中提及的典型数据。

数组

如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NUL作为数组的结束。 例如: :int myvector [100]; :char mystring [80]; :float mymatrix [3] [2] = :int notfull [3][3] = (
- ) :char lexicon [10000] [300] ; /
- 共一万个最大长度为300的字符数组。
- / :int a[3][4];
上面最后一个例子创建了一个数组,但也可以把它看成是一个多维数组。注意数组的下标从0开始。这个数组的结构如下:
例子(
- )创建了一个3
- 3的二维数组,初始化时有些元素并未赋值.如下: :1 0 0 :1 2 3 :4 5 0
为0的位置的数值是随机的.

指针

如果一个变量声明时在前面使用
- 号,表明这个变量是一个指针。 例如: :int
- pi; /
- 指向整型数据的指针
- / :int
- api[3]; /
- 由指向整型数据的指针构成的数组,长度为3
- / :char
  - argv; /
- 指向一个字符指针的指针
- /
储存在指针中的地址所指向的数值在程序中可以由
- 读取。例如,在第一个例子中,
- pi
是一个整型数据。这叫做引用一个指针。 另一个运算符&,叫做取地址运算符,它将返回一个变量、数组或函数的存储地址。因此,下面的例子: :int i,
- pi; /
- int and pointer to int
- / :pi = &i;
i和
- pi
在程序中可以相互交替使用,直到pi被改变成指向另一个变量的指针。

字符串

要使用字符串并不需要引用库,但是C标准库确实包含了一些用于对字符串进行操作的函数,使得它们看起来就像字符串而不是数组。使用这些函数需要引用头文件
- strcat(dest, source) - 连接两个字符串,把source加到dest末尾。
- strchr(s, c) -在字符串c中找出字符s第一次出现的位置。当没有找到时,返回Null。
- strcmp(a, b) - 比较字符串ab的大小。如果两个字符串相同,返回0;如果a>b,返回正数;如果a,返回负数。
- <- 把source中的n个字符追加到dest后面。null后面的值将不会被添加。
- strncmp(a, b, n) - 比较字符串abn个字符的大小。如果两个字符串相同,返回0;如果a>b,返回正数;如果a,返回负数。
- strncpy(dest, source, n) - 把字符串source拷贝到字符串dest中。(最多拷贝n个)
- strrchr(s, c) - 在s中查找最后一次出现c的位置。返回这个位置。如果找不到,返回null。

文件输入/输出

在C语言中,输入和输出是经由标准库中的一组函数来实现的。在ANSI/ISO C中,这些函数被定义在头文件中。

标准输入/输出

有三个标准输入/输出是预定义的:
- stdin 标准输入
- stdout 标准输出
- stderr 输入输出错误
这些定义在运行过程中是自动的打开和关闭的,所以它们并不需要进行显式定义。 下面的这个例子显示了一个过滤程序(filter program)是怎样构成的。 #include   int main()

传递命令行参数

在命令行赋予程序的参数将通过在main()函数中定义一个整型参数(int)和一个指向字符指针的指针型参数(char
  - )来实现,前者传递命令行参数的个数,后者传递命令行参数内容。习惯上将这两个参数分别命名为argcargv。程序文件名被作为第一个命令行参数。 对于下列程序: #include   int main(int argc, char
  - argv) 输入命令(假设该程序生成C:\TC\a.exe): a one two three 则会得到下面的输出结果:
0:C:\TC\A.EXE
1:one
2:two
3:three
C语言的标准库

以下列出由C语言提供的标准函数库,函数库通过#include进行引用。 在C89标准中:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
在95年的修正版中
-
-
-
在C99中增加了六个函数库
-
-
-
-
-
-

C语言的保留关键字

参见


- 计算机科学课程列表 ja:C言語 ko:C 프로그래밍 언어 ms:Bahasa pengaturcaraan C th:ภาษาซี

编译器

编译器,是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能识别,运行的低级机器语言的程序。编译器将源程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源程序一般为高级语言(High-level language),如PascalC++等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。 一个现代编译器的主要工作流程如下:
- 源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables])

工作原理

翻译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器言)。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。 典型的编译器输出是由包含入口点的名字和地址以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。

编译器种类

编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高级语言作为输入,输出也是高级语言的编译器。例如: 自动并行化编译器经常采用一种高级语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。

预处理器(preprocessor)

作用是通过代入预定义等程序段将源程序补充完整。

编译器前端(frontend)

前端主要负责解析(parse)输入的源程序,由词法分析器语法分析器协同工作。词法分析器负责把源程序中的‘单词’(Token)找出来,语法分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式语句函数等等。 例如“a = b + c;”前端词法分析器看到的是“a, =, b , +, c;”,语法分析器按定义的语法,先把他们组装成表达式“b + c”,再组装成“a = b + c”的语句。 前端还负责语义(semantic checking)的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树(abstract syntax tree,或 AST),这样后端可以在次基础上进一步优化,处理。

编译器后端(backend)

编译器后端主要负责分析,优化中间代码(Intermediate representation)以及生成机器代码(Code Generation)。 一般说来所有的编译器分析,优化,变型都可以分成两大类: 函数内(intraprocedural)还是函数之间(interprocedural)进行。很明显,函数间的分析,优化更准确,但需要更长的时间来完成。 编译器分析(compiler analysis)的对象是前端生成并传递过来的中间代码,现代的优化型编译器(optimizing compiler)常常用好几种层次的中间代码来表示程序,高层的中间代码(high level IR)接近输入的源程序的格式,与输入语言相关(language dependent),包含更多的全局性的信息,和源程序的结构;中层的中间代码(middle level IR)与输入语言无关,低层的中间代码(Low level IR)与机器语言类似。 不同的分析,优化发生在最适合的那一层中间代码上。 常见的编译分析有函数调用树(call tree),控制流程图(Control flow graph),以及在此基础上的 变量定义-使用,使用-定义链(define-use/use-define or u-d/d-u chain),变量别名分析(alias analysis),指针分析(pointer analysis),数据依赖分析(data dependence analysis)等等。 上述的程序分析结果是编译器优化(compiler optimization)和程序变形(compiler transformation)的前提条件。常见的优化和变新有:函数内嵌(inlining),无用代码删除(Dead code elimination),标准化循环结构(loop normalization),循环体展开(loop unrolling),循环体合并,分裂(loop fusion,loop fission),数组填充(array padding),等等。 优化和变形的目的是减少代码的长度,提高内存(memory),缓存(cache)的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至可以把序列化的代码(serial code)变成并行运算,多线程的代码(parallelized,multi-threaded code)。 机器代码的生成是优化变型后的中间代码转换成机器指令的过程。现代编译器主要采用生成汇编代码(assembly code)的策略,而不直接生成二进制的目标代码(binary object code)。即使在代码生成阶段,高级编译器仍然要做很多分析,优化,变形的工作。例如如何分配寄存器(register allocatioin),如何选择合适的机器指令(instruction selection),如何合并几句代码成一句等等。

编译语言与解释语言对比

许多人将高级程序语言分为两类: 编译型语言解释型语言 。然而,实际上,这些语言中的大多数既可用编译型实现也可用解释型实现,分类实际上反映的是那种语言常见的实现方式。(但是,某些解释型语言,很难用编译型实现。比如那些允许 在线代码更改 的解释型语言。)

历史

上世纪50年代,IBM的John Backus带领一个研究小组对FORTRAN语言及其编译器进行开发。但由于当时人们对编译理论了解不多,开发工作变得既复杂又艰苦。与此同时,Noam Chomsky开始了他对自然语言结构的研究。他的发现最终使得编译器的结构异常简单,甚至还带有了一些自动化。Chomsky的研究导致了根据语言文法的难易程度以及识别它们所需要的算法来对语言分类。正如现在所称的Chomsky架构(Chomsky Hierarchy),它包括了文法的四个层次:0型文法、1型文法、2型文法和3型文法,且其中的每一个都是其前者的特殊情况。2型文法(或上下文无关文法)被证明是程序设计语言中最有用的,而且今天它已代表着程序设计语言结构的标准方式。分析问题(parsing problem,用于上下文无关文法识别的有效算法)的研究是在60年代和70年代,它相当完善的解决了这个问题。现在它已是编译原理中的一个标准部分。 有限状态自动机(Finite Automaton)和正则表达式(Regular Expression)同上下文无关文法紧密相关,它们与Chomsky的3型文法相对应。对它们的研究与Chomsky的研究几乎同时开始,并且引出了表示程序设计语言的单词的符号方式。 人们接着又深化了生成有效目标代码的方法,这就是最初的编译器,它们被一直使用至今。人们通常将其称为优化技术(Optimization Technique),但因其从未真正地得到过被优化了的目标代码而仅仅改进了它的有效性,因此实际上应称作代码改进技术(Code Improvement Technique)。 当分析问题变得好懂起来时,人们就在开发程序上花费了很大的功夫来研究这一部分的编译器自动构造。这些程序最初被称为编译器的编译器(Compiler-compiler),但更确切地应称为分析程序生成器(Parser Generator),这是因为它们仅仅能够自动处理编译的一部分。这些程序中最著名的是Yacc(Yet Another Compiler-compiler),它是由Steve Johnson在1975年为Unix系统编写的。类似的,有限状态自动机的研究也发展了一种称为扫描程序生成器(Scanner Generator)的工具,Lex(与Yacc同时,由Mike Lesk为Unix系统开发)是这其中的佼佼者。 在70年代后期和80年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为操作太复杂而人们又对其不甚了解。 编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息;这又与更为复杂的程序设计语言的发展结合在一起。其中典型的有用于函数语言编译的Hindley-Milner类型检查的统一算法。其次,编译器已越来越成为基于窗口的交互开发环境(Interactive Development Environment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。这样的IDE标准并没有多少,但是对标准的窗口环境进行开发已成为方向。另一方面,尽管近年来在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近20年中都没有多大的改变,它现在正迅速地成为计算机科学课程中的中心环节。 在九十年代,作为GNU项目或其它开放源代码项目的一部分,许多免费编译器和编译器开发工具被开发出来。这些工具可用来编译所有的计算机程序语言。它们中的一些项目被认为是高质量的,而且对现代编译理论感性趣的人可以很容易的得到它们的免费源代码。 大约在1999年,SGI公布了他们的一个工业化的并行化优化编译器Pro64的源代码,后被全世界多个编译器研究小组用来做研究平台,并命名为Open64。Open64的设计结构好,分析优化全面,是编译器高级研究的理想平台。

参见


- 计算机科学课程列表 category:系统软件 Category:程序设计工具 ja:コンパイラ ko:컴파일러 simple:Compiler th:ตัวแปลโปรแกรม

FreeBSD

FreeBSD是一种由Unix经过BSD386BSD4.4BSD发展而来的类Unix操作系统。它运行在Intel x86 family兼容处理器DEC AlphaSun微系统UltraSPARCItanium (IA-64)和AMD64处理器上。针对PowerPC的支持正在开发中。它被普遍认为是相当可靠和健壮的。苹果电脑Mac OS X即以 Mach 为内核, 配合 FreeBSD 的驱动程序和实用工具为基础。

许可协议

FreeBSD在BSD许可协议下发布,允许任何人在保留版权和许可协议信息的前提下随意使用和发行。BSD许可协议并不限制将FreeBSD的代码在另一个协议下发行,因此商业公司可以自由地将FreeBSD代码融入它们的产品之中去。

BSD 家族

:BSD是"Berkely Software Distribution"的缩写,意思是"伯克利软件发行版"。显然,BSD这个名称并不是我们现在所理解的操作系统,而且其原意也并非简单的操作系统,而是一整套软件发行版的统称。从软件发行版到操作系统的演变是有历史过程的,这一点对FreeBSD很重要。:
- NetBSD一個著重於跨平臺特性的分支計劃
- OpenBSDNetBSD分支出的計劃,著重於安全性
- DragonflyBSD是一个由FreeBSD 4-STABLE分支出来的项目,重点在于轻量级而高效能的线程、多处理支持以及其它用户工具、第三方软件管理系统的改进。
- FreeSBIE项目提供FreeBSD各个发行版本的live CD,类似于基于LinuxKnoppix项目
- Frenzy是另一个基于FreeBSD的live CD项目,主要针对俄语用户
- BSDeviant是一个FreeBSD的live CD项目,目的在于产生可以存在一张迷你CD-R上的系统
- PicoBSD為了在單張1.44MB磁片執行而設計的FreeBSD精簡版本
- Darwin是苹果公司的项目、Mac OS X的基础,很大程度上使用FreeBSD的代码和工具
- m0n0wall是一个基于FreeBSD的防火墙项目
- PC-BSD為桌面/個人環境設計的BSD分支
- relaxBSD為桌面/個人環境設計的BSD分支, 由華人開發, 注重中文環境
- PC-BSD专注于桌面应用的项目

相关书籍


- Absolute BSD, The Ultimate Guide to FreeBSD. Michael Lucas. No Starch Press, July 2002. ISBN 1886411743.
- BSD Hacks, 100 Industrial-Strength tips for BSD users and administrators. Dru Lavigne. O'Reilly, May 2004. ISBN 0596006799.
- The Complete FreeBSD, 4th Edition, Documentation from the Source. Greg Lehey. O'Reilly, April 2003 ISBN 0596005164.
- The Design and Implementation of the FreeBSD Operating System. Marshall Kirk McKusick and George V. Neville-Neil. Pearson Education. ISBN 0201702452. Expected availability August 2004.
- The FreeBSD Corporate Networkers Guide. Ted Mittelstaedt. Addison-Wesley, December 2000. Paperback, book & CD edition, 401 pages. ISBN 0201704811.

参见


- BSD
- 386BSD
- DragonflyBSD
- NetBSD
- OpenBSD
- BSD小惡魔

外部链接


- [http://www.FreeBSD.org/ FreeBSD官方站点]
- [http://www.freebsdchina.org/ FreeBSD中国站点]
- [http://www.chinaunix.net/ ChinaUnix UNIX技术站点]
- [http://www.freebsd.org.cn/snap/doc/zh_CN.GB2312/books/handbook/ FreeBSD 使用手册] Category:操作系统 category:BSD ja:FreeBSD ko:FreeBSD simple:FreeBSD

Mac OS

Mac OS是一套运行于苹果Macintosh系列电脑上的操作系统。Mac OS是首个在商用领域成功的图形用户界面。Macintosh组包括比尔·阿特金森(Bill Atkinson)、杰夫·拉斯金(Jef Raskin)和安迪·赫茨菲尔德(Andy Hertzfeld)。现行的最新的系统版本是Mac OS X v10.4.3版。 关于Macintosh是如何被开发和潜在创意的起源,有许多种观点。历史记录里把Macintosh和施乐公司(Xerox)帕洛阿尔托研究中心(PARC)的Alto计划联系在一起,伊凡·萨瑟兰(Ivan Sutherland)的画板(Sketchpad)和道格·英格巴特(Doug Engelbart)的在线系统(On-Line System)对其早期贡献产生了不小的影响。另见GUI的历史苹果对微软的诉讼。 Mac OS可以被分成操作系统的两个系列:
- 一个是老旧且已不被支持的“Classic”Mac OS(系统搭载在1984年销售的首部Mac与其后代上,终极版本是Mac OS 9)。采用 Mach 作为內核,在OS 8以前用“System x.xx”来称呼。
- 新的Mac OS X结合BSD UnixOpenStep和Mac OS 9的元素。它的最底层建基于Unix基础,其代码被称为Darwin,实行的是部分开放源代码

Classic Mac OS

“classic”Mac OS的特点是完全没有命令行模式,它是一个100%的图形操作系统。预示它容易使用,它也被指责为几乎没有内存管理协同式多任务(cooperative multitasking)和对扩展冲突敏感。“功能扩展”(Extensions)是扩充操作系统的程序模块,譬如:附加功能性(例如:网络)或为特殊设备提供支持。某些功能扩展倾向于不能在一起工作,或只能按某个特定次序载入。解决Mac OS的功能扩展冲突可能是一个耗时的过程。 Mac OS也引入了一种新形的文件系统,一个文件包括了两个不同的“分支”(forks)。它分别把参数存在“资源分支”(resource fork),而把原始数据存在“数据分支”(data fork)里,这在当时是非常创新的。但是,因为不能识别此系统,这让它与其它操作系统的沟通成为挑战。 Mac OS 9 使用 B+ 树结构的文件系统进行文件管理. …… 协同式多任务

Mac OS X

为了挽救这种情况,Mac OS X使用基于BSD Unix内核,并带来Unix风格的内存管理和抢占式多任务处理(pre-emptive multitasking)。大大改进内存管理,允许同时运行更多软件,而且实质上消除了一个程序崩溃导致其它程序崩溃的可能性。这也是首个包括“命令行”模式的Mac OS,除非执行单独的“终端”(terminal)程序,否则你可能永远也见不到。但是,这些新特征需要更多的系统资源,按官方的说法Mac OS X只能支持G3以上的新处理器(它在早期的G3处理器上执行起来比较慢)。Mac OS X有一个兼容层负责执行老旧的Mac应用程序,名为Classic环境(也就是程序员所熟知的“蓝盒子”[the blue box])。它把老的Mac OS 9.x系统的完整拷贝作为Mac OS X里一个程序执行,但执行应用程序的兼容性只能保证程序在写得很好的情况里在当前的硬件下不会产生意外。

Mac OS 技术


- QuickDraw:首个供应大众市场所见即所得的成像模型
- Finder:浏览文件系统和执行应用程序的界面
- MultiFinder:首个支持多任务软件执行的版本
- Chooser:访问网络资源的工具(例如:开启AppleTalk)
- ColorSync:确保颜色匹配的技术
- Mac OS内存管理:在转到UNIX前管理Mac内存虚拟内存的方式
- PowerPC模拟执行Motorola 68000:Mac处理从CISCRISC结构转变的方式(请看Mac 68K模拟器)
- 桌面附件:在MultiFinder 或System 7出现前,与其它软件协作运行的小“助手”软件。

Mac OS X 相关


- Mac OS X它的历史
- Mac OS X Server

软件

请看Macintosh软件列表 另见:Mac OS历史OS主张

外部链接


- [http://www.kernelthread.com/mac/oshistory/ 苹果操作系统的历史] (来自kernelthread.com):英语
- [http://www.apple.com.cn/macosx/ 来自苹果的Mac OS X资料]:简体
- [http://www.apple.com.tw/macosx/ 來自蘋果的Mac OS X資訊]:繁体
- [http://www.apple.com/macosx/ 来自苹果的Mac OS X资料]:英文 Category:操作系统 Category:苹果电脑 Category:視窗系統 ja:Mac OS ko:맥 오에스 ms:Mac OS simple:Mac OS th:แมคโอเอส

OpenBSD

OpenBSD是一个BSD操作系统,支持多平台,源于NetBSD。OpenBSD由NetBSD的前核心成员Theo de Raddt1995年10月正式发起,致力于成为最安全的操作系统。

参见


- NetBSD1
- FreeBSD
- DragonflyBSD Category:操作系统

相關網站


- [http://www.openbsd.org/ OpenBSD官方網站] category:BSD ja:OpenBSD ko:OpenBSD simple:OpenBSD

OS/2

OS/2是Operating System 2的缩写,意思为第二代的操作系统。在DOS于PC上的巨大成功后,以及GUI图形化界面的潮流影响下,IBM和Microsoft共同研制和推出了OS/2这一当时先进的个人电脑上的新一代操作系统。最初它主要是由Microsoft开发的,由于在很多方面的差别,微软最终放弃了OS/2而转向开发Windows“视窗”系统。OS/2则由IBM独自开发,在发行了若干个版本后,最大规模的发行版本是于1994年发行的OS/2 Warp 3.0,是取名一个电影中的角色名称,这个版本是第一个运行于X86体系的PC之上的32位操作系统,早于微软的Windows 95上市。Warp改进了按照界面和加强了对外设的驱动支持,还随系统包含了一组名为“Bonus Pak”,里面有12种应用程序,如字处理和传真软件等等。随后的升级版本是OS/2 Warp 3 Connect——一个加强了网络支持的版本。而代号MerlinOS/2 Warp 4,这是最后一个公开发行的OS/2的版本。在与Windows的竞争中,OS/2最终失败了。随后IBM也发行了若干个版本的升级,但仅仅是小范围的使用。据说在金融和银行等行业中,有部分系统依旧在使用OS/2。 OS/2 的新希望是在 1999 年由 Serenity Systems International 公司取得 IBM 的 OEM 合約,重新打造出 eComStation 1.0,並廣受好評,許多舊的 OS/2 系統紛紛升級到 eComStation。而目前最新的版本是 eComStation 1.2,中文版也已進入測試階段,成為 IBM 終止 OS/2 支援之後,OS/2 用戶的唯一希望。明年預計推出 eComStation 2.0,也已在測試階段。新版的 eComStation 支援 AMD 64 位元 CPU 及可開機的 JFS 檔案系統。 category:操作系統 ja:OS/2

Solaris

Sun公司研制的UNIX操作系统。现在最新的为Solaris10。 由于Sun Microsystem的创始人来自U.C.Berksley,早期的Solaris是由BSD系列发展而来。但是随着时间的推移,Solaris现在在接口上正在渐渐向System V靠拢。 Solaris运行在两个平台:Intel x86及SPARC/UltraSPARC。后者是Sun工作站使用的处理器。 因此,虽然Solaris在SPARC上拥有强大的处理能力和硬件支持,但是在Intel x86上性能却未如人意。 Solaris已开放其源代码,详见 http://www.opensolaris.org/os/ . category:操作系统 ja:Solaris ko:솔라리스 운영체제 th:โซลาริส

Windows

Microsoft Windows(微软视窗)是一个为个人电脑服务器用户设计的操作系统。它的第一个版本由微软公司发行--1985年,并最终获得了世界个人电脑操作系统软件的垄断地位。所有最近的Windows都是完全独立的操作系统。

Windows家族

1985年 1985年 Windows这个词用于一系列不同的产品,它们可以划分为一些四个类别:
- 16位操作环境:这些产品只是提供了一个图形用户界面或桌面,还要有一个独立的操作系统提供必要的服务,例如读取磁盘服务、显示器和键盘的输入等等。这个系列的产品包括Windows 1.01985年)、Windows 2.0(1987年)以及它的近似产品Windows 286Windows 386Windows 3.0Windows 3.1。它们都不能脱离DOS运行。
- 混合的16/32位操作环境:这个系列的Windows是16位的Windows的升级版本,仍然需要DOS操作系统才能运行,但是由于和微软的MS-DOS组件整合在一起作为一个整体来发售,这样就不用再单独购买MS-DOS以运行Windows了。这个系列包括Windows 95(第一版发行于1995年,后来的改进版本发行于1996年1997年),以及三个版本的Windows 981998年1999年2000年)。这三个版本最终发展成为Windows ME。但是它作为Windows 98家族的资格并没有在广告上出现。
- 32位操作系统环境:起初是为更高性能的商业市场设计而编写的独立的32位操作系统。这个系列包括Windows NT 3.1(1992年)、NT 3.5、NT 3.51、NT 4.0、Windows 2000Windows XP等。
- 64位操作系统环境:最新的Windows版本开始采用64位操作系统环境,虽然不管是IntelEM64T还是AMD的x86-64在本质上都是一种32位扩展指令集,兼容英特尔的EM64T扩展指令集和AMD的x86-64指令集(Intel的EM64T其实是其兼容指令集)。这个系列的产品包括Windows XP 64位版和Windows Server 2003 64位版。IA-64是Intel的安腾处理器使用的完全不同的纯64位RISC指令集,在32位兼容模式下性能极为低下而且基本不兼容现有的x86软件,故和现有桌面平台所谓的64bit指令集是完全不同的概念,Microsoft仅仅有Windows 2000 Advanced Server Limited Edition这个限量版的基于IA-64指令集的系统和一个非常罕见的Windows2003Sever for IA-64版本。

Windows的發展史

Windows起源可以追溯到Xerox公司所進行的研發工作。1970年,美國Xerox公司成立了著名的研究機構Palo Alto Research Center(PARC),從事區域網路雷射印表機圖形使用者介面(Graphic User Interface,縮寫:GUI)和物件導向(Object-Oriented)技術的研究,並於1981年宣佈推出世界上第一個商用的GUI系統:Star 8010工作站。但由於種種原因,此技術上的領先並未得到充份的重視,也沒有進一步做商業化的應用。 然而Apple Computer公司的創始人之一Steve Jobs在參觀Xerox公司的PARC研究中心後,認識到了GUI的重要性以及廣闊的市場前景,於是開始著手進行自己的GUI系統研發工作,並於1983年研發成功第一個GUI系統:Lisa。不久,Apple又推出第二個GUI系統:Macintosh,這是世界上第一個成功的商用GUI系統。Apple公司在開發Macintosh時,出於市場戰略上的考量,只開發了能於Apple公司自己的電腦上作運作的GUI系統,但當時,基於Intel x86微處理器晶片的IBM兼容電腦已漸露頭角,因此就給了Microsoft公司所開發的Windows生存空間和市場。 Intel x86Microsoft公司早就意識到建立業界標準的重要性,在1983年春季就宣佈開始研究開發Windows,希望它能夠成為基於Intel x86微處理晶片電腦上的標準GUI操作系統。它在1985年1987年分別推出Windows 1.03版和Windows2.0版。但是,由於當時硬體和DOS操作系統的限制,這兩個版本並沒有取得很大的成功。此後,Microsoft公司對Windows的RAM管理、GUI做了重大改進,使GUI更加美觀並支持虛擬記憶體。Microsoft於1990年5月份推出Windows 3.0並一炮而紅。這個「千呼萬喚始出來」的操作系統一面世便在商業上取得驚人的成功:不到6周,Microsoft公司銷出了50萬份Windows 3.0,打破了任何軟體產品的6周銷售記錄,從而一舉奠定了Microsoft在操作系統上的壟斷地位。後來更因此在1994年時被Apple公司控告侵權,展開了著名的“look and feel”訴訟官司。 自Windows 95Windows NT4.0以來,這個系統最明顯的特徵是桌面。微軟設計的桌面大大改變了人機交流的界面,使得更多普通的任務只需要少量的電腦知識就可以勝任了,甚至一些比較複雜的任務。但是Windows界面也使得用戶和計算機的內部工作隔離開來,使得用戶控制和設置計算機變得更加困難(這或多或少是由於現代操作系統功能和復雜性不斷增長以及不斷有大量低水平的電腦人員的增長所帶來的必然)。 Windows獲得了巨大的市場成功。估計現在有90%的個人電腦使用這個系統。但是用戶也很難選擇其它的操作系統,因為在他們花錢購買電腦的時候他們的電腦已經有了Windows系統,而他們必須刪除了Windows之後纔能安裝別的系統(通常是免費的系統)。因此,無論是它的市場佔有率或為了實現保持市場主導位置的活動都是極富爭議性的。 Windows XPWindows Server 2003是現在最新的Windows版本。Windows Server 2003有四個版本:Windows Server 2003 Web服務器版本(Web Edition)、 Windows Server 2003標准版(Standard Edition)、 Windows Server 2003企業版(Enterprise Edition)以及Windows Server 2003數據中心版(Datacenter Edition)。Web Edition主要是為網頁服務器(web hosting)設計的,而Datacenter是一個為極高端系統使用的。標准和企業版本則介於兩者中間。 Windows CE系統是1996年開始設計的一款專門針對嵌入式設備設計的操作系統,最開始的時候微軟打算在Windows 98Windows NT的基礎上修改,但是項目進行不順利,後來經過全新設計產生了Windows CE系列產品其中包括後來的PocketPC以及Smartphone,嚴格的說Windows CE只是一個操作系統的核心,在這個核心的基礎上發展了針對不通設備的不同版本的操作系統。 微軟有一系列主動的計劃:.NETPalladium以及Windows Vista(开发代号Longhorn)操作系統。有人認為.NETWindows Vista是微軟希望從Windows中轉移開來。有人推想這樣將可能幫助微軟避免遭到像反托拉斯那樣的後果。也可以宣稱微軟的下一代產品將是全新的產品,而不是Windows的後續版本。

为特殊设备设计的版本


- 为个人数字助理设计的Pocket PC
- 为移动电话设计的Smartphone
- 为笔记本电脑及触摸式屏幕设计的Tablet PC
- 为DEC Alpha、IBM PowerPC和MIPS systems设计的Windows NT。(在2000年后都废止了)
- 为掌上电脑设计的Windows CE
- 为家庭媒体中心设计的Windows XP Media Center Edition
- 為XBOX遊戲機設計的版本,名為 Dashboard,但實為 Windows 2000修改而成。

参看


- 微软
- Microsoft Windows的历史
- Windows API
- Windows XP 常用快速鍵列表
- .NET Framework
- 硬件:WinHEC
- 操作系统列表
  - Linux
  - Unix
  - Mac OS X
  - ReactOS Category:操作系统 Category:視窗系統 ja:Microsoft Windows ko:마이크로소프트 윈도우즈 ms:Microsoft Windows simple:Microsoft Windows th:ไมโครซอฟท์วินโดวส์ zh-min-nan:Microsoft Windows

操作系统

操作系统(Operating System,简称OS) 是计算机系统中负责支撑应用程序运行环境以及用户操作环境的系统软件,同时也是计算机系统的核心与基石。 它的职责通常(但并非绝对)包括对硬件的直接监管、对各种计算资源(如内存、处理器时间等)的管理、以及提供诸如作业管理之类的面向应用程序的服务等等。 操作系统的理论是计算机科学中一个古老而又活跃的分支,而操作系统的设计与实现则是软件工业的基础与核心。

今天的操作系统 

到2005年6月为止,用于通用计算机上的分布的操作系统主要两个家族:类Unix家族和微软Windows家族。 主机系统和嵌入式操作系统使用多样的系统,并且很多和Windows和Unix都没有直接的联系。 类Unix家族包括多个组织的操作系统,其中有几个主要的子类包括System V,BSD和Linux。这里'Unix'是一个商标,开发组织允许使用操作系统在一个定义前提下自由地开发。这名字是通用大型设置操作系统类似组织Unix。Unix系统运行在从巨型机到嵌入式系统的多种机器架构上。Unix 主要使用于重要的商务服务器系统以及学院和工程环境中的工作站之上。和Unix不同,自由软件比如Linux 和 BSD 逐步开始流行,并且开始进入桌面操作系统领域。和一些Unix操作系统不同,像惠普公司的HPUX和IBM公司的AIX是设计仅运行在客户购买的设备上,其中有一些特殊的(比如SUN公司的Solaris)可以运行在客户购买设备和基于工业标准的PC上。APPLE公司的Mac OS X是一个BSD特例,以取代早期小型市场上的苹果公司Mac OS,众多流行的Unix操作系统正在走向一体。 微软公司的Windows操作系统家族起源于早期的IBM PC环境中的MS-DOS,现在版本是基于新的Windows NT内核,第一次是在OS/2中制定。和Unix不同,Windows只能运行在32位和64位的x86 CPU(如Intel或者AMD的芯片)上,尽管早期有版本运行于DEC Alpha,MIPS 和 PowerPC体系结构。今天Windows是一个流行的操作系统,在全球桌面市场中占有90%左右的份额,同时在中低端服务器市场也有广泛的应用,如Web服务器和数据库服务器。 译者提示:NT是 New Technology 而不是 Network Technology,这点很多人都出现过误解. 大型机系统,比如IBM公司的Z/OS,和嵌入式操作系统比如QNX , eCOs 和 PalmOS都是和Unix和Windows无关的操作系统,而Windows CE ,Windows NT Embedded 4.0 和 Windows XP Embedded 都是和Windows相关的。 老的操作系统停留在市场包括类似IBM Windows的OS/2;来自惠普的VMS(以前的DEC);苹果公司的Mac OS操作系统,非Unix先驱苹果公司Mac OS X;和AmigaOS,第一个图形用户界面的操作系统,包括对于普通用户的高级的多媒体能力.

功能

操作系统位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界面,输入命令。操作系统则对命令进行解释,驱动硬件设备,实现用户要求。

结构

操作系统理论研究者有时把操作系统分成四大部分:
- 驱动程序 - 最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。
- 内核 - 操作系统之最核心部分,通常运行在最高特权级,负责提供基础性、结构性的功能。
- 支承库 - (亦作“接口库”)是一系列特殊的程序库,它们指责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口(API),是最靠近应用程序的部分。例如,GNU C运行期库就属于此类,它把各种操作系统的内部编程接口包装成ANSI C和POSIX编程接口的形式。
- 外围 - 所谓外围,是指操作系统中除以上三类以外的所有其他部分,通常是用于提供特定高级服务的部件。例如,在微内核结构中,大部分系统服务,以及UNIX/Linux中各种守护进程都通常被划归此列。 当然,本节所提出的四部结构观也绝非放之四海皆准。 例如,在早期的微软视窗操作系统中,各部分耦合程度很深,难以区分彼此。 而在使用外核结构的操作系统中,则根本没有驱动程序的概念。 因而,本节的讨论只适用于一般情况,具体特例需具体分析。 操作系统中四大部分的不同布局,也就形成了几种整体结构的分野。 常见的结构包括:简单结构、层结构、微内核结构、垂直结构、和虚拟机(虛擬機器Virtual Machine)结构。

简单结构

很多商用操作系统都没有清晰的整体结构,系统中的各个部件混杂在一起。 这些操作系统往往是由很小的实验性的项目逐步演化而来的,因而宏观结构非常模糊。 MS-DOS就是一个很好的例子,在设计之初,MS-DOS的设计目标是在比较有限的硬件资源上运行比较有限的应用程序,开发人员很可能都没有预料到它日后在市场上的巨大成功,因而模块之间的相对独立性几乎被忽略。 相似的情况也发生在UNIX家族之中。 早期的UNIX因为受限于当时的硬件能力,也一直都是采用非常简单的、 随着UNIX的不断发展这样结构也很快成为了UNIX演进的瓶颈。 其他采用这种简单结构的操作系统还包括PalmOS 5以前的PalmOS,以及很多其他的小型的嵌入式操作系统

层结构

微内核结构

垂直结构

虚拟机结构

分类

内核结构

:主条目: 内核 内核是操作系统最核心最基础的构件,因而,内核结构往往对操作系统的外部特性以及应用领域有着一定程度的影响。 尽管随着理论和实践的不断演进,操作系统高层特性与内核结构之间的耦合有日趋缩小之势,但习惯上,内核结构仍然是操作系统分类之常用标准。 内核的结构可以分为 单内核(monolithic kernel), 微内核(microkernel), 超微内核(nanokernel), 以及外核(exokernel)等。 详情参见操作系统内核。 单内核结构是操作系统中各核心部件杂然混居的形态,该结构于二十世纪六十年代(亦有二十世纪五十年代初之说,尚存争议),历史最长,是操作系统内核与外围分离时的最初形态。 微内核结构是二十世纪八十年代产生出来的较新的内核结构,强调结构性部件与功能性部件的分离。 二十世纪末,基于微内核结构,理论界中又发展出了超微内核与外内核等多种结构。 尽管自二十世纪八十年代起,大部分理论研究都集中在以微内核为首的“新兴”结构之上,然而,在应用领域之中,以单内核结构为基础的操作系统却一直占据着主导地位。 在众多常用操作系统之中,除了QNX和基于Mach的UNIX等个别系统外,几乎全部采用单内核结构,例如Linux,大部分的Unix,以及Windows微软声称Windows NT是基于改良的微内核架构的,尽管理论界对此存有异议)。 微内核和超微内核结构主要用于研究性操作系统,还有一些嵌入式系统使用外核。 基于单内核的操作系统通常有着较长的历史渊源。 例如,绝大部分UNIX的家族史都可上溯至二十世纪六十年代。 该类操作系统多数有着相对古老的设计和实现 (例如某些UNIX中存在着大量七、八十年代的代码)。 另外,往往在性能方面略优于同一应用领域中采用其他内核结构的操作系统 (但通常认为此种性能优势不能完全归功于单内核结构)。

通用与专用、嵌入式

实时与非实时

实时操作系统”(Real Time OS)泛指所有据有一定实时资源调度以及通讯能力的操作系统。而所谓“实时”,不同语境中往往有着非常不同的意义。某些时候仅仅用作“高性能”的同义词。但在操作系统理论中“实时性”所指的通常是特定操作所消耗的时间(以及空间)的上限是可预知的。比如,如果说某个操作系统提供实时内存分配操作,那也就是说一个内存分配操作所用时间(及空间)无论如何也不会超出操作系统所承诺的上限。实时性在某些领域非常重要,比如在工业控制、医疗器材、影音频合成、以及军事领域,实时性都是无可或缺的特性。 常用实时操作系统有QNXVxWorksRTLinux等等,而Linux、多数UNIX、以及多数Windows家族成员等都属于非实时操作系统。操作系统整体的实时性通常依仗内核的实时能力,但有时也可在非实时内核上建立实时操作系统,很多在Windows上建立的实时操作系统就属于此类。 在POSIX标准中专有一系用于规范实时操作系统的API,其中包括POSIX.4、POSIX.4a、POSIX.4b(合称POSIX.4) 以及POSIX.13等等。符合POSIX.4的操作系统通常被认可为实时操作系统(但实时操作系统并不需要符合POSIX.4标准)。

多任务与单任务

16位、32位、64位

所谓16位、32位、64位等术语有时指总线宽度,有时指指令宽度(在定长指令集中),而在操作系统理论中主要是指内存寻址的宽度。如果内存的寻址宽度是16位,那么每一个内存地址可以用16个二进制位来表示,也就是说可以在64KB的范围内寻址。同样道理32位的宽度对应4GB的寻址范围,64位的宽度对应16 Exabyte的寻址范围。内存寻址范围并非仅仅是对操作系统而言的,其他类型的软件的设计有时也会被寻址范围而影响。但是在操作系统的设计与实现中,寻址范围却有着更为重要的意义。 在早期的16位操作系统中,由于64KB的寻址范围太小,大都都采用“段”加“线性地址”的二维平面地址空间的设计。分配内存时通常需要考虑“段置换”的问题,同时,应用程序所能够使用的地址空间也往往有比较小的上限。 在32位操作系统中, 4GB的寻址范围对于一般应用程序来说是绰绰有余的, 因而,通常使用一维的线性地址空间,而不使用“段”。

参看


- 操作系统内核
- 实时操作系统-分时系统-多任务-嵌入式系统-单一用户-多用户
- 对称多处理并行计算(SMP)-集群(Cluster)-分布式计算
- 操作系统列表
- 64位操作系统
- 计算机科学课程列表

部分操作系统


- FreeBSD
- MS-DOS
- GNU/Linux
- Mac OS
- Windows
- Windows NT
- UNIX
- 其他操作系统

外部链接


-
als:Betriebssystem ja:オペレーティングシステム ko:운영 체제 ms:Sistem pengoperasian simple:Operating system th:ระบบปฏิบัติการ zh-min-nan:Chok-gia̍p hē-thóng

API

编程接口,简称API(Application Programming Interface),就是软件系统不同组成部分衔接的约定。 随着软件规模的日益庞大,我们需要把复杂系统划分成小的组成部分,编程接口的设计十分重要。程序设计的实践中,编程接口的设计首先要使系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。

API在各语言中的表达方式

Visual Basic

[Public|Private] Declare Function|Sub name Lib "libname" [Alias "aliasname"](Byval] variable [As type][,[Byval] variable [As type...]) [As type] dffgffgghgbhg

C Sharp

[DllImport("libname", 'Named Parameters')] [public|private|internal] [Type] FunctionName(Type parameter1,Type parameter2...);

参看


- 软件工程 ---- Category:程序设计 Category:计算机语言 ja:Application Programming Interface ko:API

Perl

Perl(Practical Extraction and Report Language)是一种脚本语言。 最初的设计者为拉里·沃尔(Larry Wall),它於1987年12月18日發表。Perl借取了Csedawk、shell scripting以及很多其他程式語言的特性。 Perl原名pearl。在這個語言官方發表前,拉里·沃尔發現已經有個程式語言“pearl”,便改變將這個程式語言的名字改成Perl。Perl這個名字,出現了一些backronym的建議