操作系统----计算机体系结构作业

操作系统第二章复习

  • 一、关于虚拟机
    • 定义:
    • 区别
    • 优点
  • 二、系统调用的过程
  • 三、操作系统的启动
  • 四、JVM
    • 结构
    • 功能
  • 五、拓展部分
    • vapp
    • 云计算
    • Sun Microsystems
    • OpenJDK
  • 总结



提示:以下是本篇文章正文内容,下面案例可供参考

一、关于虚拟机

请解释什么是虚拟机?虚拟机架构的操作系统与基于微内核的操作系统区别是什么?使用虚拟机架构来设计操作系统有什么优点?对于用户有什么好处?

定义:

虚拟机是利用软件来模拟出具有完整计算机系统功能的工具。与物理计算机一样,虚拟机的功能是运行操作系统和应用程序。
虚拟机有自己的一套配置文件,但是依赖于主机的硬件的支持。每个虚拟机都具有完备的虚拟设备,这些设备可提供与物理硬件相同的功能。

区别

1)微内核并非是一个完整的OS,而只是将操作系统中最基本的部分放入内核;虚拟机是模拟一个完整的计算机系统,具备一个完整的OS。
虚拟机是利用共同的硬件创造虚拟内存,确保能同时运行不同的操作系统。 微内核是通过减少内核的功能,把操作系统模块化,只让内核工作在核心态,来提高可靠性,确保模块的中断不会导致系统的死机。
2)虚拟基础架构,可以实现多台计算机在整个基础架构范围内共享多台计算机的物理资源,包括虚拟基础架构从底层硬件直到上层的虚拟化软件。

优点

每个虚拟计算机都可以是一个能在完全隔离环境中独立运行一个完整的计算机系统。虚拟机的另一个特点是不需要分区或重新开机就能在同一台PC上使用两种以上的操作系统。
虚拟机对于资源的共享是间接的,安全性高。对于用户而言,无需切换操作系统,可以同时启用两个操作系统来执行任务,功能齐全,而且可靠性高。
1.兼容性:虚拟机与所有标准的 x86 计算机都兼容;
2.隔离:虚拟机相互隔离,就像在物理上是分开的一样;
3.封装:虚拟机将整个计算环境封装起来;
4.独立于硬件:虚拟机独立于底层硬件运行。

二、系统调用的过程

用户程序在需要OS提供某种服务时,是通过系统调用来完成的。请以一个具体例子(如读写磁盘、在显示屏幕上显示字符等)说明系统调用的处理过程。你可以按照一个你熟悉的操作系统(如UNIX、WINDOWS、LINUX)来说明,也可以介绍你自己根据某个硬件环境设计的系统调用的处理过程。
系统调用,是屏蔽底层物理结构,提供操作系统服务的接口。用户调用高级语言库,高级语言库通过系统调用执行机器指令。
UNIX的read()函数形式:ssize_t read(int fd,void *buf,size_t count),三个参数分别是文件描述符,数据缓冲区地址,最大字节数,用户把参数传给系统调用之后,操作系统从用户态到内核态,对应的机器指令、然后返回。

三、操作系统的启动

当计算机系统通上电源后,是如何完成操作系统的引导和启动的?
计算机开机后,CPU处于实模式,CPU的第一条指令是通过CS:IP来取得, CS=0xFFFF,IP=0x0000。这个地址是映射在主板的BIOS ROM中。此时ROM中的程序会检测RAM、键盘、显示器、软硬磁盘是否正确工作。同时会从地址0开始设置BIOS的中断向量表。接着,BIOS跳转到操作系统所在的磁盘存储区,把操作系统从磁盘中取到内存中执行,从这一刻起,操作系统就接管了计算机的控制权。

四、JVM

请介绍Java虚拟机的工作机制。

结构

