进程与线程

进程模型

  计算机上所有可运行的软件,通常也包括操作系统,被组织成若干顺序进程,简称 进程。一个进程就是一个正在执行程序的实例。包括程序计数器、计数器和当前变量的值。

    CPU在进程之间快速来回切换被称作是多道程序设计。

  进程的创建

    四种事件会导致进程的创建

      1.系统初始化

      2.正在运行的程序执行了创建进程的系统调用。

      3.用户创建一个新进程。

      4.一个批处理作业的初始化。

  守护进程:停留在后台处理诸如电子邮件、WEB页面、新闻、打印之类活动的进程成为守护进程。

   

  在UNIX和Windows中,进程创建之后,父进程和子进程有各自不同的地址空间

  进程的终止

    1.正常退出(自愿的)

    2.出错退出(自愿的)

    3.严重错误(非自愿)

    4.被其它进程杀死(非自愿)

  

  进程的结构层次

    UNIX:树

    Windows: 没有进程层次概念,所有的进程层次相同,唯一类似的是,创建子进程的时候,父进程得到一个特别的令牌(句柄),可以用来控制子进程,但它有权把句柄传给其它进程,这样就不存在进程层次,UNIX中则不能剥

         夺子进程的继承权。

  进程的状态

     

      进程的实现:

        操作系统维护这一张表格(一个结构数组),即进程表。一个进程占用一个进程表项(进程控制块),该表项中包含了进程状态的重要信息,程序计数器,堆栈指针,内存分配状态,所打开文件的状态,账号和调度信息等等。

      中断向量:与每一I/O类关联的,包含中断服务程序的入口地址。

线程

  为什么需要多线程

    线程其实就是迷你进程,需要多线程的理由是一些进程中进行着许多活动,分解成线程的话会简单很多,

    还有个原因是,线程比进程更轻量级,创建和撤销都比进程容易,创建一个线程较创建一个进程要快10到100倍,在有大量进程需要动态和快速修改时,这一特性很有用。

    3.性能。存在大量计算和大量IO处理会加快。

    4.多CPU系统中,真正的并行有了实现的可能。

  由于线程拥有进程的某些性质,有时也被称为轻量级进程。

  

  IEEE标准3.1c中定义了线程的标准,定义了线程包 pthread

在用户空间实现线程

  在用户空间管理线程,每个进程需要有其专用的线程表,用来跟踪该进程中的线程。

在内核空间实现线程

  此时不需要运行时系统,每个进程中也没有线程表。

 弹出式线程

  一个消息的到来导致系统创建一个处理该消息的线程,这种线程称为弹出式线程。

进程间通信

   临界区

    把共享内存进行访问的程序片段称作临界区域或临界区。

      忙等待的互斥实现:1.屏蔽中断 2.锁变量 3.严格轮换法4.Pesterson解法  5.TSL指令

  睡眠与唤醒

    生产者-消费者问题(有界缓冲区问题)

信号量

  使用一个整型变量来累计唤醒次数,供以后使用,通过两种操作,down和up,信号量减为0则睡眠。

 

 互斥量

   不需要信号量的计数能力,就可以用它的简化版本,称为互斥量,仅适用于管理共享资源或一小段代码,在实现洪湖空间线程包的时候非常有用。

    它处于两态之一:解锁和加锁。只需一个二进制位来表示。

  快速用户区互斥量futex:包含两个部分,内核服务和一个用户库。

  pthread中的互斥量:使用一个可以被锁定和解锁的互斥量来保护每个临界区。

管程

  一种高级同步原语。

    特性:任一时刻管程中只能有一个活跃进程。

    条件变量:wait signal

消息传递

  使用两条原语:send 和 receive ,像信号量,是系统调用而不是语言。库例程:

      send(destination,&message);

      receive(source,&message);

       (感觉像TCP中的ACK)

屏障

  当一个京城到达屏障时,被屏障所拦截,知道所有进程都到达该屏障为止,屏障可用于一组进程同步。

调度

  何时调度?

    1.创建新进程时,父子进程选择运行谁

    2.进程退出

    3.进程阻塞

    4.I/O中断

  调度算法分类:

    1.批处理

    2.交互式

    3.实时。

  批处理系统中的调度:

    1、先来先服务  2、最短作业优先  3、最短时间优先

  交互式系统中的调度;

    1、轮转调度(时间片、进程切换、上下文切换等)2、优先级调度3、多级队列 4、最短进程优先(最短响应时间)5、保证调度(向用户做出性能保证,然后实现这个保证)

    6、彩票调度(在保证调度的基础上,随机抽出一个来运行,就买彩票一样)7、公平分享调度

  实时系统中的调度  

    实时系统:硬实时:绝对的截止时间

         软实时:可容忍的截止时间

  策略和机制:将调度机制与调度策略分离。

  经典IPC问题:哲学家就餐同步问题。

 

posted @ 2019-04-02 21:28  Stephen_A  阅读(145)  评论(0编辑  收藏  举报