进程控制

进程控制是操作系统的核心功能之一,它负责对进程的生命周期进行管理和控制,包括进程的创建、撤销、阻塞、唤醒、挂起、激活以及进程的调度等操作。以下是对进程控制相关内容的详细介绍:

进程创建

  • 步骤
    • 申请空白PCB:操作系统从PCB集合中选取一个空白的PCB,并为其分配唯一的进程标识符(PID)。
    • 为新进程分配资源:根据进程的需求,为其分配内存空间、打开文件、分配I/O设备等资源。
    • 初始化PCB:将进程的初始状态设置为就绪状态,填写PCB中的各项信息,如进程优先级、程序计数器、CPU寄存器状态等。
    • 将新进程插入就绪队列:将初始化后的PCB插入到就绪队列中,等待操作系统的调度。

进程撤销

  • 步骤
    • 根据PID找到对应的PCB:操作系统通过进程标识符(PID)在PCB集合中查找要撤销的进程的PCB。
    • 回收进程占用的资源:释放进程所占用的内存空间、关闭文件、归还I/O设备等资源。
    • 将进程从所在队列中移除:如果进程处于就绪队列、阻塞队列或其他队列中,将其从相应队列中删除。
    • 释放PCB:释放PCB所占用的内存空间,标志着该进程在系统中不再存在。

进程阻塞与唤醒

  • 阻塞
    • 原因:当进程需要等待某个事件发生,如等待I/O操作完成、等待信号量释放、等待其他进程的消息等,就会主动调用阻塞原语将自己阻塞。
    • 操作:操作系统将进程的状态从就绪或运行状态改为阻塞状态,并将其PCB插入到相应的阻塞队列中。同时,保存进程当前的处理机状态信息,以便在事件发生后能够恢复执行。
  • 唤醒
    • 原因:当进程所等待的事件发生时,由相关的事件处理程序调用唤醒原语来唤醒阻塞的进程。
    • 操作:操作系统从相应的阻塞队列中找到该进程的PCB,将其状态改为就绪状态,并将PCB插入到就绪队列中,等待调度执行。同时,恢复进程之前保存的处理机状态信息。

进程挂起与激活

  • 挂起
    • 原因:当系统资源紧张或需要对进程进行特殊管理时,操作系统可能会将某些进程挂起,以减少内存占用或便于系统调度。
    • 操作:将进程的状态从当前状态改为挂起状态,并将其PCB从原来的队列(就绪队列或阻塞队列)中移除,放入挂起队列。进程被挂起后,它所占用的部分资源可能会被暂时回收或标记为可被其他进程使用。
  • 激活
    • 原因:当系统资源满足进程的需求或进程的挂起条件解除时,需要将挂起的进程激活,使其能够继续执行。
    • 操作:将进程的PCB从挂起队列中取出,恢复其原来的状态(就绪或阻塞),并将其重新插入到相应的队列中。如果进程原来处于就绪状态,那么激活后就可以再次参与调度;如果原来处于阻塞状态,则需要等待相关事件发生才能变为就绪状态。

进程调度

  • 定义:根据一定的调度算法,从就绪队列中选择一个进程,将处理机分配给它,使其能够占用处理机运行。
  • 调度算法:常见的进程调度算法有先来先服务(FCFS)、短作业优先(SJF)、优先级调度算法、时间片轮转调度算法等。不同的调度算法具有不同的特点和适用场景,例如FCFS算法简单公平,但可能导致长作业等待时间过长;SJF算法可以提高系统的吞吐量,但难以准确预测作业的运行时间;优先级调度算法能够优先处理重要或紧急的进程,但可能导致低优先级进程饥饿;时间片轮转调度算法能保证每个进程都有机会及时执行,适用于交互式系统。

进程控制通过这些操作,有效地管理了进程的生命周期,使得多个进程能够在操作系统的控制下有序地运行,提高了系统资源的利用率和系统的整体性能。

#牛客创作赏金赛##秋招的第一个offer,大家都拿到了吗##一觉醒来,秋招难度下降一万倍……##牛友故事会##设计人的面试记录#
操作系统I 文章被收录于专栏

操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的核心程序,是用户与硬件之间的桥梁,也是计算机系统的核心组成部分。

全部评论

相关推荐

#牛客AI配图神器#SPA代表单页面应用,而MPA代表多页面应用。它们是两种常见的前端应用架构方式,有以下区别:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=07d53be4cd034a4ab270d500feebcc8d🌐💌页面加载方式:SPA:SPA只有一个HTML页面,当应用初始化时,加载该页面,并通过JavaScript动态地加载内容和更新页面。用户在使用过程中,在同一个页面上浏览和交互,无需每次都重新加载整个页面。MPA:MPA由多个HTML页面组成,每个页面都有自己的URL。每次点击链接或刷新页面时,都会从服务器重新获取整个新的HTML页面以更新内容。🌐💌页面切换体验:SPA:由于不需要重新加载整个页面,SPA可以提供更快的页面切换体验。它使用JavaScript和Ajax技术,通过异步请求数据并更新页面部分内容,实现页面之间的平滑切换。MPA:MPA在页面切换时需要重新加载整个页面,因此会出现页面之间的闪烁或延迟,用户体验较低。🌐💌数据交互:SPA:SPA使用AJAX技术从服务器异步加载数据,并通过JavaScript动态更新页面内容,实现与后端的数据交互。通常使用RESTful API进行数据传输。MPA:MPA每次加载页面时,会从服务器获取完整的HTML页面和对应的数据,页面之间的数据传递通过URL参数或表单提交。🌐💌开发与维护:SPA:SPA通常使用前端框架(如React、Angular、Vue.js)来实现,需要掌握JavaScript框架和相关技术。其开发和维护相对较为复杂,但能提供更好的用户体验和交互效果。MPA:MPA传统而直观,按照每个页面独立开发的方式进行,易于理解和维护。相对于SPA,可采用多种技术栈,例如HTML、CSS、JavaScript等。🌐💌综上所述,SPA和MPA在页面加载方式、页面切换体验、数据交互和开发维护等方面存在明显的区别。选择哪种应用架构方式取决于具体的项目需求和技术要求。
点赞 评论 收藏
分享
03-19 01:21
已编辑
北京邮电大学 Java
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务