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

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

    fork()

    vfork()

    clone()

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

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

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

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

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

    5.什么是局部性原理?

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

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

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

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

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

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

  • 相关阅读:
    yocto/bitbake 学习资源
    QEMU/KVM学习资源
    ubuntu 中创建和删除用户
    git 重命名本地和远程分支
    Ubuntu 上搭建 FTP 服务器
    gdb 常见用法
    git log 显示与特定文件相关的 commit 信息
    基于 qemu system mode 运行 arm 程序
    基于 qemu user mode 运行 aarch64 程序
    checking in(airport)
  • 原文地址:https://www.cnblogs.com/helloworldToDu/p/12853283.html
Copyright © 2011-2022 走看看