内容概述

  • 什么是操作系统
  • 操作系统的演变
  • 操作系统结果的分类

什么是操作系统

操作系统可以是:

  • 一个控制程序
  • 一个资源管理器
  • 一套标准库

操作系统通常有内核、命令行和 GUI 组成。我们研究的主要是内核。可以分成以下4个层次 :

  • 应用程序
  • 命令行程序、编译器、解释器、系统库
  • 内核
    • 内核向上提供系统调用接口
    • 同时调用下层提供的硬件抽象
  • 硬件设备

操作系统内核的特征:

  • 并发:OS 需要管理和调度多个同时运行的程序
  • 共享:对资源的互斥共享
  • 虚拟:对 CUP 和内存资源的虚拟化
  • 异步:程序的运行时时常会停止的,OS 需要保证程序展厅之后状态不变

操作系统的演变

  • 单用户系统:1945 - 1955
    • OS = 装载器 + 通用子程序库
    • 存在的问题:任务完全为穿行执行,由于读卡时间过长,执行时间比例降低
  • 批处理系统:1955 - 1965
    • 每个任务在每个组件中串行执行,总体看来是并行执行的
    • 解决了利用率的问题
  • 多道程序系统:1965 - 1980
    • 将多个程序储存在内存中,复用 CPU
    • 在程序进行 I/O 操作室将其阻塞,切换到别的程序
  • 分时系统:1970 -
    • 定义中断当前程序,实现对CPU的复用
  • 个人电脑操作系统
  • 分布式操作系统
  • ……

操作系统结构的分类

操作系统的结构可以分为以下几种:

  • 简单结构:没有拆分为模块,没有很好的分离接口和功能
    • 应用程序可以直接访问最底层的服务,也可以使用操作系统的服务
    • 例: MS-DOS
  • 分层结构:将操作系统分为几层,每层建立在底层之上
    • 优点:可移植性强
    • 缺点:层次过多会导致效率降低
    • 例:UNIX
  • 微内核结构:将一些内核服务移动到用户态,内核只保留进程通信和硬件支持功能
    • 优点:灵活,安全
    • 缺点:性能差
    • 例:目前的系统结构是微内核结构和分层结构的混合体
  • 外核结构:内核只起到资源的保护和隔离功能,操作系统原有功能由用户态操作系统库支持
  • 虚拟机结构:操作系统和虚拟机管理器交互,虚拟机管理器负责和硬件交互

习题

选择填空题


  • 当前常见的操作系统主要用C,C++,ASM编程语言编写。

  • “Operating system”这个单词起源于Operator

指的是原来的系统操作员。


  • 在计算机系统中,控制和管理各种资源、有效地组织多道程序运行的系统软件称作操作系统

对操作系统定义的考察。当然我觉得这个答案并不全面,加上“提供了一套标准库”(也就是系统调用)会更好。


  • 允许多用户将若干个作业提交给计算机系统集中处理的操作系统称为批处理操作系统。

这说明单用户系统是每个任务手动提交上去的。


  • 你了解的当前世界上使用最多的32bit CPU是ARM,其上运行最多的操作系统是Android

答案如 大专栏  OS Summary 1此,没有找到信源。不过知道这个也没什么意义。


  • 应用程序通过系统调用接口获得操作系统的服务。

系统调用是非常重要的。这是应用程序主动进入内核态的方式。


  • 现代操作系统的特征包括并发性,共享性,虚拟性,异步性,持久性

特征到底应该包括哪些也是见仁见智。OSTEP中总结出的三点是虚拟,并发和持久性。异步性和共享性大概可以归入并发性。同时我也觉得持久性未必是操作系统的特点,而是存储设备的特点。当然这也可能是我的理解不够。

UPD:操作系统本身也是需要从持久性存储设备中读入的。文件系统也是OS的重要组成成分。所以我想得可能太片面了。


  • 操作系统内核的架构包括宏内核,微内核,外核

这个答案和上面讲的并不相符。那么,当然应该填简单结构、分层结构、微内核结构、外核结构和虚拟机结构了。

简答题

请总结你认为操作系统应该具有的特征有什么?并对其特征进行简要阐述。

操作系统应该具有的特征有:虚拟性、并发性、异步性、共享性和持久性。

  • 虚拟性:虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。在操作系统中利用了多种虚拟技术,分别用来实现虚拟处理器、虚拟内存和虚拟外部设备。
  • 并发性:并发是指两个或多个事件在同一时间间隔内发生,在多道程序环境下,一段时间内宏观上有多个程序在同时执行,而在同一时刻,单处理器环境下实际上只有一个程序在执行,故微观上这些程序还是在分时的交替进行。操作系统的并发是通过分时得以实现的。操作系统的并发性是指计算机系统中同时存在多个运行着的程序,因此它具有处理和调度多个程序同时执行的能力。
  • 异步性:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。异步性使得操作系统运行在一种随机的环境下,可能导致进程产生于时间有关的错误。但是只要运行环境相同,操作系统必须保证多次运行进程,都获得相同的结果。
  • 共享性:系统中的资源可供内存中多个并发执行的进程共同使用。(事实上,只能做到互斥共享,或者说同时。)
  • 持久性:通过实现文件系统,操作系统可以将程序以及数据存储在磁盘等存储介质中。 详细解释可以参考操作系统的特征。

为什么现在的操作系统基本上用C语言来实现?为什么没有人用python,java来实现操作系统?

C语言是编译型语言,有良好的性能,能够直接嵌入汇编,可以方便地操作硬件;Python,Java无法保证性能,不能直接操作硬件。

