Operating System

操作系统(Operating System,简称OS)传统上是负责对计算机硬件直接控制及管理的系统软件。操作系统的功能一般包括处理器管理、存储管理、文件管理、设备管理和作业管理等。当多个程序同时运行时,操作系统负责规划以优化每个程序的处理时间。

一个操作系统可以在概念上分割成两部分:内核(Kernel)以及壳(shell)。一个壳程序包裹了与硬件直接交流的内核:硬件<->内核<->壳<->应用程序。但有些操作系统上内核与壳完全分开(例如Unix、Linux等),这样用户就可以在一个内核上使用不同的壳;而另一些的内核与壳关系紧密(例如Microsoft Windows),内核及壳只是操作层次上不同而已。


Mach

Mach是一个由卡内基梅隆大学开发的用于支持操作系统研究的操作系统内核,为了用于操作系统之研究,特别是在分布式与并行运算上。是最早实现微核心操作系统的例子之一,是许多其它相似的项目的标准。

Mach是一个由卡内基梅隆大学开发的用于支持操作系统研究的操作系统内核。

  该项目在1985年启动,并且在1994年因为mach3.0的显著失败而告终。但是mach却是一个真正的微核。mach被开发成了UNIX中BSD的替代内核,所以没必要再开发设计他的衍生系统。

其他还有许多人继续Mach的研究包括犹他大学的Mach 4。Mach的开发是为了取代BSD的UNIX核心,所以是许多新的操作系统的设计基础。Mach的研究到至今似乎是退出,虽然有许多商业化操作系统,如NEXTSTEP与OPENSTEP,特别是Mac OS X(使用XNU核心)都是使用Mach或其派生系统。Mach的虚拟内存(VM)系统也被BSD的开发者用于CSRG,并出现在BSD派生的系统中,如FreeBSD。Mac OS X与FreeBSD并未保留Mach首倡的微核心结构,除了Mac OS X继续提供微核心于内部处理通信以及应用程序直接控制。

Mach继承卡内基梅隆大学的Accent kernel,Mach项目主导人理查德·拉希德曾于微软的研究部门担任高级人员,后成为微软副总裁。另一Mach开发者阿瓦德斯·特凡尼安(Avie Tevanian)曾是NeXT首席程序员,之后担任苹果电脑软件技术部门主管直到2006年。

现在,一个名为GNU Mach的计划与GNU HURD联系紧密。Debian GNU/Hurd就是基于GNU Mach的。

今天,虽然mach及其衍生品在许多商业操作系统被广泛使用,但是对mach的进一步实验研究已经结束。例如,OPENSTEP NeXTSTEP,最明显的是Mac OS X操作系统内核,他使用XNU其中包括一个早期(非微核)mach作为主要组件。


Macintosh

麦金塔电脑(Macintosh,简称Mac,香港俗称Mac机,大陆亦有人称作苹果机或麦金塔电脑),是苹果电脑其中一系列的个人电脑。Macintosh是由Macintosh计划发起人Jeff Raskin(杰夫·拉斯金)根据他最爱的苹果品种McIntosh命名,但为了避免与音频设备制造商麦金托什实验室(McIntosh Laboratory)的名字有冲突,他故意改变了字母的拼写。

麦金塔电脑于1984年1月24日发表。麦金塔是苹果电脑继LISA后第二部使用图形用户界面(GUI)的电脑。而麦金塔是首次将图形用户界面广泛应用到个人电脑之上。

麦金塔电脑过去使用由Motorola或IBM所研制的微处理器,如今新机种已与一般x86架构的个人电脑一样使用Intel的微处理器,但个人电脑亦使用其他的微处理器,如AMD。第一代麦金塔采用16位元的68000微处理器。麦金塔电脑使用的微处理器已经转换过多次,由最初的16位元68000微处理器,到32位元的PowerPC微处理器,以至64位元的G5微处理。从2006年开始,苹果电脑公司逐步转用Intel的处理器,首批采用IntelCPU的产品为iMac及全新的MacBookPro(两款产品均使用Yonah核心的Intel Core Duo)。

本来麦金塔电脑的默认操作系统名为SystemSoftware,至7.5.1正式改名为Mac OS(麦金塔操作系统)。Mac OS至今已经推出了十代。苹果宣布将Mac OS X更名为OS X。

WWDC2016大会上,苹果发布最新一代macOS Sierra操作系统,为了与iOS、watchOS、tvOS命名上保持一致,苹果宣布放弃OSX名称转使用macOS。至此macOS这一名称再次替代了使用多年的OS X。

