操作系统
時光机a
相信奇迹的人,本身就和奇迹一样了不起
展开
-
进程通信之管道通信
管道通信是常见的进程通信方式之一,其原理是借助操作系统,在内核区创建一块缓冲区,由两端的进程分别写入、读出数据。创建管道的函数的原型:int pipe(int filedes[2]);其参数为一个大小为2的整形数组,在pipe()方法结束后,若管道创建成功,则该数组会被填入两个文件描述符,其中fd[0]默认为读端,fd[1]默认为写端。若创建失败,则返回值为-1。管道通信特点:(1)半双工,数据在同一时刻只能在一个方向上流动(2)管道不是普通的文件,不属于某个文件系统,其只存在于内存中(3)管原创 2021-12-07 23:37:00 · 507 阅读 · 0 评论 -
读者-写者问题解决方式
上一篇博客记录了如何解决多生产者多消费者的问题,这篇文章用来讲一讲如何解决读者-写着问题。读者-写者问题:系统中有多个读进程和写进程共同访问一个文件资源,读进程只是读取文件内容,而写进程则会修改文件内容。不难看出读进程之间是可以同时访问共享资源的,但一个写进程必须要保证和其他写进程、读进程互斥访问文件资源。因为每个写进程是需要和其他写进程读进程互斥访问文件资源的,因此需要设置一个信号量rw=1,在写进程进入临界区前后分别对rw执行PV操作,但读进程呢?如果读进程也只是简单的在读文件资源前后对rw执行P原创 2021-10-10 16:58:16 · 723 阅读 · 0 评论 -
多生产者多消费者解决方式
在上一篇博客中记录了如何解决普通生产者消费者的问题,这篇讲一下如何解决多生产者多消费者问题。多生产者多消费者问题案例:一家四口围着一个盘子,盘子中最多放两个水果。爸爸不断向盘子中投放苹果,儿子不断从盘子中拿走苹果,妈妈不断向盘子中投放橘子,女儿不断从盘子中拿走橘子。这里需要指明的是,“多生产者多消费者”不是指多个生产者多个消费者,而是指多类生产者多类消费者。还是一样的思路,分析该问题中存在的同步关系:1.存放水果的盘子需要互斥访问,这是很明显的。设置一个信号量mutex,初值为12.只有当盘子中还原创 2021-10-10 16:22:18 · 479 阅读 · 0 评论 -
使用信号量机制解决生产者消费者问题
生产者消费者问题是经典的同步问题,这篇文章用来记录一下如何使用信号量机制解决。信号量机制(Semaphore)是解决同步问题常用解法,所谓信号量其实就代表着对应共享资源的数量。对于信号量只允许三种操作,分别是初始化、P操作、V操作。P、V操作都是具有原子性的。P操作会减少信号量的值(假设一次减1),如果信号量成为负数,就代表着资源不够,调用线程会进入该信号量的等待队列,变为阻塞状态。V操作会增加信号量的值(假设一次加1),并唤醒处于等待队列头部的线程。信号量机制用法灵活,既可以用来实现互斥,也可以实原创 2021-10-06 15:29:04 · 4938 阅读 · 0 评论 -
进程/线程互斥的实现方式
首先介绍几个相关概念。临界资源:在同一时刻,只能被一个进程/线程所使用的资源。临界区:访问临界资源的代码段。因此同一时刻只能有一个进程/线程进入临 界区。进入区:进入临界区之前的代码段,一般用来做加锁操作。退出区:临界区执行之后的代码段,一般用来释放锁。下面介绍几种进程/线程同步的实现方式1.硬件方式-关中断。在代码执行处于进入区时,执行关中断指令,在退出区时执行开中断指令。CPU忽略中断信号,自然就不会发生进程/线程调度,保证了单核情况下只有一个进程/线程访问临界资源。然而只有执行了关中原创 2021-10-04 21:45:18 · 1891 阅读 · 0 评论 -
进程的状态及转换
进程的状态:运行,就绪,阻塞,创建,终止。三种基本状态:1.运行态:持有CPU使用权,正在执行的状态。2.就绪态:所有资源都已准备完毕,只差CPU使用权的状态3.阻塞态:进程所等待的事件尚未完成(比如发出系统调用,或者需等待其他进程的执行结果),该进程需要此事件完成,此时的状态称为阻塞态。另外两种状态:1.创建态:在一个进程开始执行之前,操作系统需要为其创建并初始化PCB,分配内存空间,这一时刻的进程处于创建态。2.终止态:当一个进程执行完毕,或者遇到某种错误而无法继续执行,此时需要终止该进程原创 2021-09-04 21:28:01 · 362 阅读 · 0 评论 -
中断概念、作用及分类
在没有引入中断机制之前,每个程序都只能等待上一个程序运行完毕才能开始执行,程序之间是串行执行的,系统资源利用率极低。而引入中断机制之后,如果发生了中断,CPU将从用户态转变为核心态,CPU的使用权也将交给操作系统内核,由内核程序去处理中断,中断处理完成之后,CPU的使用权返回给用户程序(不一定是之前执行的程序),所以说,中断使得用户程序之间能够并发执行。中断机制的特点:1.一旦发生中断,CPU就从用户态转变为核心态,就需要操作系统介入处理中断。2.中断是CPU由用户态变为核心态的唯一途径。中断的分类原创 2021-09-04 14:15:05 · 1006 阅读 · 0 评论