zoukankan      html  css  js  c++  java
  • 处理器管理与进程管理

    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])
    

      

  • 相关阅读:
    委托的说明和举例
    用C#编写获取远程IP,MAC的方法
    200个Gmail邀请,要的请留下邮箱地址
    .NET中各种数据库连接大全
    .net中何有效的使用Cache
    55种网页常用小技巧(javascript) (转)
    一个WEB项目安装包,自动配置数据库,config文件和虚拟目录。。(转)
    windows xp sp2后所有更新
    C#反射实例(转)
    可扩展的应用程序:新增功能时无须重新编译
  • 原文地址:https://www.cnblogs.com/lxz6666/p/10581306.html
Copyright © 2011-2022 走看看