当前位置: 首页 > news >正文

OS进程调度

tss

在这里插入图片描述
在这里插入图片描述

Q1:你是如何保证两个进程不能同时访问共享资源的?

✅ 推荐回答:

我实现了基于结构体的互斥锁,使用 mutex_lock() 来加锁资源。如果已有任务持有锁,则当前任务会被阻塞并加入等待队列,直到被唤醒。解锁时通过 mutex_unlock() 唤醒下一个等待任务。整个过程通过关闭中断临界区 + 自定义调度器配合实现互斥。

❓Q2:你的信号量是怎么实现的?和互斥锁有何区别?

✅ 推荐回答:

信号量管理的是“资源数量”,可以大于1,适用于限制并发资源使用;而互斥锁只能是“0或1”,用于严格控制独占访问。我的 sem_wait() 会在资源为0时阻塞任务,sem_notify() 唤醒等待的任务或累加资源数。适合多消费者-多生产者场景。

❓Q3:你怎么阻塞/唤醒一个进程的?调度器是怎么配合的?

✅ 推荐回答:

我通过 task_set_block() 将当前任务从就绪队列移除,并放入互斥锁或信号量的等待队列。下一次调度器触发时,选择其他可运行任务。等资源可用时,mutex_unlock() 或 sem_notify() 调用 task_set_ready() 把任务放回就绪队列。

❓Q4:是否考虑了中断上下文并发访问问题?

✅ 推荐回答:

是的,我在 mutex_lock() 和 sem_wait() 等关键操作中使用 irq_enter_protection() 关闭中断,确保临界区原子性。这样即使中断在任何时刻触发,也不会破坏队列结构或状态变量。

✅ 四、亮点总结(面试总结这样说)

在进程同步方面,我实现了可重入互斥锁和标准的计数信号量,所有操作都支持阻塞/唤醒机制,并结合调度器完成进程切换。在具体实现中,我使用了链表管理等待队列,利用关闭中断保护临界区,确保在多任务切换下保持一致性。在 TTY 缓冲区、磁盘读写等模块中广泛应用,保证了多进程访问资源的正确性。

🎙️ 进程同步与互斥 实现答辩稿

在我的操作系统中,我实现了两种进程间同步与互斥机制:互斥锁(mutex) 和 信号量(semaphore)。

互斥锁用于保护共享资源,例如控制台输出、文件结构等,防止多个进程同时访问。我的 mutex_lock() 支持可重入,如果当前任务已持有锁则计数加一,否则任务会阻塞并加入等待队列。mutex_unlock() 在释放锁后会唤醒下一个等待任务,并立即赋予锁。

信号量用于控制资源数量,比如生产者-消费者模型。我实现了 sem_wait() 和 sem_notify(),前者在资源不足时阻塞当前进程,后者在资源可用时唤醒等待任务或增加计数。

这两者都通过链表维护等待队列,并在操作时使用 irq_enter_protection() 关闭中断,确保原子性。调度器会在任务阻塞或唤醒时切换到其他可运行任务。

目前我在 TTY 输入输出、磁盘驱动、文件系统等模块广泛应用了这两套机制,实现了安全可靠的多进程资源管理。

相关文章:

  • LeetCode 3355.零数组变换 I:差分数组
  • Java课堂笔记7
  • php://filter的trick
  • 直线型绝对值位移传感器:精准测量的科技利刃
  • 佰力博科技与您探讨压电材料的原理与压电效应的应用
  • modelscope v1.26.0全新发布!云端模型下载加速+多重安全升级,打造新时代AI开发新体验!
  • AI护航化工:《山西省危化品视频智能分析指南》下的视频分析重构安全体系
  • Vue3 组件之间传值
  • elementui初学1
  • 第15天-NumPy科学计算实战:从基础到图像处理
  • 是德科技 | 单通道448G未来之路:PAM4? PAM6? PAM8?
  • 给几张图片和一段文字,怎么制作成带有语音的视频---php
  • FPGA降低功耗研究
  • spring cloud config更新配置
  • 【VLNs篇】02:NavGPT-在视觉与语言导航中使用大型语言模型进行显式推理
  • SAP-ABAP:ABAP异常处理与SAP现代技术融合—— 面向云原生、微服务与低代码场景的创新实践
  • digitalworld.local: FALL靶场
  • 无人机桥梁巡检
  • eclipse 生成函数说明注释
  • Hadoop-HA高可用集群启动nameNode莫名挂掉,排错解决
  • 自己做的网站怎么才能被收录/百度免费收录提交入口
  • 百度网站建设多少钱/微信运营工具
  • 长春网络公司/seo网站关键词优化软件
  • 深圳网站建设亿联时代/微信营销软件有哪些
  • 自己做网站有名/我想自己建立一个网站
  • 个人建什么样的网站好/爱站小工具圣经