操作系统:进程和线程

进程和线程的基本概念:

进程是对运行时程序的封装,是系统资源调度和分配的基本单位,实现了操作系统的并发。

为了进一步的提高操作系统的并发性,引入了线程。

线程是进程的子任务,是CPU调度和分配的基本单位,用于保证程序的实时性,实现进程内部的并发。

线程是操作系统可识别的最小执行和调度单位。

每个线程占用一个虚拟处理器,有独自的寄存器组,指令计数器和处理器状态。

每个线程完成不同的任务,但共享同一地址空间、打开的文件队列、其他内核资源。

进程和线程的区别:

1.线程是进程划分出的更小运行单位,一个进程在执行过程中可以产生很多个线程,一个线程只能属于一个进程,线程依赖于进程存在。

2.进程在执行过程中拥有独立的内存单元,而多个线程共享进程的内存。

资源分配给进程, 同一进程的所有线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。

但每个线程拥有自己的栈段(又称运行时段,用来存放所有局部变量和临时变量)。

3.进程是资源调度和分配的最下单位,线程是CPU调度和分配的最小单位。

4.线程执行开销小,但不利于资源的管理和保护,进程相反。

5.同一多个线程具有相同的地址空间,因此他们的同步和通信实现较容易。线程之间可以直接读写进程数据段(如全局变量)来进行通信,但需要同步和互斥手段的辅助,以保持数据的一致性。

6.进程编程调试简单可靠性高,但创建摧毁开销大,线程相反。

7.进程之间不会相互影响,但一个线程挂掉会导致整个进程挂掉。

进程的几种状态:

1.创建态:进程正在被创建,尚未就绪。

2.就绪态:进程处于准备运行状态,已经获得了除处理器之外的所有资源,当获得处理器资源时(处理器分配的时间片)即可运行。

3.运行态:进程正在处理器上运行(单核CPU同时只能有进程处理运行态。

4.阻塞态:进程正在等待某一时间而暂停运行,例如等待资源可用,或等待IO操作完成。此时就算处理器空闲也不能运行。

5.结束态:进程正在从系统中消失,既可能是正常结束,也可能是因为其他原因中断运行。

进程间的通信方式:

1.普通管道/匿名管道:
半双工。

由于没有名字,只能用于具有亲缘关系的进程之间的通信(父子或兄弟)。

2.命名管道:
严格遵循先进先出FIFO。

以磁盘文件的方式存在,可以实现本机任意两个进程通信。

3.信号:
信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

4.消息队列:
消息队列是消息的链表,具有特定格式,存放在内存中并由消息队列标识符标识。管道和消息队列的通信数据都遵守FIFO原则。

匿名管道只存在于内存中的文件,命名管道存在于实际的磁盘介质或文件系统,而消息队列存放在内核中,只有在内核重启(即OS重启)或显示地删除一个消息队列时,该消息队列才会被真正删除。

消息队列可以实现消息的随机查询,消息不一定要按照FIFO的顺序读取,也可以按消息类型读取,比FIFO更有优势。

消息队列克服了信号承载信息少,管道只能承载无格式字节流以及缓冲区大小的限制。

5.信号量:
信号量式一个计数器,用于多线程对于共享数据的访问,信号量通常用于解决进程同步相关问题并避免竞争。

6.共享内存:
使多个进程可以访问同一块内存空间,不同进程可以及时看到进程对共享数据的更新。
这种方式需要依赖某种同步操作(如互斥锁和信号量)。
这是最有用的进程间的通信方式。

7.套接字:
套接字主要用户客户端和服务器之间通过网络进行通信。
套接字式支持TCP/IP的网络通信的基本操作单元,可以看作是不同主机之间的进程进行双向通信的端点,简单的说就是通信的双方的一种约定,用套接字的相关函数来完成通信过程。

线程间的通信(同步)方式:

线程间通信主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制。

1.互斥量:
采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。

2.信号量:
信号量允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量。

3.信号(事件):
通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操作。

进程调度算法:

1.先来先服务调度算法:
从就绪队列中选出最先进入队列的。

2.短作业优先调度算法:
从就绪队列中选出估计允许时间最短的。

3.时间片轮转调度算法:
为每个进程分配时间片。

4.多级反馈队列调度算法

5.优先级调度算法:
为每个进程分配优先级,先执行高优先级进程。
相同优先级的进程以先来先服务执行。
优先级可以根据内存要求、时间要求,或其他资源要求来确定。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值