【操作系统】操作系统概述
【操作系统】操作系统概述
操作系统(Operation System),简称OS,是管理计算机【硬件】与【软件】资源的计算机程序,为用户和应用程序提供服务。
计算机系统由多个关键组件构成,每个组件都有特定的功能和作用。这些组件共同构成了完整的计算机系统,有效地支持各种计算任务和应用场景。
1. 硬件
中央处理器(CPU):负责执行指令和处理数据,包含运算器和控制器。
内存(RAM):存储正在使用的数据和程序,运行速度快,但断电后数据丢失。
存储设备:硬盘驱动器(HDD)和固态硬盘(SSD),用于长期存储数据。
输入设备:键盘、鼠标、扫描仪等。
输出设备:显示器、打印机、扬声器等。
主板:连接并协调计算机各组件的工作。
网络设备:网卡、路由器等,用于连接网络。
2. 软件
操作系统(OS):管理硬件资源,提供用户界面和应用程序接口。
应用程序:执行特定任务的软件,如浏览器、办公软件。
驱动程序:使操作系统能够与硬件设备通信。
3. 数据
文件和数据库:结构化和非结构化数据存储。
数据格式:文本、图像、音频、视频等不同类型的数据格式。
4. 用户
最终用户:使用计算机和应用程序的人。
系统管理员:维护和管理计算机系统的人。
5. 网络和通信
局域网(LAN)和广域网(WAN):连接多台计算机,实现数据共享和通信。
协议:例如TCP/IP,用于标准化数据传输。
如图,我们可以看见操作系统在计算机组成中处于软件和硬件之间的位置,承上启下,为用户和应用程序提供服务,并且,操作系统提供了一些访问方式(接口)可以让用户直接操作,操作系统为应用程序也提供了对应的接口为应用程序提供对应的服务,操作系统(OS)是一种【系统软件】,各种操作系统的主要功能如下:
1. 资源管理:对资源共享进行调度管理
处理器管理:调度进程和线程,分配CPU时间。
内存管理:分配和回收内存,管理虚拟内存。
设备管理:控制和管理输入输出设备。
文件管理:提供文件系统,管理文件和目录。
2. 用户界面:提供命令行接口(CLI)和图形用户界面(GUI)。
3. 任务管理:支持多任务处理,允许多个应用程序同时运行,决定系统资源供需的优先次序。
4. 安全性和访问控制:提供用户认证、权限管理和数据保护。
5. 网络功能:管理网络连接,支持通信协议,例如远程工程调用,操作网络与管理文件等基本事务。
6. 与硬件交互:应用软件安装在操作系统里面,与操作系统进行交互,而系统软件则一般安装在硬件上,直接跟硬件进行交互。操作系统通过驱动程序,中断,内存映射I/O,端口映射I/O,DMA(直接内存访问),系统调用,定时器和时钟等多种机制,能够有效管理和控制硬件资源,实现系统的高效运转。
7. 解决并发操作处理中存在的协调问题:操作系统通过各种机制例如互斥(Mutex),信号量(Semaphore),条件变量(Condition Variables),读写锁(Read-Write Lock),原子操作(Atomic Operations), 屏障(Barrier),死锁预防和检测,上下文切换和调度算法等能够高效处理并发操作中的协调问题,确保系统的稳定性和资源的有效利用。
8. 解决数据结构复杂、外部接口多样化、便于用户反复使用的问题:操作系统使用模块化设计,API 和库,虚拟文件系统(VFS),设备驱动模型,用户空间与内核空间,进程和线程管理,缓存与内存管理,安全与权限管理等多种策略,操作系统能有效处理复杂的数据结构和多样化的外部接口,提高系统的易用性和可复用性。
主要组件分为:
1. 内核:OS的核心部分,负责基本的系统控制和资源管理。
2. 驱动程序:允许OS与硬件设备通信。
3. 系统库:提供应用程序调用的功能接口。
4. 用户界面:用户与系统交互的界面,包括命令行接口(CLI)和图形用户界面(GUI)。
操作系统的类型有:
- 单用户与多用户:
单用户OS:如MS-DOS。
多用户OS:如Unix、Linux。
- 单任务与多任务:
单任务OS:一次只能运行一个程序。
多任务OS:支持同时运行多个程序。
- 分时操作系统:
为多个用户提供时间片轮流使用计算机的能力。
- 实时操作系统:
具有实时响应能力,常用于嵌入式系统。
常见操作系统有Windows、macOS、Linux、Unix、Android、iOS、MS-DOS。操作系统能够提高计算机效率,通过资源管理和调度,提高系统性能。提供了抽象好用的软件世界,隐藏了硬件的复杂性,为应用程序提供一致的接口。增强了安全性,通过权限和认证机制保护系统和数据。操作系统是承载着软件和硬件之间的基石,支持各种应用程序的运行和用户的交互。
在计算机上配置OS的目标:
管理系统资源
有效性:提高系统资源利用率;提高系统的吞吐量(单位时间内的工作效率),最大化资源利用率,优化系统性能。
方便用户使用
便利性:为用户和开发者提供友好接口,简化操作和开发。
抽象:屏蔽硬件复杂性,为应用程序提供统一的操作环境。
安全性:保护系统资源和用户数据免受未经授权的访问和攻击。
稳定性:保证系统运行的可靠性,防止崩溃和数据丢失。
作为扩充机器
可扩充性:随着硬件的发展而发展,兼容新的硬件。新增功能以满足发展中的需求。
开放性:如果应用程序发展了,外接硬件的种类繁多,这些部分也都需要可以集成到操作系统上面。能够支持与操作系统之间的交互,兼容不同的标准,从而实现更大的价值。
OS的功能:
计算机系统资源的管理者:
处理器管理:1、进程控制;2、进程同步;3、进程通信;4、调度,调度算法,通讯;
存储器管理:1、内存分配;2、内存保护;3、地址映射;4、内存扩充;
I/O设备管理:1、缓冲管理;2、设备分配;3、设备处理;
文件管理:1、文件存储空间的管理;2、目录管理;3、文件的读/写管理和保护;
OS作为用户与计算机【硬件系统】之间的接口:
程序接口:(系统调用)应用程序可以调用接口使用操作系统的服务;
命令接口:用户可以直接操作操作系统;
GUI(Graphical User Interface):图形用户接口(更方便、直观、便捷);
OS实现了对计算机资源的抽象:
操作系统本来安装在硬件上,然后把硬件所有的功能都用程序的方式进行了体现。将具体的计算机硬件资源抽象成软件资源,方便用户使用;
开放了简单的访问方式,实现了对硬件的封装,隐藏了实现细节。例如,当我们访问 “www.baidu.com”网址的时候,用户 ——> 打开网址 ——> 浏览通过系统调用访问操作系统的服务(操作系统提供的接口) ——> 网卡(硬件):根据我们输入的地址找到服务器上的内容,进行远程通信,通信完成后将服务器上的内容响应回来,硬件拿到响应数据后 ——> 将数据返回给操作系统,进行封装和处理 ——> 返回给浏览器,最终才展示出来数据 ——> 用户看见信息。这个完整的过程实际上底层经历了十分复杂的流程,我们在网络编程的时候还会对此进行更深一步的探讨,此处仅仅带大家感受一下软件 ——> 操作系统 ——> 硬件三者之间的工作方式。
简单点来理解,我们可以认为计算机硬件是整个计算机的核心,是计算机的物质基础,是房子的地基,在这个地基之上我们才能开始盖楼,在硬件的基础之上,我们覆盖了一层管理软件,这套管理软件的集合便是操作系统。在这套管理软件之上进行再编程,再编程优化了整体操作系统的功能,增强并优化了整个计算器系统的功能。所有,在专业书上有时候会写到,“覆盖了操作系统的计算机被称为扩充机器”或者“操作系统作为扩充机,扩充了计算机的功能”。