
操作系统
文章平均质量分 63
鼻里鼻里大学门卫
你看这小代码它平平无奇
展开
-
生产消费者模型
不过,为了维持生产消费者模型的正常运转,生产者和消费者之间也要存在同步关系,亦即相互之间根据彼此的状况对自身进行调整,否则,会出现供大于求的情况,导致冗余问题,或者供小于求的情况,导致饥饿问题。(1)解耦:对于一个普通的函数而言,其按部就班的从上到下运行,不过当涉及一个函数调用的时候,从调用这个函数、把参数传递给这个函数、再到这个函数把运行结果返回给主程序,在这段过程中,主程序是什么都不能做的,只能卡在那里,等待处理结果,这就会浪费很多时间。所以生产者之间是互斥的,而互斥的关系需要通过加锁来维持正常运转。原创 2022-09-02 09:54:14 · 656 阅读 · 1 评论 -
死锁的成因及避免
对于死锁,形象的描述就是两个人都抓着对方,A说:B你放手我就放手,B说:A你先放手我再放手,于是两个人就僵持不下,形成死锁。:当一个进程请求资源失败的时候,不会继续保持自己的资源,而是把自己的资源释放。:如果一个进程申请资源失败的时候,它不会放弃自己原有的资源,而是在保持原有资源的前提下对其申请的资源进行等待。:一个资源只能被一个进程调用,在该资源被调用的同时,其它进程是不能使用该资源的,只能等待。:破坏环路形成的条件,让不同的进程尽可能的按顺序申请资源。:一个进程请求资源,对方不给,可以抢过来。...原创 2022-09-01 10:48:34 · 335 阅读 · 0 评论 -
如何创建和删除一个可执行文件
具体来讲,文件的属性信息存储在inode中,亦即想要创建一个可执行文件,首先就需要申请一块inode空间,具体方式就是遍历inode bitmap,找到其中为0的位,亦即可以拿来使用的位,将其置为1,这样的操作过后,该位上的inode空间就属于这个文件了。接下来需要做的是写入文件的具体信息,那就需要为当前只有属性信息的文件申请一块存储具体信息的空间,申请空间的具体方式和上面一样,也是遍历位图。作为一个文件,软链接保存的是其所对应文件的路径,所以软链接实际上起到某个文件快捷方式的作用。...原创 2022-09-01 10:06:27 · 550 阅读 · 0 评论 -
进程的状态
在睡眠状态的基础上引入深度睡眠状态的原因是,常规的可中断的睡眠状态是可能存在问题的,当一个进程在内存中运行时,如果需要数据,会向硬盘提出要求,在等待数据的时候,这个进程就会进入睡眠状态。孤儿进程: 相比于僵尸进程是子进程先退出,父进程后退出,孤儿进程是父进程已经退出了,但子进程仍在运行。僵尸进程:当一个子进程退出的时候,父进程理应回收其退出状态等相关信息,但是有些时候父进程正在处理其它事情,无暇读取子进程的退出状态,这时子进程就会变为僵尸进程,保持其基本的退出信息,等父进程运行完了再来读取。...原创 2022-08-31 12:23:00 · 799 阅读 · 0 评论 -
内核态和用户态
(3)在对信号处理完毕之后,进程理应当是返回用户态正常执行任务的,虽然在处理自定义信号的时候,进程当前就处于用户态,但是这样的状态和默认状态下回到用户态的逻辑是不同的。:首先明确一点,进程在运行的时候,就是单纯的在运行,无法估计其它事务,只有当涉及时间片的切换或出现异常情况,进程暂时没有在运行的时候才能有机会对信号进行处理。即当进程正常运行,行使功能的时候,都是处于用户态的,但当进程需要进行进程切换时上下文信息、临时数据的保存,恢复新切换上来的进程的上下文信息和临时变量时进程是处于内核态的。...原创 2022-08-31 10:22:54 · 403 阅读 · 0 评论 -
进程间通信方式
实现共享内存的整个过程就是按照操作系统的模式来进行的,除此之外,对于该块物理内存空间,其申请和释放也是由操作系统决定的,在建立共享内存时,先要申请空间,再建立映射关系,共享内存任务完成之后,也要先解除映射关系,再释放该物理内存空间。2,共享内存:对于使用共享内存进行通信的两个进程而言,二者都是通过进程结构体、虚拟地址空间、页表映射到物理内存的同一块空间中,而物理内存中的这块空间,就是所谓的在进程间通信时,两个进程都能看到的同一份资源。1,管道通信:管道通信本质上是通过拷贝的方式在进程间实现数据传输。...原创 2022-08-31 09:07:47 · 161 阅读 · 0 评论 -
虚拟内存和页表
由于每一个进程所拥有的虚拟内存结构都是相同的,所以,每一个进程都认为自己拥有全部的内存空间。本质上讲,一个进程在运行的时候,其所拥有的资源一定是保存在物理内存空间中的,但是当这个进程需要读取数据或资源时,却不是直接从物理内存中读取的,而是通过虚拟地址空间,借助页表,按照一定的映射规则,帮助进程按照虚拟地址空间中的地址找到物理内存中的地址。对于不同的进程而言,3G用户空间中的内容不同的进程是不同的,但是在1G内核空间中,由于均面向的操作系统,所以每一个进程1G内核空间中的内容都是相同的。...原创 2022-08-30 09:44:09 · 240 阅读 · 0 评论 -
【操作系统】进程、线程和协程相关问题
2,线程切换:线程的切换分为两种情况,当不同进程下的线程切换时,具体的过程和进程切换几乎一致,但同一进程下的不同线程切换时,由于同一进程下的不同线程是共享该进程的空间和资源的,所以此时,线程所需的开销就会小很多,需要进行处理的只有每一个线程所专有的寄存器和栈。对于进程的切换而言,当某一个进程在时间片内正常运行的时候,是处于用户态的,但是涉及到进程的切换时,由于需要上下文信息的保存,页表的切换等操作,此时被切换下去和切换上来的进程都是处于内核态的。线程是进程中的控制单元,负责当前进程中程序的执行。......原创 2022-08-29 10:56:15 · 330 阅读 · 0 评论