首页 > 系统相关 >【操作系统】2.进程和线程

【操作系统】2.进程和线程

时间:2023-08-23 21:44:41浏览次数:118  
标签:操作系统 PCB pCur 线程 进程 就绪 读取

1.操作系统的多进程图像

操作系统main函数中最后 if(!fork()) {init();} ,也就是main函数最后创建了第1个进程,init执行了shell(Windows)桌面。

操作系统管理和组织进程都使用PCB(Process Control Block),不同的程序的PCB放在不同的位置,用于记录该进程运行时的状态。操作系统对进程进行分类,例如等待执行的进程和等待某些事件完成的进程,例如等待磁盘读写。

 
  1. 新建态:系统完成创建进程的一系列工作。只能转换到就绪态
  2. 就绪态:拥有除CPU之外的其他所需的所有资源。当拥有CPU时就可以转换到运行态
  3. 运行态:用于CPU和所需的所有资源
    1. 当时间片到或者处理机被抢占了,就转换到就绪态;
    2. 当进程用“系统调用”的方式申请某种系统资源或者请求等待某个事件的发生,则进入阻塞态(主动)
  1. 阻塞态:没有所需要的资源。当所需要的资源得到分配时,进入就绪态(被动)
  2. 终止态:进程运行结束或者出现不可修复的错误时,由运行态转到终止态

进程切换的三个部分:队列操作+调度+切换

pCur.state = 'W';    // 启动磁盘读写,将当前进程设置为阻塞状态
schedule();         // 将pCur放到DiskWaitQueue

schedule()
{
    pNew = getNext(ReadyQueue);  // 从就绪队列找到下一个进程,调度函数算法非常复杂
    switch_to(pCur,pNew);  // 保存当前进程的现场,把下一个进程的现场恢复
}

把当前进程的现场保存到pCur中(PCB),把切换程序的pNew(PCB)读取到寄存器中

多个进程同时存在于内存的问题:不同进程的地址可能影响其他进程的代码,这可能导致其他进程的崩溃。操作系统需要维护一张映射表,将内存映射到实际的内存地址中,把不同的进程隔离开来保证进程的安全,下图中同样对内存100的操作分别映射到了内存地址780和内存地址1260。

但实际上多进程之间可能存在合作关系,比如打印机进程需要读取word进程的内容来完成打印的工作,这时可以提交到共享缓冲区。但这里可能存在一个问题,因为进程1和进程2是交替进行的,可能进程1首先读取到空间7是空的,接下来切换到进程2也读取到空间7是空的,开始向空间7写入,接下来切换到进程1继续在这里写入,会导致写入缓冲区的内容是错误的。所以操作系统需要管理一个合理的进程推进顺序。

标签:操作系统,PCB,pCur,线程,进程,就绪,读取
From: https://www.cnblogs.com/stuxuan/p/17652782.html

相关文章

  • OS(二十四):网络操作系统
    计算机网络是指通过数据通信系统把地理上分散的自主计算机系统连接起来,以达到数据通信和资源共享目的的一种计算机系统。自主计算机,是指具有独立处理能力的计算机。在计算机网络上配置网络操作系统NOS(NetworkOperatingSystem),是为了管理网络中的共享资源,实现用户......
  • MySQL 查看SQL进程和杀掉进程
    要在MySQL中查看正在执行的长时间运行的SQL语句,您可以使用SHOWPROCESSLIST命令。这个命令显示了当前MySQL服务器上正在执行的所有进程的信息,包括每个进程的ID、用户、主机、数据库、命令和执行时间等信息。SHOWFULLPROCESSLIST;使用FULL关键字可以显示完整的SQL......
  • 《408操作系统 》复习笔记 ③ 第二章 调度与调度算法
    调度当有一堆任务要处理,由于资源有限,没办法同时处理。需要某种规则来决定处理这些任务的顺序作业作业:一个具体的任务用户向系统提交一个作业=用户让操作系统启动一个程序(来处理一个具体的任务)调度的三个层次高级调度(作业调度)按照某种策略从外存的作业后备队列中挑选......
  • ubuntu-20.04.6-live-server-amd64乌班图服务器版操作系统安装记录
    安装盘,加载数据选择安装语言,默认English,直接回车更新安装、不更新安装和返回,按默认选择不更新安装,直接回车。选择键盘语言,默认English,直接回车。设置网络,默认dhcp获取了一个IP,服务器一般固定IP,方向键操作修改配置选中网卡后回车,菜单选择IPV4回车模式选择静态IP/手动,回车设置录入静......
  • 什么是多线程,多线程的优劣?
    多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务。多线程的好处:可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。也就是说允许单个程序创建多个......
  • java中创建线程的三种方法以及区别
    java中创建线程的三种方法以及区别 Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。Java可以用三种方式来创建线程,如下所示:1)继承Thread类创建线程2)实现Runnable接口创建线程3)使用Callable和Future创建线程下面让我们分别来看看这三种创建线程的......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • 操作系统概述
    2.1.1操作系统的概念操作系统 是一组控制盒管理计算机系统的硬件和软件资源、控制程序执行、改善人机界面、合理地组织计算机工作流程并未用户使用计算机提供良好运行环境的一种系统软件。 目的:提高计算机系统的效率,增强系统的处理能力,提高系统资源的利用率,方便用户使用计算机。2......
  • 【操作系统】1.操作系统启动
     1.打开电源(1)x86PC开机时CPU处于实模式,实模式的寻址方式是CS:IP(CS左移4位+IP)(2)开机时段寄存器CS=0xFFFF,偏移量IP=0x0000,段寄存器左移4位加上偏移量是实际地址,也就是寻址地址为0xFFFF0(ROMBIOS映射区)(3)检查RAM,键盘,显示器,磁盘(4)将0磁道0扇区512个字节读入0x7c00处(操作系统......
  • 线程池
    参考文档https://www.toutiao.com/i6820216970252648971/?timestamp=1611647531&app=news_article_lite&use_new_style=1&req_id=2021012615521001013003701233060951&share_token=d49da611-6e37-46ae-90ea-9a51d6e3ad7b&group_id=6820216970252648971ht......