第十代操作系统名为OS X,至今已经推出七次大型更新。Mac OS X使用Darwin作为系统核心,而Darwin核心是以FreeBSD为范本加以改写而成。苹果官方声称,Mac OS X只能在使用G3或更高阶的微处理器的电脑上运行。但实际上,透过修改,Mac OS X 亦能成功安装并运行在较早期的Power PC 604e上;甚至有人透过PearPC模拟器,在更早期的Centris 650(25MHz)上安装Mac OS X 10.3,只是以此方式安装的Mac OS X,没有多大的实用价值可言。(仅系统自我检测便得花上数天时间)

除了麦金塔操作系统,麦金塔电脑还可以使用以下操作系统:


UNIX

UNIX操作系统(尤尼斯),是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由KenThompson、Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。目前它的商标权由国际开放标准组织所拥有,只有符合单一UNIX规范的UNIX系统才能使用UNIX这个名称,否则只能称为类UNIX(UNIX-like)。

UNIX特性

UNIX系统是一个多用户,多任务的分时操作系统。

UNIX的系统结构可分为三部分:操作系统内核(是UNIX系统核心管理和控制中心,在系统启动或常驻内存),系统调用(供程序开发者开发应用程序时调用系统组件,包括进程管理,文件管理,设备状态等),应用程序(包括各种开发工具,编译器,网络通讯处理程序等,所有应用程序都在Shell的管理和控制下为用户服务)。

UNIX系统大部分是由C语言编写的,这使得系统易读,易修改,易移植。

UNIX提供了丰富的,精心挑选的系统调用,整个系统的实现十分紧凑,简洁。

UNIX提供了功能强大的可编程的Shell语言(外壳语言)作为用户界面具有简洁,高效的特点。

UNIX系统采用树状目录结构,具有良好的安全性,保密性和可维护性。

UNIX系统采用进程对换(Swapping)的内存管理机制和请求调页的存储方式,实现了虚拟内存管理,大大提高了内存的使用效率。

UNIX系统提供多种通信机制,如:管道通信,软中断通信,消息通信,共享存储器通信,信号灯通信


POSIX

表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是电气和电子工程师协会为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。

POSIX标准意在期望获得源代码级别的软件可移植性。换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译执行。

POSIX 并不局限于 UNIX。许多其它的操作系统,例如 DEC OpenVMS 支持 POSIX 标准,尤其是 IEEE Std. 1003.1-1990(1995 年修订)或 POSIX.1,POSIX.1 提供了源代码级别的 C 语言应用编程接口(API)给操作系统的服务程序,例如读写文件。POSIX.1 已经被国际标准化组织(International Standards Organization,ISO)所接受,被命名为 ISO/IEC 9945-1:1990 标准。


Darwin

Darwin是由苹果电脑于2000年所释出的一个开放原始码操作系统。Darwin 是MacOSX 操作环境的操作系统成份。苹果电脑于2000年把Darwin 释出给开放原始码社群。现在的Darwin皆可以在苹果电脑的PowerPC 架构和X86 架构下执行,而后者的架构只有有限的驱动程序支援。

Darwin 是一种Unix-like操作系统,整合数种的技术,包含开Darwin LOGO Darwin LOGO 放原始码的XNU核心,一种以微核心为基础的核心架构来实作Machkernel。操作系统的服务和userland 工具是以4.4BSD(柏克莱软件套件的UNIX),特别是FreeBSD和NetBSD) 为基础类似其他Unix-like 操作系统Darwin 也有对称多处理器的优点,高效能的网络设施和支援多种整合的档案系统。

通常来说,大多数的计算机制造商都把自己的操作系统(以及大多数的应用程序)看作是私人拥有不会公开的。将源代码向外界开发人员免费提供是为了鼓励所有的开发人员都来修正其中的问题,对其进行改善。在Darwin之外,OS X还包括了自己的用户接口所有权,以及其他一些没有提供开源的特性。

整合Mach microkernel到XNU核心的好处是可携性,或者是在不同形式的系统使用软件的能力。举例来说,一个操作系统核心整合了Mach microkernel,能够提供多种不同CPU架构的二进制格式到一个单一的档案 (例如 x86 和 PowerPC),这是因为它使用了Mach-O的二进制格式。Mach 整合的缺点则是增加了操作系统核心-kernel- 的复杂度。在过去的microkernel实作上,这种复杂度有时候会导致很难分离kernel 效能的问题。因此,采用Mach microkernel会伴随风险,但它有潜在的好处是广泛的可携性。以Darwin 可携性的具体例子来说,在2005年6月,苹果电脑宣布它会于2006年 在 Mac 电脑上开始采用 ntel 处理器。


