我们可以把操作系统看成是应用程序和硬件之间插入的一层软件,所有应用程序对硬件的操作尝试都必须通过操作系统。

操作系统的两个基本功能:
(1)防止硬件被失控的应用程序滥用
(2)向应用程序提供一致的机制来控制复杂而又通常大不相同的低级硬件设备。操作系统通过几个基本的抽象概念(进程,虚拟内存和文件)来实现这个两个功能。

文件是对I/O设备的抽象表示
虚拟内存是对主存个磁盘I/O设备的抽象表示,进程则是对处理器,主存和I/O设备的抽象表示。

进程

进程是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像是单独占使用硬件。并发运行是指一个进程的指令可以和另一个进程的指令交错执行。在大多数系统中,需要运行的进程数是多于可以运行他们的CPU个数的。传统系统在一个时刻只能执行一个程序,而先进的多核处理器同时能够执行多个程序,这是通过处理器在进程间切换来实现的。操作系统实现这种交错执行的机制称为上下文切换。

讨论单个CPU的单处理器系统的情况

操作系统保持跟踪进程运行需要的所有状态,这种状态就是上下文,包括许多信息,比如PC和寄存器文件的当前值,以及主存中的内容。在任意时刻,单处理器系统都只能执行一个进程的代码。当操作系统决定把控制权从当前进程转移到某个新进程时,就会执行上下文的切换,即保存当前进程的上下文,恢复新进程的上下文,然后将控制权传递给新进程,新进程就从他上次停止的地方开始。
从一个进程到另一个进程的切换是由操作系统内核(kernel)管理的。内核是从操作系统代码常驻内存的部分,当应用程序需要操作系统的某些操作时,比如读写文件,他就执行一条特殊的系统调用指令,将控制权传递给内核,然后内核执行被请求的操作并返回应用程序。注意,内核不是一个独立的进程。相反,它是系统管理全部进程所用代码和数据的集合。

线程

尽管通常我们认为一个进程只有单一的控制流,但是在现代系统中,一个进程实际上可以由很多可以称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。由于网络服务器中对并行处理的需求,线程成为越来越重要的编程模型,因为多线程之前比多进程之间更容易共享数据,线程一般而言比进程更高效。

虚拟内存

虚拟内存是一个抽象的概念,它为每一个进程提供了一个假象,即每个进程都在单独的使用主存。每个进程看到的内存是一一致的,称为虚拟地址空间。

并发和并行

并发:指一个同时具有多个活动的系统
并行:指的是用并发来使一个系统运行的更快。

计算机系统中抽象的重要性

抽象是计算机科学中最为重要的概念之一。比如我们为一组函数规定一个简单的应用程序接口(API)就是一个很好的编程习惯,程序员无需了解它内部的工作便可以使用这些代码。不同的编程语言提供不同形式和等级的抽象支持,例如Java类的声明和C语言的函数原型。
如下图,在处理器里,指令集架构提供了对实际处理器硬件的抽象。使用这个抽象,机器代码表现得几号箱运行在一个依稀执行一条指令的处理器上。底层的已经远比抽象描述的要复杂惊喜,它并行的执行多条指令,但又总是与那个简单有序的模型保持一致。只要执行的模型一样,不同的处理器实现也能执行同样的机器代码,而有提供不同的开销和性能。

几个抽象概念的额介绍:
文件:对I/O设备的抽象
虚拟内存:对程序存储器的抽象
进程:对一个正在运行的程序的抽象
虚拟机:对整个计算机的抽象,包括操作系统,处理器和程序

计算机系统是由硬件和系统软件组成,它们共同协作以运行应用程序,计算机内部的信息被表示为一组组位,它们依据上文有不同的解释方式,程序被其他程序翻译成不同形式,开始是ASCII文本,然后被编译器和链接器翻译成二进制可执行文件。
处理器读取并解释存放在主存中的二进制指令,因为计算机花费大量时间在内存,I/O设备和CPU寄存器之间复制数据,所以系统中的存储设备划分成层次结构-CPU寄存器在顶部,接着是多层的硬件告诉缓存存储器,DRSM主存和磁盘存储器。在层次模型中,位于更高层的存储设备比低层的存储设备要快,单位比特造价也更高。层次结构中较高层次的存储设备可作为较低层析的存储设备的告诉缓存。理解这种存储设备,可以优化C程序的性能。

