五大类型操作系统

(1). 批处理操作系统

  • 用户脱机使用计算机

    • 用户提交作业之后直到获得结果之前就不再和计算机打交道。
    • 作业提交的方式可以是直接交给计算中心的管理操作员,也可以是通过远程通讯线路提交。
    • 提交的作业由系统外存收容成为后备作业。
  • 成批处理
    • 操作员把用户提交的作业分批进行处理
    • 每批中的作业将由操作系统或监督程序负责作业间自动调度执行。
  • 多道程序运行
    • 按多道程序设计的调度原则, 从一批后背作业中选取多道作业调入内存并组织它们运行, 成为多道批处理。

(2). 分时操作系统 (Linux, Windows其实都是)

  • 特点:

    • 交互性

      • 用户可以在程序动态运行情况下对其加以控制。
      • 其次, 用户上机提交作业方便。
      • 分时系统还为用户之间进行合作提供方便。
    • 多用户同时性

      • 多个用户同时在自己的终端上上机, 共享CPU和其他资源, 充分发挥系统的效率。
    • 独立性

      • 客观效果上用户彼此间感觉不到有别人也在适用该台计算机, 如同自己独占计算机一样。

(3). 实时操作系统(嵌入式, 冰箱, 空调等家电的系统)

  • 特点

    • 实时时钟管理(定时处理和延时处理)。
    • 连续的人 - 机对话(必要的)
    • 要求采取过载保护措施。
      • 例如对于短期过载, 把输入任务按一定的策略在缓冲区排队(自旋?), 等待调度。
      • 对于持续性过载, 可能要拒绝某些任务的输入。
      • 在实时控制系统中, 则及时处理某些任务, 放弃某些任务或降低对某些任务的服务频率。
    • 高度可靠性和安全性采取冗余措施。双机系统前后台工作, 包括必要的保密措施等。

(4). 网络操作系统

  • 特点:

    • 计算机网络是一个互连的计算机系统的群体。

    • 这些计算机都是自治的, 每台计算机有自己的操作系统, 各自独立工作, 它们在网络协议控制下协同工作。

    • 系统互连要通过通信设施(硬件、软件来实现)。

    • 系统通过通信设施执行信息交换、资源共享、互操作和协作处理, 实现多种应用要求。

(5). 分布式操作系统

  • 特点:

    • 计算机网络的开发都遵循协议,而对于各种分布式系统并没有制定标准的协议。(计算机网络也可被认为是一种分布式操作系统)
    • 分布式系统要求一个统一的操作系统, 来实现系统操作的统一性
    • 分布式操作系统对用户是透明的
      • 但对计算机网络,若一个计算机上的用户希望使用另一台计算机上的资源,则必须明确指明是哪台计算机。
    • 分布式系统的基础是网络。分布式系统已不仅是一个物理上的松散耦合系统, 同时还是一个逻辑上紧密耦合的系统。
    • 分布式系统还处在研究阶段。而计算机网络已经在各个领域得到广泛的应用。

操作系统结构

(1). 单结构 (i.e. DOS)

  • 不同的功能归类为不同的功能块,每个功能块相对独立,它们通过一定的方式进行联系,不同的功能块可以相互调用它们提供的服务。这样,整个操作系统就像是一个巨大的单一体,运行在系统的内核态下,为用户提供服务。
  • 由于单结构系统的功能块之间结构复杂,修改某一功能块将导致其他功能块的修改,从而导致操作系统设计开发的困难。

(2). 分层结构

  • 将操作系统分成若干层,低层次的功能为其上一个层次的功能提供服务,而高层次的层尤为更高一个层次的功能提供服务。
  • 操作系统的所有功能都在内核态下运行,而从用户态转化为内核态需要一定的时间成本,这样造成了操作系统效率的嫡系。
  • 内核态运行的程序可以访问所有的系统资源,随着操作系统越来越大,设计可靠和安全的操作系统将变得异常困难。

(3). 微内核 (i.e. unix)

  • 目标是建立基于消息传送机制的最小内核,以便在此基础上建造对其他操作系统的模拟层来模拟其他操作系统的特性。
  • 微内核的有优点是大大提高了操作系统的兼容性,使得基于微内核的操作系统能够模拟其他操作系统的特性,从而支持许多运行于其他操作系统上的应用程序。

(4). 模块化方法 (i.e. linux)

  • 使用面向对象技术创建模块化内核。
  •  采用模块化结构的操作系统由一些不同功能的结构模块集合组成。
  • 每一个模块实现一个特定的功能,如调度、文件系统、设备驱动等等,并且这些模块可以根据需要自动进行加载和卸载。

  • 本质上,一个模块就是内核在运行时可以链接或者断开链接的一个对象文件。

现代操作系统的基本特征

(1). 并发性(Concurrency)

  • 并发: 在某一段时间间隔内,宏观上有多个程序在同时运行的状态。
  • 并行: 在某一段时间间隔内,宏观上有多个程序在同时运行的状态。

(2). 共享性(Sharing)

  • 多个用户或者程序共享操作系统中的软硬件资源。共享可以提高各种系统资源的使用效率。
  • 由于共享资源属性不同,产生了不同的共享方式:
    • 互斥共享方式(Mutual Exclusive):一段时间内只允许一个程序访问资源。互斥共享的设备有打印机、磁带机、绘图仪等等。
    • 同时访问方式:允许一段时间内有多个程序同时对它们进行访问。有些快速设备,如磁盘,尽管也只能让多个程序串行访问,但由于程序访问和释放资源的时间较短,在宏观上可以看成是同时共享。另外,只读数据和数据结构、只读文件和可执行文件等软件资源也可以同时共享。
    • 共享性和并发性相互依存,有一定的依赖关系,它们是操作系统最基本的两个特征。

