2018-2019-1 20165203 《信息安全系统设计基础》第七周学习总结

2018-2019-1 20165203 《信息安全系统设计基础》第七周学习总结

教材学习内容总结

异常

  • 异常:异常就是控制流中的突变,用来响应处理器状态中的某些变化。
  • 基本思想:如图所示

  • 异常的类别:
    • 中断
      • 中断是异步发生的,是来自处理器外部的I/O设备的信号的结果。
      • 处理方法:对于I\O设备,通过向处理器芯片上的一个引脚发信号,并将异常号放到系统总线上,来触发中断,这个异常号标识了引起中断的设备。当前指令完成执行后,处理器从系统总线读取异常号,调用适当的中断处理程序,处理器返回时,它就将控制返回给下一条指令。如图所示

    • 陷阱和系统调用
      • 陷阱是有意的异常,是执行一条指令的结果。
      • 处理方法:执行syscall指令,但是会导致一个到异常处理程序的陷阱,这个处理程序解析参数,并调用适当的内核程序。如图所示

    • 故障
      • 故障由错误引起的,它可能能够被故障处理程序修正。
      • 缺页异常:当指令引用一个虚拟地址,而与该地址相对应的物理页面不在内存中,因此必须从磁盘中取出时,就会发生故障。
      • 处理方法:根据故障是否能够被修复,故障处理程序要么重新执行引起故障的指令,要么终止。如图所示,

    • 终止
      • 终止是不可恢复的致命错误造成的结果,通常是一些硬件错误。
      • 例子:DARM或者SRAM位被损坏时发生的奇偶错误。
      • 处理方法:处理程序将控制返回给一个abort例程,该例程会终止这个应用程序。如图所示

  • 总结:如图所示

    • Linux/x86-64故障和终止
      • 触发错误
      • 一般保护故障
      • 缺页
      • 机器检查

进程和并发

  • 进程:一个执行中程序的实例。
  • 上下文:由程序正确运行所需的状态组成。这个状态包括存放在内存中的代码和数据,它的栈、通用目的寄存器的内容、程序计数器、环境变量以及打开文件描述符的集合。
  • 进程的逻辑抽象
  • 一个独立的逻辑控制流:它提供一个假象,好像我们的程序独占地使用处理器。
  • 一个私有的地址空间:它提供一个假象,好像我们的程序独占地使用内存系统,让我们更深入地看看这些抽象。
  • 并发流:一个逻辑流的执行在时间上与另一个流重叠,称为并发流,这两个流被称为并发地运行
  • 并发:多个流并发地执行的一般现象被称为并发
  • 多任务:一个进程和其他进程轮流执行的概念称为多任务
  • 时间片:一个进程执行它的控制流的一部分的每一时间段叫做时间片
  • 并行流:如果两个流并发地运行在不同的处理器核或者计算机上,那么我们称他们为并行流,它们并行地运行,且并行地执行

进程控制

  • 获取进程ID:每个进程都有一个唯一的正数进程ID(PID),getpid函数返回调用进程的PID,getppid函数返回它的父进程的PID(创建调用进程的进程)。

  • 创建和终止进程:
    • 进程所处的三种状态
      • 运行
      • 停止
      • 终止:三种原因
        • 收到一个信号,该信号的默认行为是终止进程。
        • 从主程序返回。
        • 调用exit函数。

    • 创建进程:
      • 父进程通过调用fork函数创建一个新的运行的子进程
      • fork函数的使用格式:如图所示

        • 注意:fork函数只被调用一次,却会返回两次:一次是在调用进程(父进程)(fork函数返回子进程的PID)中,一次是在新创建的子进程(fork函数返回0)中。
  • waitpid函数:来等待它的子进程终止或者停止。
    • 使用格式:

    • 主要作用:
      • 判定等待集合的成员。
      • 修改默认行为。
      • 检查已回收子进程的退出状态。
      • 错误条件:如果调用进程没有子进程,那么waitpid返回-1,并且设置errnoECHILD,如果waitpid函数被一个信号中断,那么它返回-1,并设置errnoEINTR.
  • 让进程休眠:sleep函数----将一个进程挂起一段指定的时间。

    • 如果请求的时间量已经到了,sleep返回0,否则返回还剩下的要休眠的秒数。
  • pause函数:让调用函数休眠,直到该进程收到一个信号。

  • execve函数:在当前进程的上下文中加载并运行一个新程序。

    • 调用一次并从不返回。
    • getenv函数:在环境数组中搜索字符串name=value.如果找到了,它就返回一个指向value的指针,否则,它就返回NULL.

  • setenv函数:如果环境数组包含一个形如name=oldvalue的字符串,那么unsetenv会删除它,而setenv会用newvalue代替oldvalue,但是只有在overwirte非零时才会这样。如果name不存在,那么setenv就把name=newvalue添加到数组中。

