• 处理器管理与进程管理


    1.用图文描述组成进程的要素,并说明其作用。

    一、进程概念
    引子 程序运行在并发环境中的问题
        (1)运行过程不确定
        (2)结果不可再现
    1.进程定义
        进程是程序在某个数据集合上的一次运行活动。数据集合是指软硬件环境,多个进程共存或共享的环境。
    2.进程的特征
        (1)动态性
            进程是程序的一次执行过程,动态产生且动态消亡;
        (2)并发性
            进程同其他进程一起向前推进;
        (3)异步性
            进程按照各自的速度向前推进(每一个进程按照自定逻辑,不考虑其他进程的运行,各自占用CPU);
        (4)独立性
            进程是系统分配资源和调度CPU的单位(但是有了线程后,操作系统调度CPU的单位就变成了线程)。
    3.进程与程序的区别
        (1)进程是动态的:程序的一次执行过程;
        (2)程序是静态的:一组指令的有序集合;
        (3)进程是暂存的:在内存中短期驻留;
        (4)程序是长存的:可以在存储介质上长期保存;
        (5)一个程序可能有多个进程。
    4.进程的分类
        (1)按照使用资源的权限进行分类
            ①系统进程:系统内核相关的进程;
            ②用户进程:运行于用户态的进程。
        (2)按照对CPU的依赖性进行分类
            ①CPU型进程:主要用于计算;
            ②I/O型进程:主要用于I/O操作。
    二、进程状态
    1.进程的状态
        (1)运行状态(Running)
            进程已经占用CPU,在CPU上运行。
        (2)就绪状态(Ready)
            具备运行条件但是由于没有CPU可用,所以暂时不能运行。
        (3)阻塞状态(Block)也叫等待状态(Wait)
            由于等待某项服务完成或者等待某个信号而不能运行的状态,比如等待系统调用,I/O操作等等。
    2.进程的三态模型
        (1)就绪->运行:进程调度。
        (2)运行->就绪:时间片到或者被强占。
        (3)运行->阻塞:请求服务后等待响应,或者等待某个信号的到来。
        (4)阻塞->就绪:请求的服务已经完成,或者等待的信号已经到来。

    3.进程的五态模型

        (1)新建状态
            用户向系统提交程序后,在进程建立之前的过程。
        (2)终止状态
            进程撤出系统的过程.

    2.用图文描述什么是进程切换,为什么进行进程切换,进程切换的步骤?

    进程的切换

    为了控制进程的执行,内核必须有能力挂起正在CPU执行的进程,恢复以前挂起的进程执行。
    所有进程共享CPU寄存器,进程恢复时必须装入寄存器的一组数据(硬件上下文TSS)。在进程切换时,首先要保存挂起进程的硬件

    上下文,同时要装载唤醒进程的硬件上下文。这块linux实现的是使用软件执行进程切换。这样可以通过move指令检查装入寄存器值的合法性。 

    进程的上下文

            Context,指进程运行环境,CPU环境(比如各个寄存器的取值)等等。进程的上下文由三部分组成:用户级上下文(程序、数据、共享

            存储区、用户栈,它们占用进程的虚拟地址空间)、寄存器上下文(由各个寄存器组成)、系统级上下文(PCB、核心栈等)。
        

    进程切换的工作过程
    1、(中断/异常等触发)正向模式切换并压入PSW/PC 。 (Program Status Word 程序状态字。program counter 程序计数器。指向下一条要执行的指令)

    2、保存被中断进程的现场信息。

    3、处理具体中断、异常。

    4、把被中断进程的系统堆栈指针SP值保存到PCB。(Stack Pointer 栈指针。Process Control Block 进程控制块。)

    5、调整被中断进程的PCB信息,如进程状态)。

    6、把被中断进程的PCB加入相关队列。

    7、选择下一个占用CPU运行的进程。

    8、修改被选中进程的PCB信息,如进程状态。

    9、设置被选中进程的地址空间,恢复存储管理信息。

    10、恢复被选中进程的SP值到处理器寄存器SP。

    11、恢复被选中进程的现场信息进入处理器。

    12、(中断返回指令触发)逆向模式转换并弹出PSW/PC。

    3.用图文描述模式转换、进程切换、进程状态转换三者之间的关系?

    ◆运行状态(TASK_RUNNING)

    指正在被CPU运行或者就绪的状态。这样的进程被成为runnning进程。运行态的进程可以分为3种情况:内核运行态、用户运行态、就绪态。

    ◆可中断睡眠状态(TASK_INTERRUPTIBLE)

    处于等待状态中的进程,一旦被该进程等待的资源被释放,那么该进程就会进入运行状态。

    ◆不可中断睡眠状态(TASK_UNINTERRUPTIBLE)

    该状态的进程只能用wake_up()函数唤醒。

    ◆暂停状态(TASK_STOPPED)

    当进程收到信号SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU时就会进入暂停状态。可向其发送SIGCONT信号让进程转换到可运行状态。

    ◆僵死状态(TASK_ZOMBIE)

    当进程已经终止运行,但是父进程还没有询问其状态的情况。

    4.python练习:

    (1)观察父进程、子进程

    import time
    for i in range(5):
        print(i)
        time.sleep(3)
    

      

    (2)观察进程运行状态

    import psutil
    import os
    os.getpid()
    psutil.Process(5160)
    

      

    (3)输入多个作业的作业编号,到达时间,所需CPU时间,形成列表,以备算法使用

    jobs=[]
    for i in range(3):
        job=input('请输入作业编号,到达时间,所需CPU时间:')
        jobs.append(job)
    for i in range(len(jobs)):
        print(jobs[i])
    

      

  • 相关阅读:
    【NOIP 2003】 加分二叉树
    【POJ 1655】 Balancing Act
    【HDU 3613】Best Reward
    【POJ 3461】 Oulipo
    【POJ 2752】 Seek the Name, Seek the Fame
    【POJ 1961】 Period
    【POJ 2406】 Power Strings
    BZOJ3028 食物(生成函数)
    BZOJ5372 PKUSC2018神仙的游戏(NTT)
    BZOJ4836 二元运算(分治FFT)
  • 原文地址:https://www.cnblogs.com/lxz6666/p/10581306.html
Copyright © 2020-2023  润新知