常见的进程调度算法 操作系统

常见的进程调度算法

先来先服务(FCFS)调度算法 FCFS调度算法是一种最简单的调度算法,该调度算法既可以用于作业调度也可以用于进程调度。在作业调度中,算法每次从后备作业队列中选择最先进入该队列的一个或几个作业,将它们...
阅读全文
dup2 对文件描述符重定向 操作系统

dup2 对文件描述符重定向

查看man手册介绍,dup和dup2用来复制一个文件描述符。我们知道文件描述符本质是文件描述符表的下标,所以这里说的复制的是文件描述符对应的文件表项指针,即实现了文件描述符的重定向。 正常情况下,如果...
阅读全文
进程池和线程池 操作系统

进程池和线程池

池的概念 由于服务器的硬件资源“充裕”,那么提高服务器性能的一个很直接的方法就是以空间换时间,即“浪费”服务器的硬件资源,以换取其运行效率。池是一组资源的集合,这组资源在服务器启动之初就完全被创建并初...
阅读全文
守护进程 操作系统

守护进程

守护进程也称精灵进程(Daemon),是运行在后台的⼀种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实...
阅读全文
父进程异步等待子进程 操作系统

父进程异步等待子进程

  我们知道子进程总是需要父进程等待的,如果父进程不等待子进程,而且子进程先退出,子进程会变成僵尸进程,僵尸进程虽然退出了,但仍然占用一些系统资源,比如PCB资源,大量的僵尸进程会造成严重的...
阅读全文
线程安全和可重入函数 操作系统

线程安全和可重入函数

什么是可重入函数 首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境;并且允许有多个线程同时执行,由于它们使用的是分离的栈,所以不会互相干扰。 函数怎么重入呢 递归...
阅读全文
Linux 信号的捕捉 操作系统

Linux 信号的捕捉

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

Linux 信号的阻塞

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

Linux 信号的基本概念

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

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

  前面我们提到过生产者-消费者模型,今天我们要介绍一种新的模型——读者-写者模型。 同样的读者-写者模型也有三种关系,它与生产者消费者模型不同之处在于:读者与读者之间是没有关系的 写者—写...
阅读全文