3.操作系统简单介绍

操作系统

其实 操作系统并不是与计算机硬件一起诞生的

它是在人们使用计算机的过程中,为了管理硬件资源,提高性能提高资源利用率,而逐步地形成和完善起来的。

操作系统也是一种程序,负责管理系统资源

上电自检(经过BIOS)之后,处理器第一个要处理的程序

之所以叫做操作系统,其实就相当于它提供了一个工作台

让你可以更加方便的操作计算机的软硬件资源

是机器的一种封装,对于人机交互提供了统一的操作方式

自从第二代晶体管计算机之后,计算机的性能有了很大的提升

与之矛盾的自然是计算机手动输入速度慢

为了提供系统利用率,出现了批处理系统

用户将一批作业提交给操作系统后就不再干预,由操作系统控制它们自动运行。

显然不具备任何交互性,只是提高了系统的利用率

其中有

联机批处理系统,联机就是主机自己来控制输入输出

输入输出时,计算机的CPU是空闲的,需要等待数据传输完成

 

脱机批处理系统就是输入输出不在交由主机处理,托管到另一个台机器

显然,处理机和主机可以并行工作,他们通过高速磁带进行对接

但是仅仅只能执行一个程序

人们当然希望计算机可以同时执行多个任务

然后很自然的出现了多道程序系统

允许多个程序同时进入内存并运行

交替在CPU中运行,它们共享系统中的各种硬、软件资源。

多道批处理系统

顾名思义就是批处理与多道程序的结合,兼顾了多道与批处理的优点

不过没有交互性

分时系统

把CPU时间分成时间片,各个任务按照时间片轮流执行,分时就是分配时间片

分时系统的实时性交互性比多道程序有更大的提高

实时系统

还有一些特定的场景,对于实时性要求更高,比如军事设备等

分为实时控制系统/实时信息处理系统

响应更加及时,更加可靠,平时场景一般是用不到的

可以看得出来,操作系统的发展中有几个主要矛盾

CPU性能与手工操作的矛盾

CPU性能与输入输出的矛盾

运行单一任务与希望可以执行多程序之间的矛盾

交互性差和希望可以提供更强交互性之间的矛盾

实时性差与希望可以提供更加实时可靠系统之间的矛盾

功能单一与希望可以提供通用功能系统之间的矛盾

整个发展过程就是为了解决这些矛盾

发展的结果也就是CPU的利用率大幅度上升,功能更加完备

可以同时执行多个任务

实时性交互性更高更可靠

也出现了更为通用的计算机

操作系统的类型更多的可以理解为逻辑上的意义,他们可以相互结合,比如上面的多道批处理

还有分时批处理  实时批处理 等

Unix是最早的通用操作系统

此后又出现了linux/windows/苹果

计算机由硬件和软件构成

我们可以认为操作系统是计算机软件程序和硬件之间的一个薄层

这个薄层封装了底层的硬件实现

基本功能是:

防止硬件被应用程序随意滥用,并且向应用程序提供了简单一致的机制来控制各种不同的硬件设备

操作系统通过几个基本的抽象概念来达到这个目的

/虚拟内存/进程/文件/

既然是抽象,那自然是像译码器一样,转换了一种描述呈现表达操作方式

文件

文件是对IO设备的抽象

就是字节序列而已,所以每个IO设备,哪怕是键盘显示器都可以看成是文件

向应用程序提供了一个统一的操作视图

也可以理解为格式,也就是对于所有程序来说 所有的文件都是这样子的

不管你到底是什么样子的IO设备,应用程序完全不用关注他具体的样子

操作系统会提供一致性的解决方案

虚拟内存

虚拟内存是对主存和磁盘I/O的设备的抽象

是计算机系统内存管理的一种技术。

它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间)

好像自己都独占使用主存

通过提供连续的内存空间,每个进程看到的虚拟地址空间由大量的固定的区块构成

其实可以理解为户型图,每个进程的户型都一样

包括程序代码和数据区/堆/栈 等

他们看到的地址空间是一致的

而不用你自己费心的去管理地址

现在的计算机都可以多任务同时执行,之前提到的中断正是这种功能的硬件基础

没有哪个程序会一直独占处理器

每个程序都需要内存,想要多任务运行自然需要更多的内存

怎么才能在有限的内存空间服务于越来越多的程序呢?

注意到,虽然内存中有许多个程序同时运行,但是同一时间点,只有一个处理器在执行

如果内存不够的话,可以让暂时不用的数据和代码 存放到磁盘

腾出来空间加载将要使用的部分

如果需要的话,再将它们用同样的方式加载回来

这样编写程序的时候,不用关注到底是否有内存可用,

对于当前程序,他会假定他肯定有足够的内存使用

因为这部分内存并不存在,而是位于磁盘上,所以叫做虚拟内存

硬盘的速度是很慢的,如果需要访问的内容不在内存中,而是从磁盘载入,代价是巨大的

所以计算机自然会很慢

也就是说,虚拟内存牺牲执行效率换执行空间(同时运行更多的程序)

对于程序员来说,操作系统提供的虚拟内存,可以说是给程序的运行提供了统一的内存空间

 

进程

进程是对处理器 主存 I/O设备的抽象

每个程序在计算机上运行,看上去可以独占的使用处理器,主存和I/O设备

处理器好像在不间断的一条接一条的执行程序中的指令

对于程序来说好像只有他自己的程序的代码和数据在内存中

好像跟其他的正在运行的应用程序并没有关系

这是操作系统提供的一种假象,这就是进程的概念