FreeBSD

自从1969年Bell实验室研究人员创造了Unix,至今Unix已发展成为主流操作系统之一。

在Unix的发展过程中,形成了BSD Unix和Unix System Ⅴ两大主流。

BSD Unix在发展中形成了不同的开发组织,分别产生了FreeBSD、NetBSD、OpenBSD等BSD Unix。

与NetBSD、OpenBSD相比,FreeBSD的开发最活跃,用户数量最多。

NetBSD可以用于包括Intel平台在内的多种硬件平台。

OpenBSD的特点是特别注重操作系统的安全性。

FreeBSD作为网络服务器操作系统,可以提供稳定的、高效率的WWW、DNS、FTP、E-mail等服务,还可用来构建NAT服务器、路由器和防火墙。


Solaris x86

Solaris是Sun公司开发和发布的企业级操作环境,有运行于Intel平台的Solaris x86系统,也有运行于SPARC CPU结构的系统。它起源于BSD Unix,但逐渐转移到了System Ⅴ标准。在服务器市场上,Sun的硬件平台具有高可用性和高可靠性,Solaris是当今市场上处于支配地位的Unix类操作系统。目前比较流行的运行于x86架构的计算机上的Solaris有Solaris 8 x86和Solaris 9 x86两个版本。当然Solaris x86也可以用于实际生产应用的服务器。


Linux

简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品 !

Linux以它的高效性和灵活性著称。Linux模块化的设计结构,使得它既能在价格昂贵的工作站上运行,也能够在廉价的PC机上实现全部的Unix特性,具有多任务、多用户的能力。Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX标准的操作系统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用Windows NT一样,允许我们使用窗口、图标和菜单对系统进行操作。

Linux具有Unix的优点:稳定、可靠、安全,有强大的网络功能。在相关软件的支持下,可实现WWW、FTP、DNS、DHCP、E-mail等服务,还可作为路由器使用,利用ipchains/iptables可构建NAT及功能全面的防火墙。

Linux有很多发行版本,较流行的有:RedHat Linux、Debian Linux、RedFlag Linux等。

术语表

  • 原子操作:一个或者多个指令的序列

  • 临界区:一段代码,在该代码中进程将访问该共享资源

  • 死锁:两个或者两个以上的进程因其中的每个进程都在等待其他进程做完事情而不能继续执行

  • 活锁:两个或者两个以上的进程为了响应其他进程中的变化而持续改变自己的状态但是不做有用的工作

  • 互斥:当一个进程在一个临界区访问共享资源时,其他进程不能进入该临界区访问任何共享资源

  • 竞争条件:多个线程或者进程在读写一个共享数据时,结果依赖于它们执行的相对时间

饥饿:一个可运行的进程尽管能继续执行,但是被调度器无限期的忽视

  • 并发的原理:

    在单处理器多道程序设计系统中,进程交替执行,表现出一种同时执行的外部特征

    在多处理器系统中,不仅可以交替执行,还能够重叠执行进程

    单处理器,多道程序设计系统:

全局资源充满危险

操作系统很难对资源进行最优化分配

定位程序设计存在困难

竞争条件:

竞争条件:多个进程或线程读写数据时,最终的结果依赖于个进程的指令执行顺序

  • 互斥的要求:

必须强制实施互斥,一次只能有一个进程进入临界区

一个在非临界区停止的进程不能干涉其他进程

不允许出现需要访问临界区的进程被无限延迟的现象,不会出现死锁和饥饿

没有进程在临界区内,任何需要进入临界区的进程必须能够进入

进程的执行数目与处理器的数目没有任何限制

一个进程在临界区停留的时间必须有限

  • 互斥:

两个或者更多的进程访问一个不共享的资源,在执行过程中,每个进程都给该IO设备发命令,接收状态信息,发送和接收数据,这类资源称为临界资源

使用临界资源的那一部分程序称为临界区

  • 死锁:

两个进程p1,p2,以及两个资源R1,R2,假设每个进程都需要访问该两个资源,

操作系统把R1分配给P2,R2分配给P1,每个进程都在等待另一个资源,在获得其他资源并完全成功前,不会释放已拥有资源

  • 饥饿:

三个进程P1,P2,P3,每个进程都周期性的访问资源

P1拥有资源,P2和P3都被延迟,等待这个资源,当P1退出临界区时,P2和P3都被允许访问R,在P3访问完成临界区之前P1又需要访问该临界区,这样将访问权

轮流的授予P1和P3,就会出现饥饿状态

Logo

更多推荐