信号机制

  • 信号:一个信号就是一条小消息,它通知进程系统中发生了一个某种类型的事件。
  • 发送信号和接收信号。

  • /bin/kill程序发送信号:
    • 例:/bin/kill -9 15213:发送信号9给进程15213.
    • /bin/kill -9 -15213:发送一个SIGKILL信号给进程组15213中的每一个进程。
    • kill函数发送信号:调用kill函数发送信号给其他进程。

      • 如果pid>0,那么kill函数发送信号号码sig给进程pid.
      • 如果pid=0,那么kill发送信号sig给调用进程所在进程组中的每个进程,包括调用进程自己。
      • 如果pid<0,kill发送信号sig给进程组|pid|中的每个进程。
    • alarm函数发送信号:调用alarm函数向它自己发送SIGALRM信号。

      • 如果seg=0,那么不会调度安排新的闹钟。
    • signal函数:修改和信号相关联的默认行为。

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

问题:根据本周上课讲解内容,提出疑问:ls命令为查看,那么还有没有其他的命令也可以查找呢?

解答:

  • find -name "文件名":能够精确定位查找某个文件。

  • find -name "文件名" -ls 这个方法能够精确定位查找某个文件,并且列出文件详情。

  • locate “m”查找当前目录所有的含有m字符的字串。

  • locate -i“test”查找当前目录所有的含有test字符,并且不区分大小写。

代码托管

(statistics.sh脚本的运行结果截图)

上周考试错题总结

相对内核而言,文件分为文本文件和二进制文件。其中文本文件只含有ASCII或Unicode字符。

A .正确

B .错误

C .不确定

答案:B

解析:文件分为普通文件、目录和套接字,其中文本文件是只含有ASCII或Unicode字符的普通文件。

其他(感悟、思考等,可选)

本周的教材内容主要学习了第8章,异常控制流,了解了流的概念,及计算机系统中异常的处理方法,了解了计算机操作系统中如何打开、关闭等对进程进行一系列操作,课上内容了解了ls的用法,并尝试着自己变成实现ls的用法,收获很大。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料

原文地址:https://www.cnblogs.com/20165203-xyx/p/9941033.html

时间: 2024-10-20 20:26:09

2018-2019-1 20165203 《信息安全系统设计基础》第七周学习总结的相关文章

20135223何伟钦—信息安全系统设计基础第七周学习总结

第六章 存储器层次结构 [学习时间:6小时] [学习任务:<深入理解计算机系统>第六章] 6.1存储技术 6.1.1随机访问存储器 分为两类:静态(SRAM)和动态(DRAM). (1)SRAM:高速缓存存储器,既可以在CPU芯片上,也可以在片下. (2)DRAM:主存以及图形系统的帧缓冲区. 1.静态RAM SRAM将每个位存储在一个双稳态的存储器单元里.每个单元是用一个六晶体管电路来实现的.该电路有一个属性:可以无限期地保持在两个不同的电压配置或状态之一. 2.动态RAM 每位晶体管数 相

20135205信息安全系统设计基础第七周学习总结

第六周 存储器层次结构 ---------------------------------------------------------------------- 第一节 存储技术 1.三种常见存储技术 1)RAM 静态RAM:SRAM将每个位存储在一个双稳态的存储单元里. 每个单元是用一个六晶体管电路实现的这个电路有这样一个属性,可以无限期地保持在两个不同的电压配置或状态之一. 动态RAM:DRAM将每个位存储为对一个电容的充电. 每个单元由一个电容和一个访问晶体管组成. 与SRAM不同,D

信息安全系统设计基础第七周学习总结—20135227黄晓妍

第六章存储器层次结构 6.1存储技术 6.1.1随机访问存储器(分成两类) 静态RAM(SRAM):快,作为高速缓存存储器.(几百几千兆) 动态RAM(DRAM):作为主存,图形系统的帧缓冲区.(<=几兆) 1.静态RAM 具有双稳定状态,它可以无期限地保持在两个不同的电压配置(状态)其中的一个.也可以保持在亚稳定状态,但这个状态易被干扰.由于它具有双稳定性,所以即使有干扰,当干扰消除时,它能很快地恢复到稳定值. 2.动态RAM DRAM将每个位存储为对一个电容充电.对干扰非常敏感,电容的电压被

