2017-2018-1 20155315 《信息安全系统设计基础》第6周学习总结
2017-2018-1 20155315 《信息安全系统设计基础》第6周学习总结
教材学习内容总结
本周我学习的是第8章和第10章
异常及其种类
- 异常是异常控制流的一种形式,它一部分是由硬件实现的,一部分是有操作系统实现的。
- 异常就是控制流中的突变,用来响应处理器状态中的某些变化。
- 异常的种类
类别 | 原因 | 异步/同步 | 返回行为
---|---|---|---|---
中断 | 来自I/O设备的信号 | 异步 | 总是返回到下一条指令
陷阱 | 有意的异常 | 同步 | 总是返回到下一条指令
故障 | 潜在可恢复的错误 | 同步 | 可能返回到当前指令
终止 | 不可恢复的错误 | 同步 | 不会返回
- 中断:硬件异常中断处理程序通常称为中断处理程序。检测到异常后,中断当前程序;返回时指向下一条指令,程序继续执行
- 陷阱:陷阱最重要的用途是在用户程序和内核之间提供一个像过程一样的接口,叫做系统调用。
系统调用和普通的函数调用的实现是不同的。- 普通的函数运行在用户模式中,用户模式限制了函数可以执行的指令的类型,而且它们只能访问与调用函数相同的栈
- 系统调用运行在内核模式中,内核模式允许系统调用执行指令,并访问定义在内核中的栈。
- 故障:由错误情况引起,可能能够被故障处理程序修正。
- 终止:不可恢复的致命错误造成的结果,通常是一些硬件错误。
进程和并发
- 异常是允许操作系统提供进程的概念所需要的基本构造块。
- 进程是一个执行中程序的实例
- 进程提供给应用程序的关键抽象:
- 一个独立的逻辑控制流,独占地使用处理器;
- 一个私有的地址空间,独占地使用存储器系统。
- 进程是轮流使用处理器的,每个进程执行它流的一部分,然后被抢占,轮到其他进程。
- 并发流:一个逻辑流的执行再时间上与另一个流重叠
- 并发:多个流并发地执行的一般现象。即在一个处理器上同时运行多个程序
- 并行:两个流并发的运行在不同的处理器核或者计算机上。
系统调用函数
头文件:#include <unistd.h>
函数 | 函数原型 | 含义 |
---|---|---|
fork | pid_t fork(void) | 创建一个子进程 |
execute | int execve(const char *filename, char *const argv[],char *const envp[]) | 执行进程 |
头文件: |
#include <sys/types.h>
#include <sys/wait.h>
函数 | 函数原型 | 含义 |
---|---|---|
wait | pid_t wait(int *status) | 等待进程改变状态 |
exit | void _exit(int status) | 终止正在运行的程序 |
getpid/getppid | pid_t getpid(void);pid_t getppid(void) | 得到当前进程的ip值 |
sleep | sleep NUMBER[SUFFIX]... | 使进程休眠 |
pause | int pause(void) | 等待信号 |
数组、指针和函数
- 数组指针是指向数组的指针
- 指针数组是指数组中的元素都是指针
- 函数指针是指向函数的指针
- 指针函数是一个函数,返回值是指针
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
-
6.多选:我们用一个十六进制的数表示长度w=4的位模式,把数字解释为补码,关于其加法逆元的论述正确的是()
- A .0x8的加法逆元是-8
- B .0x8的加法逆元是0x8
- C .0x8的加法逆元是8
- D .0xD的加法逆元是3
- E .0xD的加法逆元是0x3
-
7.大多数计算机使用同样的机器指令来执行无符号和有符号加法。
- A .正确
- B .错误
- C .不确定。
-
8.多选:我们用一个十六进制的数表示长度w=4的位模式,对于数字的无符号加法逆元的位的表示正确的是()
- A .0x8的无符号加法逆元是0x8
- B .0xD的无符号加法逆元是0xD
- C .0xF的无符号加法逆元是0x1
- D .0xF的无符号加法逆元是1
-
10.计算机中x<y 和x-y<0总是等价的。
- A .错误
- B .正确
- C .不确定
-
14.多选:
short int v=-12345;
unsigned short uv=(unsigned short) v;
那么
-
A .v=-12345, uv=53191
-
B .v=uv=0xcfc7
-
C .v,uv的底层的位模式不一样
-
D .v,uv的值在内存中是不一样的
-
解析:有符号数和无符号数的转换,值不同,位模式不变
-
22.C语言中,字符串被编码为一个以0结尾的字符数组。
- A .正确
- B .错误
- 解析:null的值是0
-
23.下面和代码可移植性相关的C语言属性有()
- A .#define
- B .typedef
- C .sizeof()
- D .union
- 解析:#define可以定义宏使得变量可移植,typedef可以使得类型可移植,sizeof()使得不同类型长度可移植。
结对及互评
暂无
其他(感悟、思考等,可选)
这一章的内容很多,吸收得不够,还要继续学习。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 5/5 | 1/1 | 25/25 | |
第二周 | 236/241 | 3/4 | 30/55 | |
第三周 | 169/410 | 2/6 | 30/85 | |
第四周 | 105/516 | 2/8 | 50/135 |
-
计划学习时间:30小时
-
实际学习时间:50小时
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)