进程与线程

  • 任务调度:时间片轮转

操作系统的任务调度是采用时间片轮转的抢占式调度方式,首先把任务放到任务队列里, 任务出对后执行一个时间片的时间,如果任务执行完则运行下一个任务,否则暂停任务加入到队列尾,执行下一个任务,被暂停的任务处于就绪状态。

  • 进程

进程一般由程序、数据集合和进程控制块三部分组成。程序用于描述进程要完成的功能,是控制进程执行的指令集;数据集合是程序在执行时所需要的数据和工作区;程序控制块(Program Control Block,简称PCB),包含进程的描述信息和控制信息,是进程存在的唯一标志。

动态性:进程是有生命期的,是动态产生,动态消亡的;

并发性:任何进程都可以同其他进程一起并发执行;

独立性:进程是系统进行资源分配和调度的一个独立单位;

结构性:进程由程序、数据和进程控制块三部分组成。

线程:
一个标准的线程由线程ID、当前指令指针(PC)、寄存器和堆栈组成。而进程由内存空间(代码、数据、进程空间、打开的文件)和一个或多个线程组成。

  • 线程与进程的区别
  1. 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;

  2. 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;

  3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;

  4. 调度和切换:线程上下文切换比进程上下文切换要快得多。

  • 协程

协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,基本没有内核切换的开销,所以上下文的切换非常快。

  • 进程间的通信方式及其优缺点

(1)管道(pipe)
(2)信号(signal)
(3)信号量
(3)消息队列
(4)共享内存
(6)套接字(socket)

  • 线程之间通信方式
  1. 锁机制:包括互斥锁/量(mutex)、读写锁(reader-writer lock)、自旋锁(spin lock)、条件变量(condition)
    互斥锁/量(mutex):提供了以排他方式防止数据结构被并发修改的方法。
    读写锁(reader-writer lock):允许多个线程同时读共享数据,而对写操作是互斥的。
    自旋锁(spin lock)与互斥锁类似,都是为了保护共享资源。互斥锁是当资源被占用,申请者进入睡眠状态;而自旋锁则循环检测保持者是否已经释放锁。
    条件变量(condition):可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。
  2. 信号量机制(Semaphore)
    信号量是计数器,用来控制共享资源的线程数目。
  3. 信号机制(Signal):类似进程间的信号处理
    线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制
  • 进程和线程的选择
  1. 需要频繁创建销毁的优先用线程
    如web服务器,来一个连接就建立一个线程,创建或销毁的代价小。
  2. 需要进行大量计算的优先使用线程
    大量计算时需要耗费cpu资源,频繁切换,适合多线程。如图像处理。
  3. 可靠性要求高时优先使用进程
    一个线程挂掉会导致所在进程挂掉,而使用多进程,进程之间的资源相对独立不会受到影响。
  4. 可能要扩展到多机分布的用进程,多核分布的用线程
  • 死锁
  1. 死锁产生的4个必要条件:
    (1)互斥:资源只允许一个进程访问,即资源一旦分配给某进程,其他进程不能访问,必须等到该进程结束。
    (2)占有且等待:进程本身占有资源,同时还有一些资源没有满足,正在等待其他进程释放资源。
    (3)不可抢占:其他进程占用某项资源,进程不能因为也需要该资源就抢占过来。
    (4)循环等待:多个进程之间形成了环形的等待资源的关系。

  2. 预防死锁以及解除死锁

预防死锁(破坏四个条件):
(0)打破互斥条件:允许进程同时访问资源(比如只读),但是由资源性质决定,无实用价值。
(1)打破占有等待条件:资源一次性分配,进程运行前申请全部资源,满足就运行,否则等待。
(2)打破不可抢占条件:当进程的新资源无法满足时,释放已占有的资源。
(3)打破循环等待条件:实现资源有序分配策略,对资源编号,进程只有占用了小号资源才能申请大号资源,这样不会形成回路。
(4)银行家算法:系统在进行资源分配之前预先计算资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程;否则,进程等待。

解除死锁:
(1)选择一个牺牲品,剥夺足够的资源给死锁进程。
(2)回滚进程。

  • 避免死锁的最少资源数和最大进程数:

假设其他进程就差一个资源,另一个进程满足所有资源。

某系统中有3个并发进程,都需要同类资源4 个,试问该系统不会发生死锁的最少资源数是:10
假设2个进程占有3个资源,另一个占有4资源,所以最少资源:10

若系统中有五台绘图仪,有多个进程均需要使用两台,规定每个进程一次仅允许申请一台,则至多允许( )个进程参于竞争,而不会发生死锁。4
其他进程占用1资源,另一进程占用2资源,共占用5.所以最大进程数:4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值