第0周做业html
第1周做业linux
man/find/locate/cheat/grep/which/whereis
;练习了实验楼中的课程。第2周做业git
第3周做业编程
第5周做业小程序
第6周做业vim
第7周做业数组
第8周做业浏览器
第9周做业缓存
第10周做业安全
托管连接和二维码:
截图
代码量汇总
第一章 多处理器与多线程的运行模式是什么样的?
- 多线程:每个程序能够包含至少一个线程,而多个线程之间能够“并发”执行。 <font size=3>**第二章 浮点运算中IEEE标准的运算规则是什么样的?**</font> - IEEE定义了多种浮点格式,但最多见的是三种类型:单精度、双精度、扩展双精度 - 三种精度分别适用于不一样的计算要求。
单精度适合通常计算
双精度适合科学计算
扩展双精度适合高精度计算
- 一个遵循IEEE 754标准的系统必须支持单精度类型(强制类型)、最好也支持双精度类型(推荐类型),至于扩展双精度类型能够随意。 <font size=3>**第三章 条件跳转指令是否会像C语言中的goto语句同样使编码的结构变得紊乱?若是会,会形成什么影响?**</font> - 条件跳转指令检查一个或多个标志位,判断它们是否匹配某个特殊条件(就像setcc指令) - 若是标志匹配成功,该指令就将控制转移到目标位置;若是匹配失败,CPU忽略该条件跳转指令而继续执行下一条指令。 - 一些条件跳转指令只是简单测试符号位(sign)、进位位(carry)、溢出位(overflow)、零标志(zero)位的设置。 <font size=3>**第四章 Y86模拟器的控制逻辑具体是什么样的?**</font> - 这个问题自己就不太对…… <font size=3>**第五章 对程序的优化具体应该从哪些方面下手?**</font> - 语句调整,用汇编重写 - 指令调整 - 循环展开 - 参数传递优化 <font size=3>**第七章 动态连接是什么,如何实现?**</font> - 动态连接须要解决空间浪费和更新困难这两个问题最简单的办法就是把程序的模块相互划分开来,造成独立的文件,而再也不将他们静态的连接在一块儿。 - 简单地讲,就是不对那些组成程序的目标文件进行连接,等到程序要运行时才进行连接。 - 把连接这个过程推迟到了运行时再进行,这就是动态连接(Dynamic Linking)的基本思想。 <font size=3>**第八章 系统在何时会出现异常,如何有效的避免这些异常?**</font> - 异常指的是在程序运行过程当中发生的异常事件,一般是由硬件问题或者程序设计问题所致使的。 - 异常的常见例子:有内存分配不足、数组下标越界、运算溢出或除数为零。 - 异常的捕获:
经过try…catch语句进行捕获异常。
经过throw抛出异常,throws向上一级调用方法抛出异常。
<font size=3>**第九章 虚拟存储器中Linux缺页异常怎么解决?**</font> - 利用异常表处理Linux内核态缺页异常 - 当系统启动分页机制之后,若是一条指令的虚拟地址所对应的页框(page frame)不在内存中或者访问的类型有错误,就会发生缺页异常。 - 处理器把引发缺页异常的虚拟地址装到寄存器CR2中,并提供一个出错码,指示引发缺页异常的存储器访问的类型,随后调用Linux的缺页异常处理函数进行处理。 - Linux中进行缺页异常处理的函数以下:
asmlinkage void do_page_fault
(struct pt_regs regs, unsigned long error_code)
{
……………………
asm("movl %%cr2,%0":"=r" (address));
……………………
vma = find_vma(mm, address);
if (!vma)
goto bad_area;
if (vma->vm_start <= address)
goto good_area;
if (!(vma->vm_flags & VM_GROWSDOWN))
goto bad_area;
if (error_code & 4) {
if (address + 32 < regs->esp)
goto bad_area;
……………………
bad_area:
……………………
no_context:
/ Are we prepared to handle this kernel fault? */
if ((fixup = search_exception_table(regs->eip)) != 0) {
regs->eip = fixup;
return;
}
………………………
}
<font size=3>**第十章 I/O函数该如何正确的使用?**</font> - open 打开文件描述符 - read 读 - write 写 - close 关闭文件描述符 vfcntl 修改文件描述符,例如改成不阻塞 - lseek 移动文件读写的当前位置 - ioctl 与fcntl相似 - readdir 读取目录 - select 多路选择 - readlink 读取符号连接 - stat 读取文件属性 <font size=3>**第十一章 Web服务器的动态内容中服务端和客户端遵循什么样的CGI规则?**</font> - CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。 - CGI规范容许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。 - CGI在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。 <font size=3>**第十二章 如何有效控制并发线程的不安全性?**</font> - 线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其余线程不能进行访问直到该线程读取完,其余线程才可以使用。不会出现数据不一致或者数据污染。 - 线程不安全就是不提供数据访问保护,有可能出现多个线程前后更改数据形成所获得的数据是脏数据 - 一方面,对申请访问临界资源的全部线程要公平对待,不能对部分线程优先考虑,使一些线程长时间独占资源,而使其它的线程进行长时间的等待,得不到资源。 - 另外一方面,在考虑了公平性的同时,也不能忽视了安全性的考虑,出现某一个线程访问临界资源,导致程序不能正常运行,产生严重的后果。 - 在Java中对多线程的并发控制应该作到公平性和安全性的理想兼容,两方面都不可忽视。并发系统的公平性使得资源在多线程之间获得至关科学和合理的分配,安全性保证了各线程的正常调度运行,从而使程序顺利地执行结束,完成任务。 ## 你有什么项目被加分,谈谈你的经验 <font size=4>**优秀做业**</font> **[第2周做业](http://www.cnblogs.com/alovera/p/5888080.html)** - 简要内容:学习了vim的基本操做;学会使用gcc编译器;学习了gdb的调试。 - 二维码  **[第3周做业](http://www.cnblogs.com/alovera/p/5903015.html)** - 简要内容:学习了操做系统中的信息表示和处理;学习了整数与浮点数的转换。 - 二维码  **[第7周做业](http://www.cnblogs.com/alovera/p/6013833.html)** - 简要内容:学习了局部性原理和缓存思想在存储层次结构中的应用;根据代码驱动的程序设计学习创建了项目结构。 - 二维码  **[第6周做业](http://www.cnblogs.com/alovera/p/5975299.html#3539084)** - 简要内容:安装了Y86处理器,了解Y86指令体系结构;学习ISA抽象。 - 二维码  **[第7周做业](http://www.cnblogs.com/alovera/p/6013833.html)** - 简要内容:学习了局部性原理和缓存思想在存储层次结构中的应用;根据代码驱动的程序设计学习创建了项目结构。 - 二维码  **[第8周做业](http://www.cnblogs.com/alovera/p/6017694.html)** - 简要内容:总结并复习了前7周的学习内容。 - 二维码  **[第10周做业](http://www.cnblogs.com/alovera/p/6082318.html)** - 简要内容:学习并实践了经常使用指令的代码,加深了对指令的理解。 - 二维码  **[第11周做业](http://www.cnblogs.com/alovera/p/6105629.html)** - 简要内容:学习了异常;经过实践了解了进程的并发。 - 二维码  **[第13周做业](http://www.cnblogs.com/alovera/p/6159312.html)** - 简要内容:学习了网络编程和多线程的基本内容 - 二维码  <font size=4>**扇贝背单词**</font> - 从上个学期学习JAVA的时候开始,已经坚持了300多天 <font size=4>**GDB调试汇编堆栈过程分析**</font> - 二维码  <font size=4>**经验**</font>
这学期没有什么被扣分的项目,分数也一直都蛮好的,我以为这一切最重要的就取决于态度,只要认真对待,完成了应作的事情,就必定会有相应的回报。
## 课程收获与不足 - 本身的收获 在两个学期这种自学模式的教学下,我自我学习的能力获得了很大的提升,不仅是对于这门课的学习,我以为有些东西是受益终生的。 记得老师曾经在课堂上说过,大意是若是在一段时间专一坚持作好一件事,那么久而久之,就会比大多数人更加优秀。这句话让我反思了不少。由于我从小就是一个三分钟热度的人,对不少东西都有兴趣都却很快就坚持不下去。可是若是我尝试着坚持,就可以有远比如今更加优秀。我想这门课对我而言最大的意义,不是学习了信息安全系统设计基础,而是改变了个人思想方式。 - 本身须要改进的地方 已经改变了不少,但愿本身可以一直坚持下去。 - 给开学初的你和学弟学妹们的学习建议 - 言行一致,重在坚持。 - 不论什么时候都不要有浮躁的心态,用认真的态度对待每一件要作的事。 - 若是从新学习这门课,怎么作才能够学的更好 - 在学习处于繁忙状态的时候放宽心态,不要浮躁,冷静的面对问题。 ## 问卷调查 - 你平均每周投入到本课程多长时间? - 20小时 - 每周的学习效率有提升吗? - 有提升 - 学习效果本身满意吗? - 比较满意,还能作得更好 - 你以为这门课老师应该继续作哪一件事情? - 在某些章节进行闭卷考试我认为是颇有必要的,由于有些答案虽然经过查阅书本就可以获得,可是这并不表明写对了题目就真的掌握了题目。 - 扇贝打卡加分是一个十分有利的促进学习的项目,但愿能够一直延续。 - 你以为这门课老师应该开始作什么新的事情? - 能够鼓励学生在教材学习的基础上本身探索更深层的知识点,并总结写出博客,而后酌情加分。 ## 补充 <font size=3>**1.本学期你与老师和同窗交互最多的一篇博客是哪篇?**</font> - 是我在博客园中提出的小组话题:[为何实验楼给出的一个小程序里面除法永远结果都为0](http://group.cnblogs.com/topic/75520.html) <font size=3>**2.本学期被阅读最多的博客是哪一篇?有何经验?**</font> - 第二周学习总结 - 经验:
在第二周的博客中我详细的展示了在linux系统中使用git的过程,实践内容比较丰富,我想正是由于这样才被阅读和参考。其实,一我的是否是用心写博客,认真总结本身作的事情,你们都是能看获得的。
```
3.如今评价一下第0周提出的问题的质量,抓住重点了吗?