20135234马启扬-——信息安全系统设计基础第七周学习总结

第六章 存储器层次结构 存储器系统是一个具有不同容量,成本和访问时间的存储设备的层次结构. CPU寄存器保存着最常用的数据. 靠近CPU的小的,快速的高速缓存存储器作为一部分存储在相对较慢的主存储器(主存)中的数据和指令的缓存区域. 主存暂时存放存储在容量较大的,慢速磁盘上的数据,而这些磁盘常常又作为存储在通过网络连接的其他机器的磁盘或磁带上的数据的缓存区域. 6.1存储技术 6.1.1随机访问存储器 随机访问存储器(RAM)分为:静态的RAM(SRAM)和动态的RAM(DRAM) SRAM用来

信息安全系统设计基础第七周学习总结

一. Linux命令复习: man –k: man –k <命令> :用于学习命令 关于man命令的区分: (1)一般命令:(2)系统调用:(3)库函数,涵盖了C标准函数库.可以通过在man后面加上相应区段的数字查看相应段的内容. cheat: 查看可用的小抄列表:cheat –l 要访问某个指定命令的小抄,只要运行cheat命令,后面跟上该命令的名称:cheat <command-name> 你可以通过使用“-s”选项,在所有小抄中搜索包含有指定关键词的内容:cheat -s &

20145216 史婧瑶《信息安全系统设计基础》第一周学习总结

20145216 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 Linux基础 1.ls命令 ls或ls .显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的可以省略.我们可以用ls -a .显示当前目录中的所有内容,包括隐藏文件和目录.其中“-a” 就是选项,改变了显示的内容.如图所示: 2.man命令 man命令可以查看帮助文档,如 man man : 若在shell中输入 man+数字+命令/函数 即可以查到相关的命令和函数:若不加数字,那man命令默认从数字较

20145311 《信息安全系统设计基础》第一周学习总结

20145311 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 常用的部分命令 CTRL+SHIFT+T:新建标签页,编程时有重要应用: ALT+数字N:终端中切换到第N个标签页,编程时有重要应用: Tab:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成: CTRL+C:中断程序运行 Ctrl+D:键盘输入结束或退出终端 Ctrl+S: 暂定当前程序,暂停后按下任意键恢复运行 Ctrl+A: 将光标移至输入行头,相当于Home键 Ctrl+E

20145216史婧瑶《信息安全系统设计基础》第九周学习总结

20145216史婧瑶<信息安全系统设计基础>第九周学习总结 教材内容总结 第十章 系统级I/O 输入/输出(I/O)是在主存和外部设备之间拷贝数据的过程. 第一节 Unix I/O 这一节涉及到操作系统的基本抽象之一--文件.也就是说,所有的I/O设备都被模型化为文件,而所有的输入输出都被当做对相应文件的读/写.相关的执行动作如下: 1.打开文件: 应用程序向内核发出请求→要求内核打开相应的文件→内核返回文件描述符 文件描述符:一个小的非负整数,用来在后续对此文件的所有操作中标识这个文件.有

20145311 《信息安全系统设计基础》第二周学习总结

20145311 <信息安全系统设计基础>第二周学习总结 教材学习内容总结 重新学习了一下上周的一部分命令:grep main wyx.c(grep的全文检索功能)ls > ls.txt :ls内容输出到文本find pathname -mtime -n/+nfind -size -n/+n (find的功能还是比较强大) 简单地学习了一下vim编辑器,跟着vimtutor简单地学了一些,在linux bash中使用vim能够极大地提高效率, vim的用法比较多,只学习了其中简单的一部分

20145339《信息安全系统设计基础》第一周学习总结

20145339顿珠达杰<信息安全系统设计基础>第一周学习总结 ◆ Linux是一个操作系统.如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 物理机系统上可以通过使用[Ctrl]+[Alt]+[F1]-[F6]进行终端和图形界面切换,在线实验环境中按下[Ctrl]+[Alt]+[F7]来完成切换.普通意义上的 Shell 就是可以接受用户输入命令的程序,Unix/Linux 操作系统下的 Shell 既是用户交互的界面,也是控制系统的