Java虚拟机包括运行时数据区、执行引擎、本地库接口。其中方法区和堆是所有线程共享的,虚拟机栈、本地方法栈、程序计数器是每个线程创建时系统分配的独立空间。
虚拟机栈描述的是 Java 方法执行的内存模型:每个方法在执行时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行结束,就对应着一个栈帧从虚拟机栈中入栈到出栈的过程。
本地方法栈,区别于 Java 虚拟机栈的是,Java 虚拟机栈为虚拟机执行 Java 方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的 Native 方法服务。
Java 堆,对于绝大多数应用来说,这块区域是 JVM 所管理的内存中最大的一块。堆线程共享,主要是存放对象实例和数组。内部会划分出多个线程私有的分配缓冲区(Thread Local Allocation Buffer, TLAB)。可以位于物理上不连续的空间,但是必须是逻辑上连续的。
方法区属于共享内存区域,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

功能

首先,手写的java代码会被编译器编译成字节码文件(.class)。JRE(运行环境)的加载器从硬盘中读取class文件,载入到系统分配给JVM的内存区域–运行数据区(Runtime Data Areas). 然后执行引擎解释或者编译类文件,转化成特定CPU的机器码,CPU执行机器码,从而实现了程序的执行。

五、拓展部分

vapp

vApp,即vSphere vApp 是用于对应用程序进行打包和管理的格式。一个 vApp 可包含多个虚拟机。vApp是用于存储一个或多个虚拟机的容器,可以设置CPU、内存资源分配,IP分配策略。
配置虚拟机的启动和关机顺序,通过将虚拟机分配到多个组更改启动和关机顺序:同一组的实体会在下一组中的实体启动之前启动,关机时顺序相反。比如我们可以将数据库服务器放到第 一组,中间件服务器放到第二组,Web服务器放到第三组,保证优先启动数据库服务器。

云计算

云计算是一种服务模式,是一种已经存在很久的服务模式。其思路就是把各种资源整合起来,然后租给有需要的用户。
把这种模式移植到传统IT行业、把租的对象具象为服务器资源,云计算就诞生了。为什么称为云计算,因为服务器的功能就是提供计算能力,把服务器租给你相当于卖给你服务器租赁期间的计算能力,因此称为云计算。
那么很容易想到,实现云计算,需要把服务器搬来搬去,而且用户还需要有自己的机房来放租来的服务器。有没有某种技术能够不需要移动服务器,也能解决前面提到的问题,把CPU、内存、磁盘等资源打包租给用户?
虚拟化技术就可以完美解决这个问题,而虚拟机是虚拟化实现之一,但不是唯一,还有可能是容器,甚至是真正的物理机(裸机)。
PaaS服务:你写了一个Web项目并打好了war包,但自己手头没有服务器来跑,你可以把你的war包交给云服务提供商,他们负责给你运行,你不用租整个服务器,也不用搭建运行环境,打好war包拷给他们就好,他们帮你部署运行。
SaaS服务:你手头有很多照片,你想把照片中的人物提取出来,但你自己不会写代码实现,你可以把照片发给云服务商,他们通过自己的脸部识别技术处理后把结果发给你。
我们之所以容易混淆虚拟机和云计算,是因为虚拟机在云计算中太普遍了,它是云计算中最活跃的主体,也是核心之一,很多服务都是围绕着虚拟机提供服务。
云计算本质是思维的转变,而非技术的革新。你把计算能力给别人用—云计算,存储给别人用—云存储,数据库给别人用—云数据库(DBaaS),负载均衡给别人用—LBaaS,防火墙给别人用—FWaaS。但实现手段依然是传统的IT技术,比如分布式技术、虚拟化技术、网络技术、自动化运维技术、容灾技术等,并没有造出新技术,而只是通过这些技术组合把一些资源、功能产品或者软件等封装成API对外提供服务。

Sun Microsystems

Sun Microsystems是IT及互联网技术服务公司(已被甲骨文收购)Sun Microsystems 创建于1982年。主要产品是工作站及服务器。

OpenJDK

OpenJDK是一款只能运行在i386 和AMD-64机器上的软件。


总结

暂无

你可能感兴趣的:(操作系统)