20145303 《信息安全系统设计基础》第十一周学习总结
教材及代码学习内容总结
了解异常及其种类
•异常是异常控制流的一种形式,它一部分是由硬件实现的,一部分是有操作系统实现的
•异常就是控制流中的突变,用来响应处理器状态中的某些变化
•系统中可能的每种类型的异常都分配了一个唯一的非负整数的异常号
•异常类似于过程调用,但有一些重要的不同之处:
1、过程调用时,在跳转到处理器之前,处理器将返回地址压入栈中。然而,根据异常的类型,返回地址要么是当前指令,要么是下一条指令
2、处理器把一些额外的处理器状态压入栈里,在处理程序返回时,重新开始被中断的程序会需要这些状态
3、如果控制从一个用户程序转移到内核,那么所有这些项目都被压到内核栈中,而不是压到用户栈中
4、异常处理程序运行在内核模式下,意味着它们对所有的系统资源都有完全的访问权限
•异常分为四类:
1、中断是异步发生,是来自处理器外部的I/O设备的信号的结果
2、陷阱是有意的异常,是执行一条指令的结果。陷阱最重要的用途是在用户程序和内核之间提供一个像过程一样的接口,叫做系统调用
3、故障是由错误情况引起的,它可能能够被故障处理程序修正
4、终止是不可恢复的致命错误造成的结果,通常是一些硬件错误
理解进程和并发的概念
•异常是允许操作系统提供进程的概念所需要的基本构造块,进程是计算机科学中最深刻最成功的概念之一
•进程一个执行中的程序的实例。上下文是由程序正确运行所需要的状态组成的,这个状态包括存放在存储器中的程序的代码和数据,它的栈、通用目的寄存器的内容、程序计数器、环境变量以及打开文件描述符的集合
•多个流并发地执行的一般现象称为并发
•一个进程和其他进程轮流运行的概念称为多任务
•一个进程执行它的控制流的一部分的每一时间段叫做时间片
•多任务也叫做时间分片
•如果两个流并发的运行在不同的处理器核或者计算机上,我们称它们为并行流
理解数组指针、指针数组、函数指针、指针函数的区别
•指针数组是指针的数组
•数组指针是一个指针,这个指针指向一个数组
•函数指针指向一个函数,只是个变量
•指针函数是指带指针的函数,即本质是一个函数
fork
•forkdemo1:打印进程pid,调用fork函数生成子进程,休眠一秒后再次打印进程id
•forkdemo2:调用两次fork
•forkdemo3:fork产生子进程,父进程返回子进程pid
•forkdemo4:getpid返回调用进程的PID,getppid返回它的父进程的PID
•forkgdb:父进程打印两句,休眠一秒,再打印一句;子进程打印一句,休眠一秒,再打印两句
exec(ls)
•exec1
•exec2
•exec3
wait
•waitdemo1
•waitdemo2:获取子进程状态,把状态拆分成三块,exit,sig和core
psh
•psh1:输入要执行的指令,回车表示输入结束,然后输入的每个参数对应到函数中,再调用对应的指令
•psh2:加入了循环
testbuf
内容格式化输出到标准错误、输出流中
•testbuf1
•testbuf2
•testbuf3
testpid
输出当前进程pid和父进程pid
图16
testpp
env
•environ
•environvar:简单打印环境变量表
fifo
•consumer管道写端:可以通过查看文件stat结构中的stmode成员的值来判断文件是否是FIFO文件
•producer
pipe
调用pipe来创建管道并将其两端连接到两个文件描述符,array[0]为读数据端的文件描述符,而array[1]则为写数据端的文件描述符
•listargs
•pipe
•pipedemo
•pipedemo2
•testtty
•whotofile:重定向到文件
signal
•sigactdemo
•sigactdemo2
•sigdemo1
•sigdemo2
按Ctrl+C不能停止,一直在haha
•sigdemo3
按Ctrl+C无法退出