进程是对处理器 主存 I/O设备的抽象,也即是一个正在运行的程序的一种抽象

进程也是硬件中断以及系统cpu时间片调度的产物

一个正在运行的程序,这是一件抽象的事情,

想要把它具体的映射到系统中,而且还能有中断,还能够重新返回现场继续执行

你必须用具体的信息去描述记录跟踪它的运行

操作系统保持跟踪进程运行时所需要的所有信息,这种信息也叫作上下文

它包括很多信息,自然取决于操作系统的底层实现

可能包括PC和寄存器的值,主存的内容等

操作系统想要把控制权从当前进程转移到某个新的进程,就会进行上下文切换

也就是保存当前的上下文,恢复进程的上下文

当然现代操作系统一个进程又实际的被分为多个称之为线程的执行单元组成

每个线程都运行在进程上下文,共享同样的代码和全局数据

操作系统也是计算机发展中的一个伟大创举

他隐藏了大量的底层细节,提供了大量方便的抽象

总结:

操作系统就是对硬件的封装,提供简单统一的访问形式.

原文地址:https://www.cnblogs.com/noteless/p/9243349.html

时间: 2024-08-30 13:50:18

3.操作系统简单介绍的相关文章

Android发展简单介绍

Android一词的本义指“机器人”,同一时候也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件.眼下最好的是Android2.0的摩托罗拉Droid Android公司介绍 国家:美国 业务:手机软件,操作系统 成立于:2003年 创办人:Andy Rubin,Andy McFadden.Richard Miner Chris White 中文名:安卓 眼下

MPI编程简单介绍

第三章MPI编程 3.1 MPI简单介绍 多线程是一种便捷的模型,当中每一个线程都能够訪问其他线程的存储空间.因此,这样的模型仅仅能在共享存储系统之间移植.一般来讲,并行机不一定在各处理器之间共享存储,当面向非共享存储系统开发并行程序时,程序的各部分之间通过来回传递消息的方式通信.要使得消息传递方式可移植,就须要採用标准的消息传递库.这就促成的消息传递接口(Message Passing Interface, MPI)的面世,MPI是一种被广泛採用的消息传递标准[1]. 与OpenMP并行程序不

iOS开发拓展篇-XMPP简单介绍

iOS开发拓展篇-XMPP简单介绍 一.即时通讯简单介绍 1.简单说明 即时通讯技术(IM)支持用户在线实时交谈.如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容 有许多的IM系统,如AOL IM.Yahoo IM. MSN以及QQ,它们最大的区别在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传输协议 协议用来说明信息在网络上如何传输,如果有了统一的传输协议,那么应当可以实现各个IM之间的直接通讯,为了创建即时通讯的统一标准,目前已

Maven实战之初识MavenMaven的简单介绍

Maven实战之初识MavenMaven的简单介绍 作用:Maven主要用于项目的构建,管理项目的依赖以及项目的信息(自动化构建.编译.单元测试.生成文档.打包.部署) 优势:相对于Ant.Make等,Maven抽象构建过程,提供构建任务的实现,自动化构建,有效地提高了开发效率,使开发人员可以集中精力在主要的开发任务上.而且Maven是跨平台工具,意味着在主流操作系统中,Maven都提供了对应的技术支持 使用注意:需要在JDK1.4及以上版本使用 Maven的安装下载地址:Maven下载地址,选

LVS简单介绍

  简单介绍 lvs(Linux virtual server)是由章文嵩博士主导开发的工作在四层(传输层)的负载均衡软件. 3种负载方式 1.Virtual Server via Network Address Translation(VS/NAT) 通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器:真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程. 2.Virtual Server via IP Tunn

Android开发自学笔记(Android Studio)—4.界面编程与View组件简单介绍

一.引言 Android应用开发最重要的一份内容就是界面的开发,无论你程序包含的内容多么优秀,如若没有一个良好的用户交互界面,最终也只是会被用户所遗弃.Android SDK提供了大量功能丰富的UI组件,开发者只需要拖拖拽拽就能完成简单的应用,这些只是界面的展示,如果要完成优秀的用户交互,事件响应机制当然也是重点,这是后话. Android SDK中绝大部分UI组件都在androd.widget及其子包.android.view及其子包下,Android应用中的所有UI组件都继承了View类,V

CORBA的简单介绍及HelloWorld

CORBA概述 CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是由OMG组织制订的一种标准的面向对象应用程 序体系规范.或者说 CORBA体系结构是OMG为解决分布式处理环境(DCE)中,硬件和软件系统的互连而提出的一种解决方案. OMG:Object Management Group,对象管理组织.是一个国际化的.开放成员的.非盈利性的计算机行业标准协会,该协会成立于1989年,其职责是为应用开发提供一个公共框架,制订

lua语言的简单介绍(1)

第一次写,写的不好希望各位看官多包涵 首先简单介绍下lua语言 Lua[1]是一个小巧的脚本语言.是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy.Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发. 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能.Lua由标准C编写而成,

【转】深入浅出JMS(二)--ActiveMQ简单介绍以及安装

现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的. 这篇博文介绍一款开源的JMS具体实现——ActiveMQ.ActiveMQ是一个易于使用的消息中间件. 消息中间件 我们简单的介绍一下消息中间件,对它有一个基本认识就好,消息中间件(MOM:Message Orient middleware). 消息中间件有很多的用途和优点: 1. 将数据从一个应用程序传送到另一个应用程序,或者从软件的一个模块传送到另外一个模块: 2.