zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155317《信息安全系统设计基础》第八周学习总结

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

    教材学习内容总结

    并发

    进程间可以并发执行。

    同属一个进程的多个线程,也可以并发执行。

    线程时操作系统拥有更好的并发性,从而能有效地使用系统资源和提供系统吞吐量。

    当一个未引入线程的单处理机操作系统,若设置一个文件服务进程,当它由于某种原因阻塞,便没有其他的文件服务进程来提供服务。引入线程以后,可以为一个文件服务进程中设置多个服务线程,当其中一个线程阻塞时,文件服务进程中的其他线程可以继续运行,提供了文件服务的质量和系统吞吐量。

    多线程

    由于线程共享进程的资源和地址空间,因此在对这些资源进行操作时,必须考虑到线程间资源访问的同步与互斥问题。这里主要介绍Posix中两种线程同步机制,分别为互斥锁和信号量。这两个同步机制可以通过互相调用对方来实现,但互斥锁更适用于同时可用的资源是唯一的情况;信号量更适用于同时可用的资源为多个的情况。

    多线程的优点

    无需跨进程边界; 
    程序逻辑和控制方式简单; 
    所有线程可以直接共享内存和变量等; 
    线程方式消耗的总资源比进程方式好; 

    多线程缺点

    每个线程与主程序共用地址空间,受限于2GB地址空间; 
    线程之间的同步和加锁控制比较麻烦; 
    一个线程的崩溃可能影响到整个程序的稳定性; 
    到达一定的线程数程度后,即使再增加CPU也无法提高性能,例如Windows Server 2003,大约是1500个左右的线程数就快到极限了(线程堆栈设定为1M),如果设定线程堆栈为2M,还达不到1500个线程总数; 
    线程能够提高的总性能有限,而且线程多了之后,线程本身的调度也是一个麻烦事儿,需要消耗较多的CPU 
     
           Linux的线程实现是在核外进行的,核内提供的是创建进程的接口do_fork()。内核提供了两个系统调用__clone()和fork(),最终都用不同的参数调用do_fork()核内API。 do_fork() 提供了很多参数,包括CLONE_VM(共享内存空间)、CLONE_FS(共享文件系统信息)、CLONE_FILES(共享文件描述符表)、CLONE_SIGHAND(共享信号句柄表)和CLONE_PID(共享进程ID,仅对核内进程,即0号进程有效)。当使用fork系统调用产生多进程时,内核调用do_fork()不使用任何共享属性,进程拥有独立的运行环境。当使用pthread_create()来创建线程时,则最终设置了所有这些属性来调用__clone(),而这些参数又全部传给核内的do_fork(),从而创建的”进程”拥有共享的运行环境,只有栈是独立的,由 __clone()传入。
           即:Linux下不管是多线程编程还是多进程编程,最终都是用do_fork实现的多进程编程,只是进程创建时的参数不同,从而导致有不同的共享环境。Linux线程在核内是以轻量级进程的形式存在的,拥有独立的进程表项,而所有的创建、同步、删除等操作都在核外pthread库中进行。pthread 库使用一个管理线程(__pthread_manager() ,每个进程独立且唯一)来管理线程的创建和终止,为线程分配线程ID,发送线程相关的信号,而主线程pthread_create()) 的调用者则通过管道将请求信息传给管理线程。

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

     

    代码调试中的问题和解决过程

    代码托管

    (statistics.sh脚本的运行结果截图)

    上周考试错题总结

      • 有关exec系列函数,下面说法正确的是()
        A .
        可以用char[][] 来传递argv
        B .
        进程调用了exec系列函数后,pid会变
        C .
        进程调用了exec系列函数后,代码会改变。
        D .
        system()和exec系列等价。
        E .
        exec系列函数中带e的要传入环境变量参数
        F .
        exec系列函数中带v的要传入环境变量参数
        正确答案: C E 你的答案: A C E

      • 关于代码 int main(){} 说法正确的是()
        A .
        返回值是0
        B .
        返回值不确定
        C .
        会调用exit(0)
        D .
        返回值大于0
        E .
        上面代码运行完,在命令行中运行echo $? 的值是0
        正确答案: A C E 你的答案: A E

      • Unix/Linux中通过调用( )可以获取子进程PID。
        A .
        getpid()
        B .
        getppid()
        C .
        getcpid()
        D .
        fork()
        正确答案: D 你的答案: A

      • Linux中,信号(Signal)是一种()异常控制流。
        A .
        硬件层
        B .
        操作系统层
        C .
        用户层
        D .
        网络层
        正确答案: C 你的答案: B
        • 对于图中内存地址和寄存器的值,下面说法正确的是()

        A .
        %rax的值是0x100
        B .
        (%rax)的值是0x100
        C .
        (%rax)的值是0x104
        D .
        (%rax)的值是0xFF
        E .
        4(%rax)的值是0xAB
        F .
        (%rax,%rcx,4)的值是0xAB
        G .
        (%rax,%rcx,4)的值是0x104
        正确答案: A D E F 你的答案: A D E

        • x86-64中指令长度是()字节
          A .
          1
          B .
          2
          C .
          4
          D .
          1-4
          E .
          1-8
          F .
          1-15
          G .
          1-16
          H .
          以上都不对
          正确答案: F 你的答案: C

    结对及互评

    点评模板:

    • 博客中值得学习的或问题:
      • xxx
      • xxx
      • ...
    • 代码中值得学习的或问题:
      • xxx
      • xxx
      • ...
    • 其他

    本周结对学习情况

    -  20155301
    - 结对照片
    - 结对学习内容
        - XXXX
        - XXXX
        - ...

     

    学习进度条

     代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
    目标 5000行 30篇 400小时  
    第一周 200/200 2/2 20/20  
    第二周 300/500 2/4 18/38  
    第三周 500/1000 3/7 22/60  
    第四周 300/1300 2/9 30/90  

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

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

    • 计划学习时间:XX小时

    • 实际学习时间:XX小时

    • 改进情况:

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

    参考资料

  • 相关阅读:
    java的泛型
    JAVA集合类--(一闪而过)
    java面向对象- -一闪而过
    进制转换之二进制与十进制转换
    跳跃表-原理及Java实现
    Excel二次开发相关代码
    程序员学炒股(7) 股市心得
    程序员学炒股(7) 股指期货收盘价对第二天开盘价有影响吗?
    程序员学炒股(6) 让我们来看一下7月份A股的表现
    程序员学炒股(5) 股指交割日效应是否存在?
  • 原文地址:https://www.cnblogs.com/wxwddp/p/7822702.html
Copyright © 2011-2022 走看看