Linux 信号的基本概念 操作系统

Linux 信号的基本概念

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

gdb 调试程序

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

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

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

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

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

线程的互斥与死锁

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

线程的庐山真面目

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

进程间通信 – 共享内存

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

进程间通信 – 信号量

  信号量是什么 信号量的本质是对临界资源的计数器,它是一种数据操作锁,信号量决定是否可以访问临界资源,从而对临界资源起到保护作用。信号量通过对临界区的互斥保护,来保护临界资源。临界区是指执...
阅读全文
STL 常用算法 STL

STL 常用算法

  查找算法 adjacent_find 在迭代器区间内查找一对相邻的重复元素,如果找到返回一个指向这对元素的第一个元素的迭代器,否则返回 last 其中pred用于定义 *first==*...
阅读全文