热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

正襟危坐说操作系统(壹):操作系统概述及历史

概述:操作系统协调各任务公平分享CPU。所谓的操作系统隐藏在各任务和中断背后,在系统运行时,并不以独立的形式存在,没有自己

概述:

操作系统协调各任务公平分享CPU。所谓的操作系统隐藏在各任务和中断背后,在系统运行时,并不以独立的形式存在,没有自己的执行线程。就像赛场外的裁判,只是协调整个比赛过程,而不亲自参与比赛,由运动员自己进行比赛。什么时候这个裁判才起作用呢?当系统时钟中断或系统调用时,操作系统代码才会出面协调任务的进行。而中断处理在某些方面超出了系统软件的管理范围,而由CPU硬件触发,比所有任务都优先执行。中断处理以外剩余的CPU时间,由各任务依据优先级设置、资源分配和执行流程来共同分享。

在系统运行时,除了任务中断这样的动态运行对象外,还存在一些静态对象,如调度机制、任务间通信机制、内存管理机制和输入输出系统等。这里所讲的静态是相对的,指这些对象代码没有自主的执行线程,总处于被动的调用状态。调用时对内存中的分配的静态数据结构进行操作,有时也改变任务的运行状态。

 

操作系统在计算机运行过程中扮演的角色:魔术师管理者

魔术师隐藏了背后的复杂,把差的东西变好,把少的东西变多,把复杂的东西变得容易。

操作系统通过进程抽象让每个用户感觉到有一台自己独享的CPU;通过虚拟内存的抽象,让用户感觉到物理内存空间具有无限扩张性。

管理者则针对所有计算机资源进行管理以达到公平和效率的“双料”境界。操作系统对CPU、内存、磁盘等的管理,使得不同用户之间或者同一用户的不同程序之间可以安全有序的共享这些硬件资源。

 

历史:

操作系统Operating Systems指的就是掌控局势的一种系统。掌控的是计算机或计算机里发生的一切事情。最原始的计算机并没有操作系统,而是直接由人来掌控事情,即所谓的单一控制终端、单一操作员模式。但随着计算机的复杂性的增长,人已经不能胜任直接掌控计算机了。于是我们编写出OS这个软件来掌控计算机,将人类从日益复杂的任务中解脱出来。由于计算机的功能和复杂性不断发生变化,操作系统锁掌控的事情也就越来越多,越来越复杂。同时操作系统本身能够使用的资源也不断增多。

操作系统的不断发展与改善由两个因素驱动:

1,硬件成本的不断下降

2,计算机的功能和复杂性的不断变化

 

第一阶段:单一操作员、单一控制端操作系统(20世纪40年代)

代表机型是ENIAC。此时没有操作系统的整体概念,唯一想到的就是提供一些标准命令供用户使用,这些标准命令集合就构成我们原始的操作系统SOSC(单一操作员、单一控制终端 single operator,singleconsole)。

SOSC操作系统的设计就是满足基本的功能,并提供人机交互。在这种操作系统下,操作系统本身只是一组标准库函数而已。操作系统不自我运行,而是等待操作员输入命令再运行。用户想使用什么服务,就直接在命令行键入代表该服务的对应操作系统的库函数名即可。

 

第二阶段:批处理操作系统(20世纪50年代)

SOSC效率之所以低下,是因为计算机总是在等待人的下一步动作,而人的动作总是很慢。因此,如果将人的因素拿走,让所有人先想好自己要运行的命令,列成一个清单,打印在纸带上,然后交给一个工作人员来一批一批地处理,效率不就提高了么。

批处理操作系统针对的是第二代通用计算机,如IBM的1401和7094等,通过去除人机交互达到CPU和输入输出利用率的改善

在SOSC环境下,每个用户自己控制程序的开始和结束。而在批处理下,很多用户的程序一个接一个地存放在磁带上,用户本人无法控制程序的开始和结束。而这个任务就交给了批处理操作系统。整个批处理操作系统是由批处理监视器和原来的操作系统库函数组成。

此种操作系统的任务就是加载一个程序、运行、打印结果,然后执行下一个程序。

 

第三代:多道批处理操作系统(20世纪60年代)

虽然批处理操作系统通过无需人机交互过程而在一定程度上提高了计算机的效率,但还是不那么令人满意。因为,CPU和输入输出设备的运行是串行的,即在程序进行输入输出时,CPU只能等待。CPU需要不断地探询I/O是否完成,因而不能执行别的程序。(磁带上的程序要先读进来,程序才能执行,执行完了又需要写到另一个磁带上。读写磁带的时候CPU是不工作的,这就是很大的浪费。)

能否将CPU和I/O进行并发呢?即在一个程序输出结果时,让另一个程序继续执行。CPU和I/O重叠需要我们将多个程序同时加载到计算机内存里(以前是加载一个程序,执行,输出,再加载下一个程序),从而出现了多道批处理系统。

由于多个程序同时执行,操作系统需要能够在多个程序之间进行切换,并且能够管理多个输入输出设备,同时还要能够保护一个进程不受另一个进程干扰。此时的操作系统要复杂的多:即要管理工作,又要管理内存,还要管理CPU调度。

 

第四代之一:分时操作系统(20世纪70年代)

多道批处理操作系统的出现使计算机的吞吐率大大提高,但是另一个问题,将程序制作在卡片上交给计算机管理员统一运行,将使用户无法立即获知程序运行的结果。

