综述

进程可以视为由三部分组成:

  • 一段可执行的程序
  • 程序所需要的相关数据(变量、工作空间、缓冲区等)
  • 程序的执行上下文

执行上下文又称进程状态,是操作系统用来管理和控制进程所需的内部数据。这种内部信息和 进程是分开的,因为操作系统信息不允许被进程直接访问。

给每个进程(包含程序、数据和上下文信息)分配一块存储器区域,并且由操作系统建立和维护的进程表进行记录。

线程,本质上,一个被分配了资源的进程可分解为多个并发的线程,这些线程相互协作执行,完成进程的工作。

内存管理

通过支持模块化程序设计的计算环境和数据的灵活使用,可以很好的满足用户的要求。系统管理员需要有效且有条理地控制存储器分配。操作系统为满足这些要求,担负5个基本的存储器管理责任

  • 进程隔离:操作系统必须保护独立的进程,防止互相干涉各自的存储空间,包括数据和指令。
  • 自动分配和管理
  • 支持模块化程序设计:程序员应该能够定义程序模块,并且动态地创建、销毁模块,动态的改变模块大小。
  • 保护和访问控制:操作系统必须允许一部分内存可以由各种用户以各种方式进行访问。
  • 长期存储

信息保护和安全

我们关心对计算机系统的控制访问和其中保存的信息。大多数与操作系统相关的安全和保护问题可以分为四类:

  • 可用性:保护系统不被打断
  • 保密性:保证用户不能读到未授权访问的数据
  • 数据完整性:保护数据不被未授权修改
  • 认证:涉及用户身份的正确认证和消息或数据的合法性
    这里写图片描述

调度和资源管理

操作系统的一个关键任务是管理各种可用资源(内存空间、I/O设备、处理器),并调度各种活动进程使用这些资源。任何资源分配和调度策略都必须考虑三个因素:

  • 公平性:通常希望给竞争使用某一特定资源的所有进程提供几乎相等和公平的访问机会
  • 有差别的响应性:操作系统可能需要区分有不同服务要求的不同作业类。
  • 有效性

操作系统中维护这多个队列,每个队列代表等待某些资源的进程的简单列表。短程队列由在内存中并等待处理器可用的随时准备运行的进程组成。一个常用的策略是依次给队列中的每个进程一定的时间,称为时间片轮转技术。另一种策略是给不同的进程分配不同的优先级,根据优先级进行调度。

长程队列是等待使用处理器的新作业的列表。操作系统通过把长程队列中的作业转移到短程队列中,实现往系统中添加作业,这时内存的一部分必须分配给新到来的作业。

每个I/O设备都有一个I/O队列,可能有多个进程请求使用同一个I/O设备。所有等待使用一个设备的进程在该队列中排队,同时操作系统必须决定把可用的I/O设备分配给哪个进程。
这里写图片描述

现代操作系统的特征

  • 微内核体系结构:只给内核分配一些最基本的功能,包括地址空间、进程间通信和基本的调度。其他的操作系统服务都是由运行在用户态下且与其他应用程序类似的进程提供的,这些进程可根据特定的应用和环境需求进行定制,有时也称这些进程为服务器。这种方法把内核和服务程序的开发分离开,可以为特定的应用程序或环境要求定制服务程序。
  • 多线程:把执行一个应用程序的进程划分为可以同时运行的多个线程
    • 线程:可分派的工作单元。它包括处理器上下文环境(程序计数器和栈指针)和栈中自己的数据区域。线程顺序执行,并且是可中断,这样处理器就可以转到另一个线程。
    • 进程:一个或多个线程和相关系统资源(数据和代码的存储空间、打开的文件和设备)的集合。严格对应于一个正在执行的程序的概念。
  • 对称多处理:不仅指计算机硬件体系结构,而且也反映了该硬件体系结构的操作系统行为。
  • 分布式操作系统
  • 面向对象设计:面向对象设计的原理用于给小内核增加模块化的扩展。在操作系统一级,基于对象的结构使程序员可以定制操作系统,而不会破坏系统的完整性。

虚拟机和虚拟化

一、虚拟机

一般来说,应用程序直接运行在操作系统上,操作系统之下的硬件可能是个人计算机或服务器。无论是个人计算机还是服务器,在同一时间里只能运行一个操作系统。因此,应用程序提供商必须针对目标运行平台对程序的一些部分进行相应的修改。而针对这个难题的一种解决方法就是虚拟化。虚拟化技术使得一个硬件平台可以同时运行多种不同的操作系统。对于具有虚拟化技术的机器来说,可以在单个机器上管理多种应用程序,即使这些应用程序是为不同的操作系统开发的。

典型虚拟机技术的体系架构
这里写图片描述

虚拟机管理程序(Virtual machine monitor)运行在宿主操作系统上。模拟硬件设备的虚拟机由VMM支持和管理。每个虚拟机上都可以运行一个独立的操作系统。VMM负责管理这些操作系统与真正的处理器、存储介质及网络之间的通信。在执行程序时,VMM会将处理器的控制权交给虚拟机上的操作系统。

虚拟机架构

应用程序编程接口(API)、应用程序二进制接口(ABI)及指令集体系结构(ISA)。

设想一个正在运行可执行程序的进程,从这个进程的角度来看,它运行在这样一个“机器”上,这个“机器”为它提供了虚拟地址空间、寄存器、用户级的机器指令、用来处理I/O的系统调用。因此,ABI描述的其实就是从进程角度看到的“机器”。

从应用程序的角度看,运行它的机器的特性是由高级语言的功能、操作系统及系统调用库来指明的。因此,API描述的其实就是从应用程序的角度看到的“机器”。

对于操作系统来说,机器硬件决定了操作系统运行所需的及多进程并发执行的环境。这些进程共享同一个文件系统及其他的I/O资源。硬件提供了真实的内存及I/O资源供进程使用。同时也让进程之间可以交互。所以,从操作系统的角度来看,ISA描述的是操作系统与“机器”之间的接口。

两种虚拟机实现方式:进程虚拟机和系统虚拟机。

进程虚拟机:进程虚拟机为进程提供了一套ABI。它将一个平台下的操作系统及用户级指令集转换为另一个平台下对应的元素。进程虚拟机就是一个进程运行的虚拟平台。所以进程虚拟机伴随进程的创建而创建,伴随进程的终结而终结。

为了提供跨平台移植的特性,进程虚拟机的一大应用是搭建高级语言应用程序的跨平台环境。虚拟机虚拟出的ABI并不是模仿某种特定机器制定的。这一套ABI标准是为了更容易支持一种或多种高级语言而设计的,并且它能够很容易地移植到多种ISA上。这种技术的两个应用就是Java虚拟机体系结构和.NET Framework(微软通用语言基础架构)。

系统虚拟机:虚拟机软件将一种硬件平台的ISA转换为另一种硬件平台的ISA。进程虚拟机技术软件利用了主系统提供的服务,而在系统虚拟机技术中,与其说主操作系统结合了虚拟机的能力,不如说在逻辑上是没有一个专门的独立的主操作系统。虚拟机软件管理着若干客户操作系统,每个虚拟机拥有自己的操作系统。虚拟机管理器模拟硬件ISA,子操作系统因此有可能运行在与主机的ISA不同的ISA上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值