什么是操作系统
我们首先讨论操作系统在整个计算机系统中的作用。计算机系统可以粗分为四个组件:硬件、操作系统、应用程序和用户(图 1)。
图 1 计算机系统组件的抽象视图
硬件(hardware),如中央处理单元(Central Processing Unit,CPU)、内存(memory)、输入/输出设备(Input/Output device,I/O device),为系统提供基本的计算资源。应用程序(application program),如字处理程序、电子制表软件、编译器、网络浏览器,规定了用户为解决计算问题而使用这些资源的方式。操作系统控制硬件,并协调各个用户应用程序的硬件使用。
计算机系统可以分为硬件、软件及数据。当计算机系统运行时,操作系统提供正确手段以便使用这些资源。操作系统类似于政府,其本身不能实现任何有用功能,而是提供一个方便其他程序执行有用工作的环境。
为了更全面地理解操作系统的作用,接下来从两个视角探讨操作系统:用户视角和系统视角。
在其他情况下,一个用户坐在与大型机(mainframe)或小型机(minicomputer)相连的终端前,其他用户通过其他终端访问同一计算机。这些用户共享资源并且可以交换信息。这种操作系统的设计目标是优化资源利用率:确保所有的 CPU 时间、内存和 I/O 都能得到有效使用,并且确保没有用户使用超过限额以外的资源。
在另一些情况下,用户坐在工作站(workstation)前,这类工作站与其他工作站和服务器(server)相连。这类用户不但可以使用专用资源,而且可以使用网络和服务器的共享资源,包括文件、计算和打印服务器等。因此,这类操作系统的设计需要兼顾使用方便性和资源利用率。
近来,智能手机和平板电脑等移动计算机已成为时尚。大多数移动计算机为单个用户单独使用。通常,它们通过蜂窝或其他无线技术与网络相连。对于主要处理 Email 和浏览网页的用户,这种移动设备正在取代桌面计算机和笔记本计算机。移动计算机的用户界面主要是触摸屏(touchscreen),用户通过对屏幕进行触碰与滑动来交互,而无需使用键盘和鼠标。
有的计算机几乎没有或根本没有用户界面。例如,家电和汽车使用的嵌入式计算机可能只有数字键盘,只能通过打幵和关闭指示灯来显示状态,而且这些设备及其操作系统通常无需用户干预就能执行。
面对许多甚至冲突的资源请求,操作系统应考虑如何为各个程序和用户分配资源,以便计算机系统能有效且公平地运行。正如前面所说,对于多个用户访问主机或微型计算机,资源分配是特别重要的。
操作系统的另一个稍有不同的视角是,强调控制各种 I/O 设备和用户程序的需求。操作系统是个控制程序。控制程序(control program)管理用户程序的执行,以防止计算机资源的错误或不当使用。它特别注重 I/O 设备的运行和控制。
虽然计算机的历史相对较短,但是发展迅猛。计算机起初是试验到底能做什么,很快就发展成专用系统,如在军事中用作破译密码、绘制弹道等,在政府中用作人口普查等。这些早期的计算机后来发展成通用的多功能大型机,这时操作系统也随之出现了。
在 20 世纪 60 年代,摩尔定律(Moore’s Law)预测集成电路可容纳元器件的数目每隔 18 个月便会翻倍,该预测是成立的。随着计算机功能的不断强大和体积的不断减小,也产生了大量不同的操作系统。
那么,我们如何定义操作系统呢?
一般来说,我们没有一个关于操作系统的完全准确的定义。操作系统的存在是因为它们提供了合理方式来解决创建可用计算系统的问题,计算机系统的根本目的是,执行用户程序并且更容易解决用户问题。为实现这一目的,构造了计算机硬件。由于硬件本身并不十分容易使用,因此开发了应用程序。这些应用程序需要一些共同操作,如控制 I/O 设备。这些控制和分配 I/O 设备资源的共同功能则被组成一个软件模块:操作系统。
另外,也没有一个广泛接受的究竟什么属于操作系统的定义。一种简单观点是,操作系统包括当你预订一个“操作系统”时销售商发送的所有一切。当然,包括的功能随系统不同而不同。有的系统只有不到 1MB 的空间且没有全屏编辑器,而有的系统需要数 GB(Gigabyte)空间而且完全采用图形窗口系统。一个比较公认的定义是(也是本书所采用的),操作系统是一直运行在计算机上的程序(通常称为内核(kernel))。(除了内核外,还有其他两类程序:系统程序(system program)和应用程序。前者是与系统运行有关的程序,但不是内核的一部分;后者是与系统运行无关的所有其他程序。)
随着个人计算机的日益普及和操作系统功能的日益强大,关于操作系统到底由什么组成这一问题也变得越来越重要。1998 年,美国司法部控告 Microsoft 增加过多功能到操作系统,因此妨碍了其他应用程序开发商的公平竞争(例如,将 Web 浏览器作为操作系统整体的一个部分)。结果,Microsoft 在通过操作系统垄断以限制竞争上,被判有罪。
然而,现在我们看看移动设备的操作系统,就会发现这些操作系统的特征不但量多而且强大。移动操作系统通常不只有内核也有中间件(middleware)(为应用程序开发人员提供其他功能的软件框架)。例如,最常见的两个移动操作系统,Apple 的 iOS 和 Google 的 Android,除了内核外,都有中间件以便支持数据、多媒体和图形等。
图 1 计算机系统组件的抽象视图
硬件(hardware),如中央处理单元(Central Processing Unit,CPU)、内存(memory)、输入/输出设备(Input/Output device,I/O device),为系统提供基本的计算资源。应用程序(application program),如字处理程序、电子制表软件、编译器、网络浏览器,规定了用户为解决计算问题而使用这些资源的方式。操作系统控制硬件,并协调各个用户应用程序的硬件使用。
计算机系统可以分为硬件、软件及数据。当计算机系统运行时,操作系统提供正确手段以便使用这些资源。操作系统类似于政府,其本身不能实现任何有用功能,而是提供一个方便其他程序执行有用工作的环境。
为了更全面地理解操作系统的作用,接下来从两个视角探讨操作系统:用户视角和系统视角。
用户视角
计算机的用户视角因使用界面不同而不同。大多数计算机用户坐在 PC 前,PC 有显示器、键盘、鼠标和主机。这类系统让单个用户单独使用资源,其目的是优化用户进行的工作(或游戏)。对于这种情况,操作系统设计的主要目的是用户使用方便(ease of use),次要的是性能,不在乎的是资源利用(resource utilization)(如何共享硬件和软件资源)。当然,性能对用户来说也重要,不过这种系统优化的重点是单个用户的体验而不是多个用户的需求。在其他情况下,一个用户坐在与大型机(mainframe)或小型机(minicomputer)相连的终端前,其他用户通过其他终端访问同一计算机。这些用户共享资源并且可以交换信息。这种操作系统的设计目标是优化资源利用率:确保所有的 CPU 时间、内存和 I/O 都能得到有效使用,并且确保没有用户使用超过限额以外的资源。
在另一些情况下,用户坐在工作站(workstation)前,这类工作站与其他工作站和服务器(server)相连。这类用户不但可以使用专用资源,而且可以使用网络和服务器的共享资源,包括文件、计算和打印服务器等。因此,这类操作系统的设计需要兼顾使用方便性和资源利用率。
近来,智能手机和平板电脑等移动计算机已成为时尚。大多数移动计算机为单个用户单独使用。通常,它们通过蜂窝或其他无线技术与网络相连。对于主要处理 Email 和浏览网页的用户,这种移动设备正在取代桌面计算机和笔记本计算机。移动计算机的用户界面主要是触摸屏(touchscreen),用户通过对屏幕进行触碰与滑动来交互,而无需使用键盘和鼠标。
有的计算机几乎没有或根本没有用户界面。例如,家电和汽车使用的嵌入式计算机可能只有数字键盘,只能通过打幵和关闭指示灯来显示状态,而且这些设备及其操作系统通常无需用户干预就能执行。
系统视角
从计算机的角度来看,操作系统是与硬件紧密相连的程序。因此,可将操作系统看作资源分配器(resource allocator)。为了解决问题,计算机系统可能具有许多资源:CPU 时间、内存空间、文件存储空间、I/O 设备等,操作系统管理这些资源。面对许多甚至冲突的资源请求,操作系统应考虑如何为各个程序和用户分配资源,以便计算机系统能有效且公平地运行。正如前面所说,对于多个用户访问主机或微型计算机,资源分配是特别重要的。
操作系统的另一个稍有不同的视角是,强调控制各种 I/O 设备和用户程序的需求。操作系统是个控制程序。控制程序(control program)管理用户程序的执行,以防止计算机资源的错误或不当使用。它特别注重 I/O 设备的运行和控制。
操作系统的定义
现在你可能知道操作系统具有很多用途与功能。这是(至少部分是)由于计算机设计与用途的多样性。计算机无处不在,有日用的也有商用的,如烤面包机、汽车、船舶、航天器中都有。它们是游戏机、音乐播放器、有线电视调谐器及工业控制系统的基础。虽然计算机的历史相对较短,但是发展迅猛。计算机起初是试验到底能做什么,很快就发展成专用系统,如在军事中用作破译密码、绘制弹道等,在政府中用作人口普查等。这些早期的计算机后来发展成通用的多功能大型机,这时操作系统也随之出现了。
在 20 世纪 60 年代,摩尔定律(Moore’s Law)预测集成电路可容纳元器件的数目每隔 18 个月便会翻倍,该预测是成立的。随着计算机功能的不断强大和体积的不断减小,也产生了大量不同的操作系统。
那么,我们如何定义操作系统呢?
一般来说,我们没有一个关于操作系统的完全准确的定义。操作系统的存在是因为它们提供了合理方式来解决创建可用计算系统的问题,计算机系统的根本目的是,执行用户程序并且更容易解决用户问题。为实现这一目的,构造了计算机硬件。由于硬件本身并不十分容易使用,因此开发了应用程序。这些应用程序需要一些共同操作,如控制 I/O 设备。这些控制和分配 I/O 设备资源的共同功能则被组成一个软件模块:操作系统。
另外,也没有一个广泛接受的究竟什么属于操作系统的定义。一种简单观点是,操作系统包括当你预订一个“操作系统”时销售商发送的所有一切。当然,包括的功能随系统不同而不同。有的系统只有不到 1MB 的空间且没有全屏编辑器,而有的系统需要数 GB(Gigabyte)空间而且完全采用图形窗口系统。一个比较公认的定义是(也是本书所采用的),操作系统是一直运行在计算机上的程序(通常称为内核(kernel))。(除了内核外,还有其他两类程序:系统程序(system program)和应用程序。前者是与系统运行有关的程序,但不是内核的一部分;后者是与系统运行无关的所有其他程序。)
随着个人计算机的日益普及和操作系统功能的日益强大,关于操作系统到底由什么组成这一问题也变得越来越重要。1998 年,美国司法部控告 Microsoft 增加过多功能到操作系统,因此妨碍了其他应用程序开发商的公平竞争(例如,将 Web 浏览器作为操作系统整体的一个部分)。结果,Microsoft 在通过操作系统垄断以限制竞争上,被判有罪。
然而,现在我们看看移动设备的操作系统,就会发现这些操作系统的特征不但量多而且强大。移动操作系统通常不只有内核也有中间件(middleware)(为应用程序开发人员提供其他功能的软件框架)。例如,最常见的两个移动操作系统,Apple 的 iOS 和 Google 的 Android,除了内核外,都有中间件以便支持数据、多媒体和图形等。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算