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


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

    教材学习内容总结

    进程

    进程是靠内核自动调度实现的,而且因为他们有各自的独立的虚拟地址空间,所以要在各个进程内实现共享数据,必须要有显式的IPC机制。事件驱动程序创建它们自己的并发逻辑流,这些逻辑流被模型化成状态机,用I/O多路复用来显式地角度这些流。
    进程的特性有:
    动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
    并发性:任何进程都可以同其他进程一起并发执行
    独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
    异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
    结构特征:进程由程序、数据和进程控制块三部分组成。
    多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。
    负责调度的算法有:FIFS(先到先得原则)、短进程优先算法、最短剩余时间优先算法等。

    线程

    线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。
    线程有两种。一种是用户级线程:管理过程全部由用户程序完成,操作系统内核心只对进程进行管理。另外一种是核心级线程:由操作系统内核进行管理。操作系统内核给应用程序提供相应的系统调用和应用程序接口API,以使用户程序可以创建、执行、撤消线程。
    线程与进程的不同:

    地址空间和其它资源:线程相互独立,同一进程的各线程间共享;某一进程内的所有线程在其他进程内不可见。
    通信:线程依靠通信IPC;进程可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助。
    调度和切换:线程快,进程慢。
    在多线程OS中,进程不是一个可执行的实体。

    I/O多路复用

    通过I/O多路复用技术,系统内核缓冲I/O数据,当某个I/O准备好后,系统通知应用程序该I/O可读或可写,这样应用程序可以马上完成相应的I/O操作,而不需要等待系统完成相应I/O操作,从而应用程序不必因等待I/O操作而阻塞。
    与多进程和多线程技术相比,I/O多路复用技术的最大优势是系统开销小,系统不必创建进程/线程,也不必维护这些进程/线程,从而大大减小了系统的开销。

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

    • 问题1:C语言中的I/O和Java编程语言的I/O有什么不同?
    • 问题1解决方案:通过查询我了解到了C语言的I/O依靠的是stdio.h内的函数实现,而Java的I/O是依靠大量的类和流类型实现的。C语言的I/O适合底层的编码活动,而Java的I/O适合高层软件间的交流。

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

    • 问题1:来自实现时间查询服务器:服务器一直在输出一个固定时间:1970年1月1日星期四,08:00。
    • 问题1解决方案:在代码段内添加t = time(NULL);来获取计算机本机时间。
    • 问题2:来自实现时间查询服务器:无论有多少个终端去向服务器查询时间,都只得到一个固定的时间。
    • 问题2解决方案:将代码t = time(NULL);放置到接受到询问的部分,而不是在代码段首部。这样一来,服务器就会在回复在客户端询问时的计算机时间,而不是回复服务器启动那时的时间。(粗心……)

    代码托管

    上周考试错题总结

    • 上周没考试。

    其他(感悟、思考等,可选)

    期待用C语言编硬件I/O的编程,希望不是乌鸦嘴。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 31/31 1/1 20/20
    第三周 24/55 2/3 24/44 知道浮点数怎么储存的
    第四周 177/328 2/5 17/61 现在我的C语言程序也会在Linux命令行下使用了:*)
    第五周 54/382 2/7 18/79 复习一遍汇编语言
    第七周 2360/2722 1/8 12/91
    第八周 624/3344 2/10 19/110 了解多线程和多进程

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

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

    • 计划学习时间:15小时

    • 实际学习时间:19小时

    • 改进情况:
      学会鞥多的进程编码和线程编码的原理。

    参考资料

  • 相关阅读:
    IBM X System ServerGuide 8.41 服务器 系统安装 引导盘
    oracle查找重复记录
    linux的nohup命令的用法。
    最佳设计工作流
    开发的浏览器颠覆微软,引爆了一场互联网大战
    程序员的成长和代码行数的关系
    Oracle SQL Developer 连接 MySQL
    Linux 如何打开端口
    SQLSERVER中如何快速比较两张表的不一样
    我所理解的MVVM
  • 原文地址:https://www.cnblogs.com/battlefieldheros/p/7820001.html
Copyright © 2020-2023  润新知