zoukankan      html  css  js  c++  java
  • 0509操作系统

    1.操作系统提供给程序员创建进程的方法?这些方法分别都是怎么工作的?(参考)

    fork()

    vfork()

    clone()

    2.内存管理是什么,内存管理的内容有哪些(参考

    • 操作系统对内存空间进行合理的划分及动态分配。
      • 操作系统负责内存空间的分配与回收。
      • 操作系统需要提供某种技术从逻辑.上对内存空间进行扩充。
      • 操作系统需要提供地址转换功能,负责程序的逻辑地址与物理地址的转换
      • 操作系统需要提供内存保护功能。保证各进程在各自存储空间内运行,互不干扰(上下限寄存器和重定位寄存器界地址寄存器)

    3.内存空间的几种分配方法?

    • 连续分配:为一个用户程序分配一个连续的内存空间,装入内存的程序逻辑地址相邻且物理地址也相邻。
      • 单一连续分配:单道程序环境
      • 固定分区分配:将整个用户空间划分成为固定大小的区域。
      • 动态分区分配:根据进程的实际大小,分配内存空间。有外部碎片。
      • 动态可重定位分区分配
    • 非连续分配
      • 分页存储
        • 将程序数据分页,在内存中按物理块存储,使用页表记录物理块号
        • 逻辑地址:页号=逻辑地址/页大小,页内偏移=逻辑地址%页大小
        • 地址变换:物理地址=页表寄存器中的页表始址+页号(查到块号)+页内偏移(需要进行越界中断的判断)(只需要直到物理块的逻辑地址,一维)
        • 具有TLB的地址变换机构:快表放在高速缓存中,查找页表时先去快表中查询,没有再去内存中的页表中查找
        • 两次访存:页表和物理块
      • 分段存储  
        • 按照程序自身的逻辑关系划分为若千个段,每个段都有一个段名(在低级语言中,程序员使用段名来编程),每段从0开始编址
        • 逻辑地址:段号+段内偏移
        • 段表内容:(段号)段长+基址
        • 地址变换:物理地址=段表始址+段号+偏移量(查找段表需要知道段号和段内偏移量,二维)
        • 两次访存:段表和段
      • 段页式存储
        • 将进程按逻辑模块分段,再将各段分页(如每个页面4KB )再将内存空间分为大小相同的内存块/页框/页帧/物理块进程前将各页面分别装入各内存块中
        • 逻辑地址:段号+页号+页内偏移量
        • 段表结构:(段号)段状态+页表大小+页表始址
        • 地址变换:通过段号和段表寄存器找到页表始址,然后通过页表始址和提供的页号找到物理块号(通过段表长度和页表长度判断越界中断)
        • 三次访存:段表、页表和物理块
      • 请求分页
      • 请求分段
      • 请求段页式

    4.两级页表是怎么实现的?

    5.什么是局部性原理?

    • 时间局部性:如果执行了程序中的某条指令,那么不久后这条指令很有可能再次执行;如果某个数据被访问过,不久之后该数据很可能再次被访问。(因为程序中存在大量的循环)
    • 空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问。(因为很多数据在内存中都是连续存放的,并且程序的指令也是顺序地在内存中存放的)

    6.虚拟存储的作用?为什么虚拟存储可以实现?怎么实现的?

    • 传统存储方式具有一次性驻留性的缺点:
      • 一次性:作业必须一次性全部装入内存后才能开始运行。这会造成两个问题:①作业很大时,不能全部装入内存,导致大作业无法运行;②当大量作业要求运行时,由于内存无法容纳所有作业,因此只有少量作业能运行,导致多道程序并发度下降。
      • 驻留性:一旦作业被装入内存,就会- 直驻留在内存中,直至作业运行结束。事实上,在一个时间段内,只需要访问作业的一-小部分数据即可正常运行,这就导致了内存中会驻留大量的、暂时用不到的数据,浪费了宝贵的内存资源。
    • 虚拟存储即基于局部性原理,在程序装入时,可以将程序中很快会用到的部分装入内存,暂时用不到的部分留在外存,就可以让程序开始执行。在程序执行过程中,当所访问的信息不在内存时, 由操作系统负责将所需信息从外存调入内存,然后继续执行程序。若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存。在操作系统的管理下,在用户看来似乎有-一个比实际内存大得多的内存(操作系统虚拟性的一个体现,实际的物理内存大小没有变,只是在逻辑上进行了扩充)
    • 请求分页存储管理

    • 请求分段存储管理
    • 请求段页式存储管理

    7.几种页面置换算法?比如请求分页页面置换算法,clock置换算法?

           LRU需要采用硬件机制实现:寄存器或者栈

  • 相关阅读:
    Python连接MySQL数据库之pymysql模块使用
    线程
    进程
    网络编程
    面向对象进阶
    迭代器,生成器,装饰器
    函数的基础
    Andy's First Dictionary UVA
    Stripies POJ
    Soldier and Badges CodeForces
  • 原文地址:https://www.cnblogs.com/helloworldToDu/p/12853283.html
Copyright © 2011-2022 走看看