能否让人回到计算机前面来,每个人自己管理自己的程序,大家的程序可以同时运转。人的因素又引了回来。这看上去与原始的SOSC似乎一样,但有很多关键不同:多人同时连在计算机上,每个人是一个I/O终端而已,终端显示器只能接收和发送有限的文本命令和信息。计算机在所有连接的终端用户之间进行分时,即分给每个人有限的时间,只要时间到了,就换一个进程

在分时操作系统下,任意时间可以运行多个程序,用户直接与计算机交互,可当场调试程序。SOSC是一切等着人,执行一条命令就等人,分时系统是人等机器。机器不用再等你,当你想问题的时机器就切换到别的程序,等你想完了机器再切换回来,接受你的输入。

因为机器昂贵,我们不能容忍机器(CPU)在I/O设备工作期间闲置下来。同时,因为人的时间宝贵,我们不能容忍人们在机器面前漫长等待。因此,我们发明了分时操作系统来解决这两个问题。因为分时而引入的多道程序设计,又造成操作系统的空前复杂,我们需要应对竞争、通信、死锁、保护等一系列的新功能。

 

之二:实时操作系统

使用计算机对某些工业进程进行监视,并在需要的时候采取行动,这种对计算机响应时间有要求的系统通常称为临界系统或应用。为了满足这些应用对响应时间的要求,人们就开发了实时操作系统。实时操作系统是指所有任务都在规定时间内完成的操作系统,即必须满足时序可预测性。显然,实时操作系统的最重要部分是进程调度。只有精确、合理和及时的进程调度才能保证响应时间。

 

第五代:现代操作系统(1980年以后)

随着硬件越来越便宜,个人机出现了。人们可以拥有自己的电脑,无需与别人分享。由于个人机由用户一个人独享,分时操作系统的许多功能就无需存在。因此,个人操作系统又变回了标准库函数系统。(例如DOS)

但人们发现没有分时功能的操作系统使一些事情做不了。因为,虽然只有一个人在用机器,但这个人可能想同时想做好几件事。于是又将各种分时功能加了进去。于是Windows NT等就出现了。

 


推荐阅读
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 进程(Process)是指计算机中程序对特定数据集的一次运行活动,是系统资源分配与调度的核心单元,构成了操作系统架构的基础。在早期以进程为中心的计算机体系结构中,进程被视为程序的执行实例,其状态和控制信息通过任务描述符(task_struct)进行管理和维护。本文将深入探讨进程的概念及其关键数据结构task_struct,解析其在操作系统中的作用和实现机制。 ... [详细]
  • 全面解析Java虚拟机:内存模型深度剖析 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • 本文详细介绍了HDFS的基础知识及其数据读写机制。首先,文章阐述了HDFS的架构,包括其核心组件及其角色和功能。特别地,对NameNode进行了深入解析,指出其主要负责在内存中存储元数据、目录结构以及文件块的映射关系,并通过持久化方案确保数据的可靠性和高可用性。此外,还探讨了DataNode的角色及其在数据存储和读取过程中的关键作用。 ... [详细]
  • Java队列机制深度解析与应用指南
    Java队列机制在并发编程中扮演着重要角色。本文深入解析了Java队列的各种实现类及其应用场景,包括`LinkedList`、`ArrayBlockingQueue`和`PriorityQueue`等,并探讨了它们在高并发环境下的性能表现和适用场景。通过详细分析这些队列的内部机制和使用技巧,帮助开发者更好地理解和应用Java队列,提升系统的设计和架构能力。 ... [详细]
  • 西北工业大学作为陕西省三所985和211高校之一,虽然在农业和林业领域不如某些顶尖院校,但在航空航天领域的实力尤为突出。该校的计算机科学专业在科研和教学方面也具有显著优势,是考研的理想选择。 ... [详细]
  • 本文深入探讨了IO复用技术的原理与实现,重点分析了其在解决C10K问题中的关键作用。IO复用技术允许单个进程同时管理多个IO对象,如文件、套接字和管道等,通过系统调用如`select`、`poll`和`epoll`,高效地处理大量并发连接。文章详细介绍了这些技术的工作机制,并结合实际案例,展示了它们在高并发场景下的应用效果。 ... [详细]
  • 在多线程环境中,Asio 的线程安全特性是一个重要议题。通常情况下,不同对象之间的并发操作是安全的,但对同一对象的并发访问则可能导致数据竞争和不一致。不过,Asio 提供了一些机制,如 `is_service` 类型,以确保某些服务类对象在多线程环境下的安全并发使用。这些机制通过内部同步机制来防止竞态条件,从而提高程序的可靠性和稳定性。 ... [详细]
  • Java 9 中 SafeVarargs 注释的使用与示例解析 ... [详细]
  • 可转债数据智能抓取与分析平台优化
    本项目旨在优化可转债数据的智能抓取与分析平台。通过爬取集思录上的可转债信息(排除已发布赎回的债券),并结合安道全教授提出的三条安全线投资策略,新增了建仓线、加仓线和重仓线,以提供更精准的投资建议。 ... [详细]
  • 利用PaddleSharp模块在C#中实现图像文字识别功能测试
    PaddleSharp 是 PaddleInferenceCAPI 的 C# 封装库,适用于 Windows (x64)、NVIDIA GPU 和 Linux (Ubuntu 20.04) 等平台。本文详细介绍了如何使用 PaddleSharp 在 C# 环境中实现图像文字识别功能,并进行了全面的功能测试,验证了其在多种硬件配置下的稳定性和准确性。 ... [详细]
  • 深入解析 C 语言与 C++ 之间的差异及关联
    深入解析 C 语言与 C++ 之间的差异及关联 ... [详细]
author-avatar
黑衬衫1994
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有