进程和线程的概述

一、什么是进程?
进程=一个活动的程序,把程序加载到内存里执行。
进程的特点:
   1).从内存的分配角度,每个进程都独占一块内存地址空间。
   2).从逻辑角度,每个进程都可以被CPU所处理,也可以暂时挂起,让其他进程得以被处理,针对单核架构,同一时刻,只有一个进程能被CPU所处理,但是,有时候我们一边玩游戏还可以一边听音乐,这是为啥呢?因为CPU处理速度快,以及相关的进程调度算法的存在,使得宏观上感觉是并行处理的,但本质上是串行处理的。针对多核架构,宏观和微观都是并行的。
   3).从时序角度,每个进程经过一段时间后,进度都是向前推进的。
  
二、为什么要引入进程呢?
   最初的计算机是单道编程,比如一个程序,假设20%的时间再用CPU,80%的时间在做磁盘的I/O。因此可以看出CPU的利用率只用20%。所以引入进程的目的是满足多道编程,比如有两个进程,此时CPU的利用率为1-(0.8*0.8)=0.36。比如三个进程呢?CPU的利用率为1-(0.8*0.8*0.8)=0.48
多道编程的特点的是:随着进程的增多,CPU的利用率越高,此外,也可以减少响应时间。
产生进程的情况:
   1).系统初始化时,会产生一些系统进程,比如回话进程,壳进程,登录进程,安全管理进程。
   2).父进程创建子进程
   3).用户请求产生进程
进程消亡的情况:
   1).一个进程执行完毕而自行退出消亡(寿终正寝)
   2).进程再执行过程中出错或由于异常引起的退出消亡(自杀)
   3).被其他进程锁杀死(他杀)
三、进程的状态
   进程的状态总体上分两种,执行态和挂起态.
   对于挂起态,我们要明确是什么原因而挂起的。
   1).一个进程由于执行时间过长而主动挂起,让CPU处理其他的进程。
   2).一个进程在执行过程中由于发生某些I/O阻塞操作,而挂起。
   3).一个进程主动执行了一些阻塞操作,比如:sleep而挂起。
   针对第一种情况,给他CPU就可以继续执行,而对于第二种和第三种的进程,即使给他CPU,也处理不了,我们称之为阻塞态进程。
   如果进一步划分的话:一个进程的状态可以分为执行态,就绪态,阻塞态
    执行——就绪
    执行——阻塞
    就绪——执行
    就绪——执行——阻塞
    阻塞——就绪
    阻塞——就绪——执行
四、什么是线程?
    一个进程至少有一个线程,也可以有多个线程。   
    引入线程的目的,就是能够让一个进程同时做多件事,所以,引入线程后,CPU执行的最小单位是线程。
五、进程或线程的调度算法
   1).First Come First Server(FCFS)先来先服务调度算法
    该算法,类似与最初的单道编程,效率比较低。
   2).时间片轮转调度算法
    当有三个进程时,CPU可以先处理第一进程一段时间,然后再处理第二个进程一段时间,然后处理第三个进程一段时间,这样循环往复。但是有一个局限性,假设CPU轮转每隔一秒轮一次,如果第三个进程实际业务需要一秒就可以处理完,但是却需要三秒。所以,会使得短任务的进程处理时间变长。
   3).短任务优先算法
    该算法虽然解决了第二种算法的局限性,但是假如系统中有多个短任务,那么就会导致一些很重要但是长任务的进程不能被CPU处理,所以我们又引出了下一种算法。
   4).优先级调度算法
    优先处理优先级高的进程,在系统的进程中,为一些重要并且需要先被CPU执行的进程设置高优先级。但是也有局限性,可能使得低优先级的进程不能被处理。所有又有了下面的算法
   5).混合调度算法
     该算法混合了上述的四种算法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值