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


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

    教材学习内容总结

    学习目标

    了解异常及其种类
    理解进程和并发的概念
    掌握进程创建和控制的系统调用及函数使用:fork,exec,wait,waitpid,exit,getpid,getppid,sleep,pause,setenv,unsetenv,
    理解数组指针、指针数组、函数指针、指针函数的区别
    理解信号机制:kill,alarm,signal,sigaction
    掌握管道和I/O重定向:pipe, dup, dup2

    1. 异常的类别:
      中断
      陷阱和系统调用
      故障
      终止

    2. 进程和并发:
      进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
      并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。

    3. 掌握进程创建和控制的系统调用及函数

      • fock()
        所需头文件
      #include <unistd.h>
      

      函数说明
      fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。
      函数原型

      pid_t fork( void);
      

      函数返回值
      (pid_t 是一个宏定义,其实质是int 被定义在#include<sys/types.h>中)
      返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1

      • exec()
        所需头文件
      #include <unistd.h>
      

      函数说明
      执行文件
      函数原型

    int execl(const char *path, const char *arg, ...)
    int execv(const char *path, char *const argv[])
    int execle(const char *path, const char *arg, ..., char *const envp[])
    int execve(const char *path, char *const argv[], char *const envp[])
    int execlp(const char *file, const char *arg, ...)
    int execvp(const char *file, char *const argv[])
    

    函数返回值
    成功:函数不会返回
    出错:返回-1,失败原因记录在error中

    * wait()	
    所需头文件
    ```
    #include<sys/types.h>
    #include<sys/wait.h>
    ```
    函数说明
    等待子进程中断或结束
    函数原型
    ```
    pid_t wait(int *status)
    ```
    函数返回值
    如果执行成功则返回子进程识别码(PID),如果有错误发生则返回-1。失败原因存于errno 中。
    
    * waitpid()
    所需头文件
    ```
    #include<sys/types.h>
    #include<sys/wait.h>
    ```
    函数说明
    waitpid()会暂时停止目前进程的执行,直到有信号来到或子进程结束。
    函数原型
    ```
    pid_t waitpid(pid_t pid,int *status,int options)
    ```
    函数返回值
    如果在调用 waitpid()时子进程已经结束,则 waitpid()会立即返回子进程结束状态值。 子进程的结束状态值会由参数 status 返回,而子进程的进程识别码也会一起返回。
    
    * exit()
    所需头文件
    ```
    stdlib.h
    ```
    函数说明
    关闭所有文件,终止正在执行的进程。
    函数原型
    ```
    void exit(int status)
    ```
    
    * getpid()
    所需头文件
    ```
    #include <unistd.h>
    ```
    函数说明
    取得进程识别码
    函数原型
    ```
    pid_t getpid(void);
    ```
    函数返回值
    目前进程的进程ID
    
    * getppid()
    所需头文件
    ```
    #include <unistd.h>
    ```
    函数说明
    取得父进程的进程识别码
    函数原型
    ```
    pid_t getppid(void);
    ```
    函数返回值
    目前进程的父进程识别码。
    

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

    • 问题1:wait和waitpid有什么区别?
    • 问题1解决方案:进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程, wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。 参数status用来保存被收集进程退出时的一些状态,它是 一个指向int类型的指针。但如果我们对这个子进程是如何死掉的毫不在意,只想把这个僵尸进程消灭掉 从本质上讲,系统调用waitpit和wait的作用是完全相同 的,但waitpid多出了两个可由用户控制的参数pid和options,从而为我们编程提供了另一种更灵活的方式。

    [代码托管]

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 6/6 1/1 20/20
    第二周 117/123 1/2 5/25
    第三周 83/206 2/3 5/30
    第四周 97/303 3/4 5/35

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

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

    • 计划学习时间:XX小时

    • 实际学习时间:XX小时

    • 改进情况:

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

    参考资料

  • 相关阅读:
    JS 中 this 关键字详解
    Excel 文本函数
    Excel 日期和时间函数
    Excel引用和数学函数
    Excel-查找函数
    Excel-统计函数
    数据分析-业务知识
    Excel-逻辑函数
    Excel-基本操作
    电商数据分析总结
  • 原文地址:https://www.cnblogs.com/20155222lzj/p/7751994.html
Copyright © 2020-2023  润新知