不过,仍然是有人用这些语言来编写操作系统的,比如:

  • 用Java实现的操作系统:JavaOS
  • 用Python实现的操作系统:pycornpythonix
  • 用Rust实现的操作系统:Redox

参考:

https://github.com/chyyuu/os_course_info

https://zhanghuimeng.github.io/

http://www.xuetangx.com/courses/course-v1:TsinghuaX+30240243X+sp/about

OS Summary 1的更多相关文章

  1. 开源免费且稳定实用的.NET PDF打印组件itextSharp(.NET组件介绍之八)

    在这个.NET组件的介绍系列中,受到了很多园友的支持,一些园友(如:数据之巅. [秦时明月]等等这些大神 )也给我提出了对应的建议,我正在努力去改正,有不足之处还望大家多多包涵.在传播一些简单的知识的 ...

  2. RHEL7软件包管理

    本文介绍RHEL7的软件包管理 RHEL7下主要有RPM和YUM这两种包管理: YUM使用简单但需要联网,YUM会去网上的YUM包源去获取所需要的软件包并获取该包依赖的其他包 RPM的需要的操作精度比 ...

  3. Format a Hard Drive in Csharp C#格式化总结

    using System; using System.Diagnostics; using System.IO; using System.Linq; using System.Management; ...

  4. [WPF疑难]避免窗口最大化时遮盖任务栏

    原文 [WPF疑难]避免窗口最大化时遮盖任务栏 [WPF疑难]避免窗口最大化时遮盖任务栏 周银辉 WPF窗口最大化时有个很不好的现象是:如果窗口的WindowStyle被直接或间接地设置为None后( ...

  5. WPF换肤之四:界面设计和代码设计分离

    原文:WPF换肤之四:界面设计和代码设计分离 说起WPF来,除了总所周知的图形处理核心的变化外,和Winform比起来,还有一个巨大的变革,那就是真正意义上做到了界面设计和代码设计的分离.这样可以让美 ...

  6. WPF换肤之三:WPF中的WndProc

    原文:WPF换肤之三:WPF中的WndProc 在上篇文章中,我有提到过WndProc中可以处理所有经过窗体的事件,但是没有具体的来说怎么可以处理的. 其实,在WPF中,要想利用WndProc来处理所 ...

  7. DotNetBar ComboBoxEx

    DotNetBar ComboBoxEx using System; using System.ComponentModel; using System.Drawing; using System.R ...

  8. Format a Hard Drive in Csharp

    Article Author(s): Audric Thevenet All Rights Reserved. Here's how to format hard drives, floppies, ...

  9. saltstack(三) grains、pillar的使用

    一,grains grains: 这个跟puppet的facter功能一样.主要负责采集客户端一些基本信息, 这个也完全可以自定义,可以在客户端自定义,然后自动汇报上来:也可以从服务器端定义然后推下去 ...

随机推荐

  1. Cutting Sticks UVA - 10003(DP 仍有不明白的地方)

    题意:对一根长为l的木棒进行切割,给出n个切割点,每次切割的价值,等于需要切割的木头长度. 一开始理解错了,认为切割点时根据当前木条的左端点往右推算. 实际上,左端点始终是不变的一直是0,右端点一直是 ...

  2. centos 下使用 pytesseract 识别文字

    偶发一个想法搭一个验证码识别工具,网上查了一下有Tesseract 这个工具可以识别,所以有了后面一小时的搭建过程 ps:Ubuntu 下似乎可以直接用包管理工具来安装,我使用的源码编译安装 前提 由 ...

  3. 2019年java后端年终总结(六年开发经验),送给正在努力的你

    长大之后,时间总是过得飞快,转眼之间,今年已经只剩下1天了.小时候总感觉遥不可及.只在科幻小说里面出现的2020年,已经开始进入蓄力期了. 这篇文章主要和大家聊一聊分析2019年java技术的更新给大 ...

  4. 零相关|回归|相关|相关系数|回归解释相关|r判断相关性|相关系数的区间估计|数据类型|非线性回归

    零相关是什么? 零相关亦称“不相关”.相关的一种.两个变量的相关系数r=0时的相关.零相关表示两个变量非线性相关,这时两个变量可能相互独立,也可能曲线相关.对于正态变量,两个变量零相关与两个变量相互独 ...

  5. MACOSX下查看某个端口被哪个程序占用及杀进程方法

    sudo lsof -i :9000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 61342 a 313u IPv6 0x11111 ...

  6. tomcat高并发配置

    最近在项目中负责Tomcat高并发优化方案写一写新得. 优化1)tomcat默认的并发是75,可以启用线程池根据生产环境硬件设定线程池大小. <Executor name="tomca ...

  7. PAT甲级——1077.Kuchiguse(20分)

    The Japanese language is notorious for its sentence ending particles. Personal preference of such pa ...

  8. RDD(十)——案例实操

    需求: 数据结构:时间戳,省份,城市,用户,广告,中间字段使用空格分割. 样本如下: 1516609143867 6 7 64 16 1516609143869 9 4 75 18 151660914 ...

  9. DataSet,DataTable排序(转载)

    DataSet,DataTable排序   关于对已经绑定的DataSet的排序的问题: DataSet ds=new DataSet();DataView dv=new DataView();dv. ...

  10. javacv获取视频第一帧

    第一种是用ffmpeg工具,不过还得安装客户端软件,于是放弃了,还有一种是javacv开源工具,所以选择第二种: 第一种:ffmpeg工具 需要安装ffmpeg软件,支持windows和linux,视 ...