理解计算机(一)计算机中的抽象概念相关推荐

  1. linux分区概念理解,在linux安装中的分区概念(转)

    在linux安装中的分区概念(转)[@more@] 首先我们需要知道,硬盘分区的存在,是由硬盘的物理特性决定的,并不会因为不同的操作系统而有所改变. 请您把一块硬盘想象为一本书--即便您不喜欢读书,您 ...

  2. Flink 理解流式计算中的窗口概念

    一.描述 Window 是处理无限流的核心.Flink 认为 Batch 是 Streaming 的一个特例,所以 Flink 底层的引擎是一个流式引擎,在上面实现了流处理和批处理. 而窗口(Wind ...

  3. 【2020/12/4修订】【梳理】计算机组成与设计 第1章 计算机中的常见概念(docx)

    配套教材: Computer Organization and Design: The Hardware / Software Interface (5th Edition) 第一章 计算机中的常见概 ...

  4. 计算机中模块的概念,模块结构

    模块化程序设计技术是 20 世纪 60 年代出现的一种结构化程序设计技术.该技术是基于"分解"和"模块化"原则来控制大型软件的复杂度.模块结构是指将程序或系统按 ...

  5. python中复数类型与数学中复数的概念一致_2020年9月计算机二级python选择题在线题库12/15...

    1.在最坏情况下比较次数相同的是(). A.冒泡排序与快速排序 B.简单插入排序与希尔排序 C.简单选择排序与堆排序 D.快速排序与希尔排序 A  [解析]冒泡排序.快速排序.简单插入排序.简单选择排 ...

  6. 深入理解计算机系统(1.3)---金字塔形的存储设备、操作系统的抽象概念

    本文转载地址:http://www.cnblogs.com/zuoxiaolong/p/computer3.html 上一章LZ给各位展示了一下hello程序的简单执行过程,可以看出在这一过程当中,系 ...

  7. 计算是计算机科学独有的方法,大学计算机基础教学中的计算思维培养.doc

    大学计算机基础教学中的计算思维培养 龚沛曾 杨志强 ? 2012-06-26 08:58:58 来源:<中国大学教学>2012年第05期 摘要:首先仔细地分析了计算思维的定义,提出了计算思 ...

  8. 中职计算机基础课教学策略研究,计算机-研究教学方法中职学校计算机基础课程教学策略的论文开题报告-优度********网...

    试议数字化数字化多媒体语言实验利用改进的和声搜索算法求解Van 试谈串口Delphi串口通信程序设计美国高校HRD专业设置分析及对我国简论动态网页动态网页技术:ASP.试议浅谈网站SQL注入攻击防护论 ...

  9. 计算机思维能力培养的核心是什么,【计算机基础论文】计算机基础教学中计算思维能力培养(共6714字)...

    计算机基础教学中计算思维能力培养 摘要:自C9明确提出大学计算机基础教学的核心任务是培养学生计算思维能力后,计算思维能力培养日益受到重视.但从培养目标.培养方式.培养过程.培养效果来看,还存在诸多问题 ...

  10. 大一计算机思维知识点,大学计算机基础教学中计算思维的培养途径

    摘要:从几个侧面思考和探究在大学计算机基础教学中培养学生计算思维的途径,提出通过整合教学内容,将不同的知识点归纳为不同的知识单元:通过实验教学,提升学生运用计算思维处理问题的能力. 关键词:计算思维: ...

最新文章

  1. docker pull时候太慢卡死
  2. React Native应用如何想访问HTTP资源应该怎么办
  3. 《活法》中一个故事--令托尔斯泰也折服的人性寓言
  4. 使用JavaScript进行数组去重——一种高效的算法
  5. Python 之 新手安装详解 、安装目录说明 及 修改 pip 默认包安装位置
  6. 有关cdsn论坛被封后如何解封
  7. windows无法格式化u盘_U盘被写保护无法格式化怎么办?优盘无法格式化的解决办法...
  8. 小白开始学RTOS 1
  9. 黑客帝国、乱雨纷飞效果
  10. 笔记本插入网线接口没反应
  11. 〖Python 数据库开发实战 - Python与MySQL交互篇⑧〗- 项目实战 - 开发新闻管理系统(项目展示)
  12. Uniswap v3 详解(五):Oracle 预言机
  13. html 禁止触摸事件,html5的触摸事件
  14. Kaop打印项之表格
  15. 关于三体小说拍成电影的想法
  16. (转)关于用户管理模块
  17. nmap与hydra
  18. 深度学习——day38 读论文:基于深度学习的数据竞争检测方法(DeleRace计算机研究与发展 2022)
  19. 阿里云centos环境之被dos,syn攻击策略和排查方法,持续更新九
  20. 声音信号识别(一)——提取MFCC特征

热门文章

  1. JS数字正则表达式验证(全全全!!!)
  2. 证明:一个有n个结点的非空二叉树的高度至少为lgn
  3. php店铺处罚功能开发,Shopee平台店铺扣分惩罚机制详析!
  4. Excel如何批量删除工作表中的所有空列
  5. 计算机前沿科学与发展,《数据与计算发展前沿》正式创刊
  6. LeetCola_19_删除链表的倒数第N个节点_0723M
  7. git/gitgub
  8. MFC列表控件report报表可编辑操作
  9. 基于ISIS路由协议的路由聚合
  10. 摸底10余家一线互联网公司大数据架构图:Hadoop渗透力太强!