系统程序及其分类
现代操作系统的另一特点是一组系统程序。前面说过,图1 描述了计算机的逻辑层次。最低层是硬件,接着是操作系统,然后是系统程序,最后是应用程序。
图 1 计算机系统组件的抽象视图
系统程序(system program),也称为系统工具(system utility),为程序开发和执行提供了一个方便的环境。有的系统程序只是系统调用的简单用户接口,而其他的可能相当复杂。
系统程序可分为以下几类:
除系统程序外,大多数的操作系统提供解决常见问题或执行常用操作的程序。这样的应用程序(application program)包括;网页浏览器、文字处理器和文字排版器、电子制表格软件、数据库系统、编译器、绘图和统计分析包以及游戏等。
大多数用户理解的操作系统是:由应用程序和系统程序而不是系统调用来决定的。试想一下 PC。当计算机运行 Mac OS X 操作系统时,用户可能看到 GUI,即鼠标和窗口界面。或者,甚至在某个窗口内,用户会有一个命令行 UNIX 外壳。两者使用同样的系统调用集合,但系统调用看起来不同且其行为也不同。
或许让用户看起来更乱的是:试想一下从 Mac OS X 中引导 Windows。这样,同一计算机的同一用户会有两个完全不同的界面和两组不同的应用程序,而它们使用同样的物理资源。在同样的硬件上,用户可按顺序或并发使用多个用户界面。
图 1 计算机系统组件的抽象视图
系统程序(system program),也称为系统工具(system utility),为程序开发和执行提供了一个方便的环境。有的系统程序只是系统调用的简单用户接口,而其他的可能相当复杂。
系统程序可分为以下几类:
- 文件管理。这些程序创建、删除、复制、重新命名、打印、转储、列出、操作文件和目录。
- 状态信息。有些程序可从系统那里得到日期、时间、内存或磁盘空间的可用数量、用户数或其他状态信息。还有一些则更为复杂,可提供详细的性能、登录和调试信息。通常,这些信息经格式化后,再打印到终端、输出设备或文件,或在 GUI 视窗中显示。有些系统还支持注册表(registry),可用于存储和获取配置信息。
- 文件修改。有多个编辑器可以创建和修改位于磁盘或其他存储设备上的文件。也有 专用命令,可用于查找文件内容或进行文本转换。
- 程序语言支持。常用程序语言(如 C、C++、Java 和 PERL 等)的编译程序、汇编程序、调试程序和解释程序,通常与操作系统一起提供给用户,或可另外下载。
- 程序加载与执行。程序一旦汇编或编译后,要加载到内存才能执行。系统可以提供绝对加载程序、重定位加载程序、链接编辑器和覆盖式加载程序。系统还要提供高级语言或机器语言的调试程序。
- 通信。这些程序提供在进程、用户和计算机系统之间创建虚拟连接的机制。它们允许用户在彼此的屏幕上发送消息,浏览网页,发送电子邮件,远程登录,从一台机器向另一台机器传送文件。
- 后台服务。所有通用系统都有方法,以便在引导时创建一些系统程序的进程。这些进程中,有的执行完任务后就终止,而有的会一直运行到系统停机。一直运行的系统进程,称为服务(service)、子系统(subsystem)或守护进程。《系统调用的类型》一节讨论了一个网络守护进程的例子。这个例子需要一个服务来监听网络连接请求,以便将它们传给合适的进程来处理。其他例子包括:根据指定计划启动进程的进程调度器、系统错误的监控服务和打印服务器等。通常,系统会有数十个守护进程。另外,有的操作系统在用户上下文而不是内核上下文进行重要操作时,也会用守护进程来进行。
除系统程序外,大多数的操作系统提供解决常见问题或执行常用操作的程序。这样的应用程序(application program)包括;网页浏览器、文字处理器和文字排版器、电子制表格软件、数据库系统、编译器、绘图和统计分析包以及游戏等。
大多数用户理解的操作系统是:由应用程序和系统程序而不是系统调用来决定的。试想一下 PC。当计算机运行 Mac OS X 操作系统时,用户可能看到 GUI,即鼠标和窗口界面。或者,甚至在某个窗口内,用户会有一个命令行 UNIX 外壳。两者使用同样的系统调用集合,但系统调用看起来不同且其行为也不同。
或许让用户看起来更乱的是:试想一下从 Mac OS X 中引导 Windows。这样,同一计算机的同一用户会有两个完全不同的界面和两组不同的应用程序,而它们使用同样的物理资源。在同样的硬件上,用户可按顺序或并发使用多个用户界面。
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频