处理器管理与进程管理

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

  

 

转载于:https://www.cnblogs.com/lxz6666/p/10581306.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值