
操作系统
文章平均质量分 52
乐行僧丶
这个作者很懒,什么都没留下…
展开
-
同步、异步、阻塞和非阻塞
同步和异步同步:是用户线程发起IO请求需要等待或者轮询内核IO操作完成后才能继续执行。异步:用户线程发起IO请求后任需要继续执行,当内核IO操作完成后会通知用户线程,或者调用用户注册的回调函数。阻塞和非阻塞阻塞:是指IO操作需要彻底完成后才能返回用户空间。非阻塞:是指IO操作被调用后立即返回一个状态值,无需等待IO操作完成。同步和异步(线程间调用)同步和异步是对应调用者和被调用者,他们是线程之间的关系,两个线程之间要么是同步的,要么是异步的。同步操作时,调用者需要等待被调用者返回结果,才能进原创 2021-01-03 20:51:14 · 374 阅读 · 0 评论 -
二级页表的划分和由来
原创 2020-09-21 11:16:25 · 583 阅读 · 0 评论 -
Spooling技术
输入设备将数据输入到输入缓冲区中,然后由sp in(输入进程)将输入缓冲区的数据送到位于磁盘的输入井中,当cpu需要使用输入数据时,再由磁盘的输入井读入内存。输出进程首先将输出缓冲区中的数据送到位于磁盘的输出井中,当需要输出数据时,由输出进程将输出井的数据先搬运到位于内存的输出缓冲区中,然后再将输出缓冲区中的数据送往IO设备。空间换时间何为虚拟设备?Spooling系统如何实现虚拟设备的?试说明Spooling系统的组成?为什么要在设备管理中引入缓冲技术?spooling系统的含义是什么?为.原创 2020-09-16 21:30:17 · 1550 阅读 · 0 评论 -
IO控制方式
程序直接控制方式cpu干预程度:非常的频繁,IO操作开始前,完成后均需要cpu介入,并且在等待IO完成的过程中cpu需要不断的介入进行轮询检查,实际上是忙轮询,极大的浪费了cpu的资源,本质原因还是IO设备与cpu速度差异造成的矛盾,其次的原因是没有中断机制,IO设备无法向cpu报告自己的状态数据流向: 读 IO设备->cpu->内存 写 内存->cpu->IO设备传输单位: 一个字缺点:cpu与IO设备只能串行工作,忙等IO完成,极大的浪费cpu资源,cpu利用率原创 2020-09-15 00:02:55 · 2574 阅读 · 0 评论 -
死锁
死锁产生的原因有两个:1.多进程或多线程对不可剥夺的软硬件资源进行的竞争2.操作系统内核对于多个进程推进顺序的非法,多个进程对于资源的请求与释放的顺序不正确,造成资源的死锁。程序员对信号量的使用不当,造成应用程序内部多进程或多线程的死锁。程序员对互斥锁的使用不当,也会造成死锁,自己锁自己,这里的死锁并不是操作系统意义上的死锁,而是编程层面未对互斥锁成对(lock unlock)使用造成的。#include <thread>#include <semaphore.h>#i原创 2020-09-13 23:25:22 · 300 阅读 · 0 评论 -
Linux 信号量实现同步,实现互斥
一.实现同步同步模板使用信号量实现同步时,需要将信号量的初值设置为0semaphore s=0;p1() { p(s); 具体的代码}p2() { 具体的代码 v(s);}1.假设p1先执行,执行到p(s), s-=1, 此时s=-1<0,进程阻塞,主动放弃cpu使用权,cpu调度执行p2,执行p2的具体任务,然后进行v(s),,s+=1,s=0,p2执行完毕。cpu调度继续执行p1,此时s=0,p1被唤醒,因此就达到了先执行p2后执行p1的同步关系。2.假设p2先执行原创 2020-09-12 22:35:02 · 699 阅读 · 0 评论 -
信号量原理
信号量:信号量是基于软件互斥或硬件互斥方法实现的一种用于同步和互斥的机制。信号量只有两种操作原语:wait, signal一.整型信号量整型信号量用于描述临界资源的个数。s=10; 表示一个初始资源数量为10的信号量wait(s) { while (s <= 0); s --;}signal(s) { s ++;}缺点:违背“让权等待”的同步原则,由于当信号量所表示的资源数目<=0时,而此时该进程的时间片还未用完,便会不断运行while(s<=0),从而造成cpu原创 2020-09-12 20:18:54 · 1864 阅读 · 0 评论 -
软件方法实现互斥
一.单标志法轮流交替使用。缺点:当有一个进程不再进入临界区,便不能修改公共变量的turn,来标识另外一个进程可以进入临界区。因此另外一个进程将永久不能进入临界区,违背“空则让进”的原则A进程while (turn != A);critical section 临界区turn = Bremainder section 剩余区B进程while (turn != B);critical sectionturn = Aremainder section二.双标志先检查法为了解决在单标原创 2020-09-12 19:58:08 · 956 阅读 · 0 评论 -
Linux条件变量和互斥锁实现生产者消费者问题
生产者消费者问题作为多线程多进程同步互斥的经典问题,值得思考。本文使用Linux系统调用,通过互斥锁和条件变量模拟生产者消费者问题。#include <pthread.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>struct Node { int _val; Node *_next; Node(int val, Node *next):_val(val), _nex原创 2020-08-28 17:30:38 · 535 阅读 · 0 评论 -
进程通信(二)消息队列(System V 消息队列)
一、System V 消息队列简介消息队列:消息队列的本质是由Linux内核创建用于存放消息的链表,并且其功能是用来存放消息的,所以又称之为消息队列。在Linux的不同进程中,包括有血缘的进程和无血缘的进程,都可以通过Linux消息队列API所得到的消息队列唯一标识符对消息队列进行操作。二、分析消息队列的数据结构Linux为了维护消息队列,为消息队列创建了数据结构,接下来我们来分析一下消息...原创 2020-01-31 14:41:34 · 277 阅读 · 0 评论 -
进程状态的概念及状态转换图
一、进程状态1.创建状态 进程由创建而产生。创建进程是一个非常复杂的过程,一般需要通过多个步骤才能完成:如首先由进程申请一个空白的进程控制块(PCB),并向PCB中填写用于控制和管理进程的信息;然后为该进程分配运行时所必须的资源;最后,把该进程转入就绪状态并插入到就绪队列中。2.就绪状态 这是指进程已经准备好运行的状态,即进程已分配到除CPU以外所有的必要资源后,只要再获得CPU,便可...原创 2018-07-03 08:39:45 · 14186 阅读 · 0 评论