教材内容学习总结
一、了解异常及其种类
1、异常是异常控制流的一种形式,它一部分由硬件实现,一部分由操作系统实现。异常就是控制流中的突变,用来响应处理器状态中的某些变化。
2、异常可以分为四类:中断、陷阱、故障、终止。
二、理解进程和并发的概念
1、系统中的每个程序都运行在某个进程的上下文中。
- 上下文:是由程序正确运行所需的状态组成的,包括内存中的代码和数据、它的栈、通用寄存器的内容、程序计数器、环境变量以及打开文件描述符的集合。
2、并发流 - 一个逻辑流的执行在时间上与另一个流重叠
- 并发:多个流并发的执行的一般现象
-
多任务(时间片):一个进程和其他进程轮流运行
三、掌握进程创建和控制的系统调用及函数使用:fork,exec,wait,waitpid,exit,getpid,getppid等
fork
a.调用一次,返回两次。一次返回到父进程,一次返回到新创建的子进程。
b.并发执行。父进程和子进程是并发运行的独立进程。
c.相同但是独立的地址空间。
d.共享文件。
wait
调用wait(&status)等价于调用waitpid(-1,&status,0)。
exit
从程序员的角度,我们可以认为进程总是处于下面三种状态之一:运行、停止、终止。
进程会因为三种原因终止:1.收到一个信号,该信号的默认行为是终止进程,2.从主程序返回,3.调用exit函数。
exit函数以status退出状态来终止进程。
getpid和getppid
每个进程都有一个唯一的正数(非零)进程ID(PID).getpid函数返回调用进程的PID。getppid函数返回它的父进程的PID(创建调用进程的进程)。getpid和getppid函数返回一个类型为pid_t的整数值,在Linux系统上它在types.h中被定义为int。
四、理解数组指针、指针数组、函数指针、指针函数的区别
1、数组指针是一个指针,该指针指向的是一个数组;
2、指针数组是一个数组,数组的元素保存的是指针;
3、函数指针是一个指针,该指针指向一个函数;
4、指针函数是一个函数,该函数返回的是一个指针。
五、理解信号机制:kill,alarm,signal,sigaction
a.进程组:每个进程都只属于一个进程组,进程组是由一个正整数进程组ID来标识的。getpgrp函数返回当前进程的进程组ID。默认地,一个子进程和它的父进程同属于一个进程组。一个进程可以通过使用setpgid来改变自己或者其他进程的进程组。
b./bin/kill程序可以向另外的进程发送任意的信号。
c.在任何时刻,至多只有一个前台作业和0个或多个后台作业。
d.进程通过调用kill函数发送信号给其他进程(包括它们自己)。
e.进程可以通过用alarm函数向它自己发送SIGALRM信号。
六、掌握管道和I/O重定向:pipe, dup, dup2
管道可以把一个进程的标准输出流与另一个进程的标准输入流连接起来。bash中用“|”在两个命令之间创建管道。
Linux中,对系统进行操作时,就需要I/O设备与系统产生交互,同时会产生三种数据,标准输入(0)、标准输出(1)、标准错误(2)。其中标准输入(stdin)默认接受来自键盘的输入,标准输出(stdout)和标准错误(stderr)默认向终端窗口输出,改变默认输出和出入的位置,就是I/O重定向。