• 2017-2018-1 20155321 《信息安全系统设计基础》第十一周学习总结


    2017-2018-1 20155321 《信息安全系统设计基础》第十一周学习总结

    教材学习内容总结

    • 本周主要学习了与虚拟存储器相关的知识点

    • 虚拟存储器

      • 是一个容量巨大的存储器的逻辑模型,实际上并不存在的物理存储器。虚拟存储器通过磁盘等存储器来扩大内存,令其被更大或更多的程序所使用
      • 主存-外存层次
      • 以透明的方式令用户有一个错觉,实际上提供了一个比内存空间大很多的程序地址空间
    • 虚拟存储器的工作过程(由硬件和操作系统自动实现存储信息调度和管理的)

      • 中央处理器访问主存的逻辑地址分解成组号a和组内地址b,并把逻辑组号a作为索引,查找地址变换表,以确定该组信息是否存放在内存里
      • 若存在则执行第四步;若不存在,则检查内存中是否有空闲区,若没有,便调出某个暂时不用的组至辅存,并将这组信息调入内存
      • 从辅存读出所需的组并送到空闲区并将那个空闲的物理组号a和逻辑组号a重新记录在地址变换表里
      • 从地址变换表取出与逻辑组号a对应的物理组号a
      • 从物理组号a和组内字节地址b计算出物理地址
      • 根据物理地址从内存中存取必要的信息
    • 实地址:也叫物理地址,指的是计算机物理内存实际的访问地址

    • 虚地址:也叫逻辑地址,指的是用户在程序中使用的地址。

    • 三种调度方式

      • 页式调度
        • 虚地址空间、内存空间均被分成等长的页,通过页表可以把逻辑地址转换成物理地址
        • 每个进程对应一个页表。页表中对应每一个虚存页面均有一个表项
      • 段式调度
        • 按照程序的自然分界划分,虚地址由段号和段内地址组成。虚地址到实主存地址的变换通过段表实现。每个程序设置一个段表,段表的每一个表项对应一个段。每个表项至少包含有效位、段起址、段长
      • 段页式调度
        • 段式与页式的结合。实存被等分成页。每个程序则先按逻辑结构分段,每段再按照实存的页大小分页,程序按页进行调入和调出操作,但可按段进行编程、保护和共享。
    • 替换算法

      • 随机算法:用软件或硬件随机数产生器确定替换的页面
      • 先进先出:先调入内存的页面先替换
      • 近期最少使用算法:替换最长时间不用的页面
      • 最优算法:替换最长时间以后才使用的页面。这是理想化的算法,实际上却无法实现,因此只能把其作为衡量其他各种算法优劣的标准

    教材学习中的问题和解决过程

    • 按照书本内容实现简单的分配器(P597-P603)
      • mmlib.c提供了一个内存系统模型
      • mem_init()函数将对于堆来说可用的虚拟内存模型化为一个大的、双字对齐的字节数组,其初始化分配器。
      • mm_free()函数:释放堆的内存
      • mm_malloc()函数:分配size字节大小的块
      • extend_heap()函数:拓展堆的可用空间
      • coalesce()函数:合并bp指针指向的块的前后块
      • find_fit()函数:找第一个空间大于size的空闲块
      • place()函数:分割find_fit返回的块,创建块结构
    • 运行结果:

    代码托管

    上周考试错题总结

    • 下面说法正确的是()

      A.Linux内核使用的file table 所有的进程共享的。

      B.不同进程打开同一个文件的文件描述符必须一样。

      C.使用dup2 把标准输入重定向到描述符7 dup2(7,0)

      D.使用dup2 把标准输入重定向到描述符7 dup2(0,7)

      E. ls > foo.txt 是输出重定向

      F.类型为FILE的流是对文件描述符和流缓冲区的抽象。

    • 正确答案:ACEF

    • 理解情况:错选了ADEF,主要是对dup2()函数的用法不太熟悉,因为要重定向到描述符7,所以应该把7这个参数卸载前面。

    • Unix/Linux中,对于代码fd=open("foo",O_WRONLY,0766),umask=022,下面说法正确的是()

      A.进程对foo是只写的

      B.同组成员能写foo

      C.使用者可以执行foo

      D.任何人都可以写foo

    • 正确答案:AC

    • 理解情况:错选了ABCD,因为实际上的权限应该是mode&umask,因此766&022=744,而111表示读:写:执行,因此对于使用者而言可以读、写和执行,对于同组成员和其他人而言只可以读,因此BD是错误的。

    • 关于open(2),下面说法正确的是( )

      A.flag 参数中O_RDONLY,O_WRONLY,O_RDWR至少要有一个

      B.O_RDONLY|O_WRONLY == O_RDWR

      C.fd=open("foo.txt",O_WRONLY|O_APPEND,0),调用write(fd,buff,n)写入foo.txt的数据不会破坏已有数据

      D.fd=open("foo.txt",O_WRONLY|O_APPEND,0644),必将导致其他人不能写foo.txt

    • 正确答案:AC??

    • 理解情况:我选了ACD,此题暂时有疑问

    • Linux中下列概念中可以用Unix I/O处理的是()

      A.普通文件

      B.设备文件

      C.目录

      D.套接字

    • 正确答案:ABCD

    • 理解情况:漏选了B选项,在书本P623上写道“其他文件类型包含命名通道、符号链接、字符和块设备,因此B选项也是正确的

    • 相对内核而言,文件分为文本文件和二进制文件。其中文本文件只含有ASCII或Unicode字符。

      A.正确

      B.错误

      C.不确定

    • 正确答案:B

    • 理解情况:漏选了A选项,相对内核而言,文件不仅仅只是分为文本文件和二进制文件,因此是错误的。

    本周结对学习情况

    • 20155330
    • 结对学习内容
      • 书本第九章的内容

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 20篇 400小时
    第十一周 1352 1/15 15/165

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:12小时

    • 实际学习时间:15小时

    • 改进情况:改善自学看书的方法,提高看书学习效率

    (有空多看看现代软件工程 课件 软件工程师能力自我评价表)

    参考资料

  • 相关阅读:
    redis缓存问题解决方案
    JVM 2-垃圾收集及内存分配策略
    JVM 1-内存管理
    mysql数据库基础
    事务学习
    使用redis分布式锁来解决集群项目的定时任务冲突问题
    Spring AOP学习
    Spring IOC
    java语言基础7--线程相关类
    多重背包的二进制优化——DP
  • 原文地址:https://www.cnblogs.com/rafell/p/7921553.html
Copyright © 2020-2023  润新知