Linux 信号的捕捉 操作系统

Linux 信号的捕捉

前面两篇文章分别学习了信号的产生和信号的阻塞,这篇文章我们一起学习信号的捕捉,就是在合适的时候去处理接收的信号,那什么时候才是合适的时候呢? 内核是如何实现信号捕捉的 如果信号的处理动作是用户自定义函...
阅读全文
Linux 信号的阻塞 操作系统

Linux 信号的阻塞

前面我们了解了信号的基本概念,知道了信号产生的一般方式,处理动作,以及系统调用发信号和软件条件产生信号。今天我们就继续深入学习信号机制,看看信号在进程的PCB里是怎么表示的。了解了信号怎么表示的,就很...
阅读全文
Linux 信号的基本概念 操作系统

Linux 信号的基本概念

Linux 信号的本质 操作系统给进程发送信号,本质上是修改进程的PCB中相应的字段,并在合适的时候去处理所接受的信号。进程的用户空间代码执行到任何地方都可能接收到信号,因此信号对于进程的执行流来说是...
阅读全文
gdb 调试程序 Linux

gdb 调试程序

gdb 常用调试命令 run(r):运行程序,如果有断点在下一个断点处停止 start:开始执行程序,停在main函数第一条语句前   list(l):列出源码,接着上次的位置向下列,每次列...
阅读全文
基于读写锁的读者-写者模型 操作系统

基于读写锁的读者-写者模型

  前面我们提到过生产者-消费者模型,今天我们要介绍一种新的模型——读者-写者模型。 同样的读者-写者模型也有三种关系,它与生产者消费者模型不同之处在于:读者与读者之间是没有关系的 写者—写...
阅读全文
线程的同步 - 基于互斥量和条件变量 操作系统

线程的同步 – 基于互斥量和条件变量

上篇文章我们介绍了基于互斥量的线程互斥问题,互斥锁还会造成线程的饥饿等待问题,主要是由于线程优先级问题,某个线程总是可以申请到锁,而其他线程一直等待锁,所以就引出线程同步的问题。 互斥决定能不能访问临...
阅读全文
线程的互斥与死锁 操作系统

线程的互斥与死锁

  进程间通信为了保护临界资源,引出了信号量机制,为了实现对临界区的互斥访问,我们可以用二元信号量对临界区实现加锁的功能。同样的线程间为了实现互斥机制,提出了互斥量的概念,其行为和二元信号量...
阅读全文
线程的庐山真面目 操作系统

线程的庐山真面目

Linux 并没有真正的线程描述,而是借用进程模拟了线程,可以这样理解,不同的进程在同一个地址空间内执行相应的代码,这样的进程就是模拟出来的线程。创建线程只是创建了一个PCB,让多个PCB共享一个地址...
阅读全文
进程间通信 - 共享内存 操作系统

进程间通信 – 共享内存

共享内存原理 要实现进程间通信,首先需要让进程看到共同的资源,而共享内存就是通过页表的映射,把两个进程中一块虚拟地址映射到同一块物理地址,彼此独立的进程只要访问自己的这块虚拟地址就可以让两个进程看到共...
阅读全文