zoukankan      html  css  js  c++  java
  • 20155335 俞昆 第六周《信息安全系统设计基础》

    教材学习内容总结

    • Unix系统级函数遇到错误时,它们典型地会返回―1,并设置全局整数变量errno来表示什么出错了。程序员应该总是检查错误,但是不幸的是,许多人都忽略了错误检查,因为它使代码变得臃肿,而且难以读懂。
    • 回收子进程的两种方法:1,内核的init进程 2,父进程waitpid函数
    1. 如果父进程没有回收它的僵死子进程就终止了,那么内核就会安排init进城来回收它们。init进程的PID为1,并且是在系统初始化时创建的。
    2. 一个进程可以通过调用waitpid函数来等待它的子进程终止或停止。
    • Unix外壳和Web服务器这样的程序大量使用了fork和e×ecve函数。外壳是一个交互型的应用程序,它代表用户运行其他程序。最早的外壳是Sh程序,后面出现了一些变种,比如csh、tcsh、ksh和bash。外壳执行一系列的读/求值(readeaUte)步骤然后终止。
    • 在某些情况下,read和write传送的字节比应用程序要求的要少,这些不足值不表示有错误
      • 数据传送指令有四个变种:movb传送字节、movw传送字、movl传送双字、movq传送四字。
      • 汇编代码也使用后缀'l'来表示4字节整数和8字节双精度浮点数。二者之所以不矛盾使用为使用的是一组完全不同的指令和寄存器。
      • 指令可以对16个寄存器的低位字节中存放的不同大小的数据进行操作
      • 操作数:立即数、寄存器、内存引用。
      • 数据传送指令:MOV类。
      • 源操作数指定一个立即数,目的操作数指定一个位置。
      • cltq指令只作用于寄存器%eax和%rax
      • 局部变量通常是保存在寄存中,而不是内存中。访问寄存器比访问内存要快得多。
      • 当强制类型转换既涉及大小有涉及C语言中的符号变化时,操作应该先改变大小。
      • 栈指针%rsp保存着栈顶元素的地址。
      • 压栈:先移动指针,再存储数据。出栈:先读数据,再上移指针。
      • 栈和程序代码以及其他形式的程序数据都是放在统一内存中,所以程序可以用标准的内存寻址方法访问栈内的任意位置。
      • ADD:addbwlq

    1、判定等待集合的成员(由参数pid确定) pid>0,等待集合就是一个单独的子进程,它的进程ID等于pid pid=-1,等待集合就是由父进程所有的子进程组成的

    2、修改默认行为 WNOHANG:默认行为是挂起调用进程,直到有子进程终止 WUNTRCED:默认行为是只返回已经终止的子进程 WNOHANG|WUNTRCED:立即返回

    3、检查已回收子进程的退出状态

    4、错误条件 如果调用进程没有子进程,那么waitpid返回-1,设置errno为ECHILD 如果waidpid函数被一个信号中断,那么它返回-1,并设置errno为EINTR

    5、wait函数

    6、使用waitpid的示例

    • 8.4.4 让进程休眠

     

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

     

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

    文件上传出现了问题,重新整理了一下

  • 相关阅读:
    采用springboot+flowable快速实现工作流
    07 Sublime Text3常用快捷键
    06 解决Sublime Text3输入法不跟随的问题
    04 Storage and Calculation C语言中的存储和计算
    05 sublime环境配置及编译运行后输出中文乱码的解决
    04 sublime text 3在线安装package control插件,之后安装主题插件和ConvertToUTF8 插件
    03 sublime text3下配置Java的编译运行环境
    02 sublime text3下配置Python的编译运行环境
    01 sublime text3下配置c/c++ 的编译运行环境
    03 Comments in C Programming C编程中的注释
  • 原文地址:https://www.cnblogs.com/xieboke/p/7752049.html
Copyright © 2011-2022 走看看