20155335 俞昆 第六周《信息安全系统设计基础》
Posted 愤怒的小鸟哭了
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20155335 俞昆 第六周《信息安全系统设计基础》相关的知识,希望对你有一定的参考价值。
教材学习内容总结
- 当Unix系统级函数遇到错误时,它们典型地会返回―1,并设置全局整数变量errno来表示什么出错了。程序员应该总是检查错误,但是不幸的是,许多人都忽略了错误检查,因为它使代码变得臃肿,而且难以读懂。
- 回收子进程的两种方法:1,内核的init进程 2,父进程waitpid函数
- 如果父进程没有回收它的僵死子进程就终止了,那么内核就会安排init进城来回收它们。init进程的PID为1,并且是在系统初始化时创建的。
- 一个进程可以通过调用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 俞昆 第六周《信息安全系统设计基础》的主要内容,如果未能解决你的问题,请参考以下文章