热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

计算机操作系统原理刘华文段正杰课后答案,计算机操作系统原理第二版课后答案

页是

最近准备i面试,抽时间回顾一下计算机操作系统原理.  -2018.10.1

1、硬件基础

计算机的构成:

处理器(CPU):主要包括运算器、控制器内存(主存储器)输入输出设备

详细的讲,CPU内部包括:

存储器地址寄存器 MAR:  用于确定下一个要读写的存储器地址存储器缓冲寄存器 MBR: 用于存放要写入存储器的数据,或者从存储器中读取的数据输入/输出地址寄存器 IO AR: 用于确定一个输入输出设备输入/输出缓冲寄存器 IO BR: 用于在输入输出模块和处理器间交换数据 2.指令,内存,中断

基本指令的执行周期包括:

开始-->取指-->执行指令-->检查中断-->停止   (取指和执行指令循环进行)

中断处理的方法:

处理一个中断时,禁止其他中断设置中断优先级,高优先级打断低优先级的中断处理程序

内存有:

随机存储器(RAM):也有SDRAM静态随机存储器(DDR2,DDR3,DDR4)虚拟内存:使用计算机硬盘模拟的内存只读存储器(ROM):存放固化的指令 ,一般存储最底层的IO软件操作:读键盘,写屏幕,磁盘IO操作等CMOS存储器和EEPROM:CMOS保存计算机系统配置信息,EEPROM基本取代了CMOS,CMOS需要供电保存信息,EEPROM不需要持续供电也能持续保存信息

高速缓存:

因为处理器取指令至少需要访问一次内存,通常还要访问存储器用于取操作数或保存结果;处理器速度大于内存的速度,降低指令执行速度,因此设置高速缓存.

CPU<--->高速缓存(1级或多级)<--->内存

3.地址空间和内存管理

存储管理器:

操作系统中管理分层存储体系的部分称为存储管理器.

分层存储体系:

体系中包括千兆级别,昂贵且易失性的高速缓存(Cache),数千兆级别,价格适中同样易失性的内存(DDR3等),几兆兆(TB)低速,廉价,非易失性的磁盘存储,以及其他可移动存储设备.

存储器存在着以下规律:

存取速度越快,每位价格越高;容量越大,每位价格越低;容量越大,存取速度越低; 关于应用程序的内存分配(堆和栈)

这篇论坛讨论的非常好:memory manager

blog:内存映射

一个应用程序的虚拟内存区域组成(从低到高):

保留区域:Reserved区通常不对应具体的物理地址,因此不可直接访问代码区域:全局变量区:包含初始化区域(初始化的全局,静态变量),未初始化区域(未初始化的静态,全局变量):堆区域大小在代码开始运行时给出,不过在运行过程中大小可变.内存中空闲内存块按照链表形式存储,申请堆时,按照需要申请的堆的大小去遍历链表,知道找到足够大的空闲内存块 ,将其分配给程序,多余的小的内存块仍然以链表形式插入在空闲内存块中.因此堆的最大尺寸由硬件条件决定.进程空间大小-内核空间大小(1G左右)-栈大小-全局空间。 内存映射区:硬盘内容直接映射到内存,一般为文件运行时的动态链接库用户栈:在代码运行时分配,大小固定,不过通过IDE或其他方式可以修改.内核空间:大小固定,操作系统装载,不允许程序直接访问

PS:值得一提的是,一个进程可能包括多个线程,但是一个进程通常只有一个堆区域(除非应用申请多个不同类型的堆),而线程各自拥有各自的栈!堆区域为线程共享.

虚拟内存的分页和分段:

基本概念

面对越来越大的程序,常常产生程序>内存的问题,为解决这种问题,虚拟内存的概念得到普及.

虚拟内存基本思想是:每个程序都拥有自己的地址空间,这个空间被分割成多个 块,每个块被成为一页或页面.

程序运行时,并不是所有页都在物理内存中:

当程序引用一部分在物理内存的地址空间时,由硬件直接执行必要的映射;当程序引用一部分不在物理内存的地址空间时,有操作系统将缺失的页装入物理内存,并重新运行 分页

分页访问过程:

CPU中包含MMU内存管理单元,用于管理虚拟地址空间到物理内存地址的映射.假设物理内存地址大小为32k,每4k为一个页框.虚拟地址空间分页,每个页面大小等于一个页框当程序想要访问一个虚拟地址x,指令将x送到MMU,MMU根据x的虚拟地址,判断其对应的页面是否在物理内存中:若在,MMU将x转化为物理内存地址y若不在,则进行缺页中断,操作系统在物理内存中找到一个使用较少的页面回收掉,将需要访问的页面读到被回收的页面处,再将x转化为物理内存地址访问

 

这个链接很好的解释了分段:分段和分页的联系与区别

程序运行前先分段,段中再分页。页是为了内存管理。

分段和分页的区别:

(1)页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题,或者说分页是由于系统管理的需要.段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地实现共享,满足用户的需要.

(2)页的大小固定,由系统确定,将逻辑地址划分为页号和页内地址是由机器硬件实现的.而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时根据信息的性质来划分.

(3)分页的作业地址空间是一维的.分段的地址空间是二维的.

 

 


推荐阅读
  • Mono为何能跨平台
    概念JIT编译(JITcompilation),运行时需要代码时,将Microsoft中间语言(MSIL)转换为机器码的编译。CLR(CommonLa ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 1Lock与ReadWriteLock1.1LockpublicinterfaceLock{voidlock();voidlockInterruptibl ... [详细]
  • 在这分布式系统架构盛行的时代,很多互联网大佬公司开源出自己的分布式RPC系统框架,例如:阿里的dubbo,谷歌的gRPC,apache的Thrift。而在我们公司一直都在推荐使用d ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • Python中sys模块的功能及用法详解
    本文详细介绍了Python中sys模块的功能及用法,包括对解释器参数和功能的访问、命令行参数列表、字节顺序指示符、编译模块名称等。同时还介绍了sys模块中的新功能和call_tracing函数的用法。推荐学习《Python教程》以深入了解。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • php缓存ri,浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
    thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()缓存方法支持有效期,又称动态缓存方法。本文是小编日常整理有关thinkp ... [详细]
author-avatar
as2520_526
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有