(3). 虚拟性(Virtuality)

  • 指通过某种技术把一个物理实体变成若干逻辑上的对应物。
  • 操作系统也用到了很多虚拟技术来改善系统的性能,如虚拟存储,是为了提高内存利用率,在内存中部分装入程序,其余部分放在虚拟内存,也就是硬盘的一部分。
  • SPOOLING技术则是为了减小等待和请求的重复申请,允许硬件设备虚拟为多台虚拟设备,实现脱机工作的方式。

(4). 异步性(Asynchronism)

  • 指系统中的多个程序以不可预知的速度向前推进。
  • 由于系统中的处理器资源往往是稀缺的,因此程序的执行不可能一气呵成,而是以走走停停的方式运行的。

操作系统类型&操作系统结构&现代操作系统基本特征的更多相关文章

  1. 操作系统基本概念(内核态与用户态、操作系统结构)-by sixleaves

    内核态与用户态(为什么存在这种机制.程序应处于哪个状态.如何判断当前所处状态.哪些功能需要内核态.如何实现这种机制) 1.首先我们应该思考清楚为什么会有内核态和用户态?(为什么存在这种机制) 因为计算 ...

  2. 深入解析Windows操作系统笔记——CH2系统结构

    2.系统结构 本章主要介绍系统的总体结构,关键部件之间的交互,以及运行在什么环境. 2.系统结构 2.1 需求和设计目标 2.2 操作系统模型 2.3 总体结构 2.3.1 可移植性 2.3.2 对称 ...

  3. Java 判断操作系统类型(适用于各种操作系统)

    Java 判断操作系统类型(适用于各种操作系统) 最近一段时间写一个授权的程序,需要获取很多信息来保证程序不能随意复制使用,必须经过授权才可以. 为了限制用户使用的操作系统,必须有统一的方法来获取才可 ...

  4. H5案例分享:使用JS判断客户端、浏览器、操作系统类型

    使用JS判断客户端.浏览器.操作系统类型 一.JS判断客户端类型 JS判断客户端是否是iOS或者Android手机移动端 通过判断浏览器的userAgent,用正则来判断手机是否是ios和Androi ...

  5. JS判断访问设备、客户端操作系统类型

    先给出一个实例:判断windows.linux.android 复制以下代码另存为html文件即可. <html> <head> <title>判断操作系统< ...

  6. python实例[判断操作系统类型]

    参考文献:http://bbs.chinaunix.net/thread-1848086-1-1.html 经常地我们需要编写跨平台的脚本,但是由于不同的平台的差异性,我们不得不获得当前所工作的平台( ...

  7. FreePascal - CodeTyphon交叉编译,在一个操作系统生成各个操作系统可以运行的程序!

    致谢:[XE3]MN,让我加快完成了使用CodeTyphon进行交叉编译! CodeTyphon版本: 6.0 下载:http://www.pilotlogic.com/codetyphon/zips ...

  8. [转]JS判断访问设备、客户端操作系统类型

    本文转自:http://www.cnblogs.com/duanguyuan/p/3534470.html 先给出一个实例:判断windows.linux.android 复制以下代码另存为html文 ...

  9. php获取当前操作系统类型

    如何使用 php 获取当前操作系统类型呢? 严格来说这里分两种情况,一种情况是获取 服务器端 的操作系统类型,一种是获取 客户端 的操作系统类型. 下面将对如何使用php获取这两种情况下的操作系统类型 ...

随机推荐

  1. 虚拟机centos7 识别不出网卡的解决方案

    问题提出 之前在VMware安装centos 7(网络连接采取Nat方式),进入Centos 7后成功开启了sshd服务,然后在主机(我的windows系统)用puTTY软件可以ssh到虚拟机上.后来 ...

  2. CentOS6.9安装redis

    目录 Centos6.9下的Redis安装和配置(最简易方式) redis客户端登录方式 Centos6.9下的Redis安装和配置(最简易方式) 在服务器上创建一个目录/service,然后下载re ...

  3. SpringMVC的@ControllerAdvice注解

    @ControllerAdvice顾名思义,他是一个Controller的增强,是一个异常处理类.常用于实现下面三个方面的功能: 1.处理全局异常,结合方法型注解@ExceptionHandler,用 ...

  4. vim学习--usr03 moving around

    Word movement 小写的"w""ge""e""b" w表示向后移动到一个单词开头 ge表示向前移动到一个单词末 ...

  5. bzoj 2111: [ZJOI2010]Perm 排列计数

    神题... 扒自某神犇题解: http://blog.csdn.net/aarongzk/article/details/50655471 #include<bits/stdc++.h> ...

  6. 使用redis集群中遇到的错误

    一. 上述错误的原因: 1.在redis服务器上关闭防火墙 2.可能是host写错了 上述错误的原因: 配置文件中jedisClient代表的是单机版的redis,但是在类中转化的时候转化的是集群版

  7. class中static总结-静态成员函数和静态成员变量

    C++规定const静态类成员可以直接初始化,其他非const的静态类成员需要在类声明以外初始化,我们一般选择在类的实现文件中初始化,初始化的方式是书写一遍类型的定义: //A.cpp ); //使用 ...

  8. 【富文本、JS】将接口传来的全部纯URL替换为富文本插件能识别到的img标签

    replaceURLWithImage (text) { var a = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0 ...

  9. dateDiff 用法

    SELECT DATEDIFF(yy,'2018-3-10 16:40:00',getdate())SELECT DATEDIFF(mm,'2018-3-10 16:40:00',getdate()) ...

  10. NO30 磁盘分区--Raid--ext2文件系统

    Raid: ext2文件系统: