20155335 俞昆 第六周《信息安全系统设计基础》

Posted 愤怒的小鸟哭了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:addb\w\l\q

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 让进程休眠

 

 

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

 

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

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

以上是关于20155335 俞昆 第六周《信息安全系统设计基础》的主要内容,如果未能解决你的问题,请参考以下文章

20155335 俞昆 《信息安全系统设计基础》第一周总结

2017-2018-1 20155335俞昆 《信息安全系统设计基础》第五周学习总结

20155335俞昆

20155335俞昆《java程序设计》第三周总结

20155335俞昆《java程序设计》第6周总结

20155335俞昆《Java程序设计》第五周总结