嵌入式技术学习笔记(九)

信号
信号是一种向进程发送通知,告诉其某件事情发生了的一种简单的通信机制
信号的产生:①另一个进程发送信号②内核发送信号③底层硬件发送信号
常用信号:SIGHUP 终止进程 终端线路挂断
SIGINT 终止进程 中断进程
SIGQUIT 建立CORE文件终止进程,并且生成core文件
SIGILL 建立CORE文件 非法指令
SIGTRAP 建立CORE文件 跟踪自陷
SIGBUS 建立CORE文件 总线错误
SIGSEGV 建立CORE文件 段非法错误
SIGFPE 建立CORE文件 浮点异常
SIGIOT 建立CORE文件 执行I/O自陷
SIGKILL 终止进程 杀死进程
SIGPIPE 终止进程 向一个没有读进程的管道写数据
SIGALARM 终止进程 计时器到时
SIGTERM 终止进程 软件终止信号
SIGSTOP 停止进程 非终端来的停止信号
SIGTSTP 停止进程 终端来的停止信号
SIGCONT 忽略信号 继续执行一个停止的进程
SIGURG 忽略信号 I/O紧急信号
SIGIO 忽略信号 描述符上可以进行I/O
SIGCHLD 忽略信号 当子进程停止或退出时通知父进程
SIGTTOU 停止进程 后台进程写终端
SIGTTIN 停止进程 后台进程读终端
SIGXGPU 终止进程 CPU时限超时
SIGXFSZ 终止进程 文件长度过长
SIGWINCH 忽略信号 窗口大小发生变化
SIGPROF 终止进程 统计分布图用计时器到时
SIGUSR1 终止进程 用户定义信号1
SIGUSR2 终止进程 用户定义信号2
SIGVTALRM 终止进程 虚拟计时器到时

信号发送:int kill(pit_t pid,int sig)
int raise(int sig)
unsigned in alarm(unsigned int seconds)
void abort()

信号处理的方式:①忽略②执行用户需要执行的动作(捕获)③默认执行

信号处理API:typedef void(*sighandle_t)(int)

线程
线程是任务调度和执行的基本单位
进程实现多任务的缺点:(1)进程间切换的计算机资源开销很大,切换效率非常低(2)进程间数据共享的开销也很大
线程和进程的关系:(1)线程是进程的一个执行单位,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程(2)同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间(3)进程退出,进程内所有线程全部退出(4)一个进程崩溃后,不会对其他进程产生影响,但是一个线程崩溃,整个程序都会死掉。所以多进程比多线程健壮。
线程不可能完全替代进程:(1)每个线程拥有自己独立的线程ID(TID)(2)每个线程有独立的切换状态(3)调度优先级(4)有自己独立的函数栈(5)有自己独立的错误号(6)每一个线程有自己独立的信号屏蔽字和未决信号集(7)每个线程有自己独立的tack_struct结构体

线程的特点:(1)线程切换的开销很低,实质上是函数的切换(2)线程通信机制简单,用全局变量来实现
线程函数是由谁提供的:非OS,而是线程库libpthread.a/.so,线程控制函数有:pthread_create,pthread_join,pthread_detach,pthread_cancel,pthread_exit
线程创建:int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(*start_routine)(void *),void *arg)

你可能感兴趣的:(嵌入式技术学习笔记(九))