概述
目录
- 一. 进程和线程
- 什么是进程
- 什么是线程
- 二. 进程调度
- 三. 进程和线程的区别和联系
一. 进程和线程
进程是操作系统分配资源的单位,线程是调度的基本单位,线程之间共享进程资源
什么是进程
我们在电脑中使用的应用程序都有exe文件, 这个文件被称为可执行文件, 在没有被执行前它只是一个文件, 然而当我们执行这个exe文件之后 ,操作系统会把这个exe加载到内存中, 并且执行exe内部的一些指令. 程序的运行就是进程的创建, 运行到销毁的过程
以下就是windows操作系统在运行的进程
什么是线程
线程是比进程更小的执行单位, 一个进程可以产生多个线程,与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈.
二. 进程调度
进程调度是指操作系统按某种策略或规则选择进程占用CPU进行运行的过程。
进程调度的优劣直接影响调度的性能, 进程调度的定量评价包括CPU的利用率评价, 进程就绪队列和等待时间之比等.
进入系统的进程会被加到作业队列上, 这个队列包括系统内的所有进程.
驻留在内存中的、就绪的、等待运行的进程保存在就绪队列上。
就绪队列通常用来链表来表示: 其头节点有两个指针,用于指向链表的第一个和最后一个 PCB 块;每个 PCB 还包括一个指针,指向就绪队列的下一个 PCB
创建进程 就是先创建出PCB 然后把PCB加到链表中
销毁进程 就是找到链表中的PCB, 并且从链表上删除
状态
所有进程都要经历3个状态
- 就绪态: 进程等待分配CPU
- 阻塞态: 等待其他资源释放 或者资源未满足
- 运行态: 已经获得资源 占用处理机并且正在执行该进程
抢占式: 容许进程的在运行过程暂停的调度方式 可防止单一进程长时间独占CPU 系统开销大
非抢占式: 让进程一直运行直到结束或阻塞
抢占式优先级算法的系统
系统把处理机分配给优先级最高的进程, 在进程运行期间, 只要出现优先级更高的进程, 进程调度程序就会终止当前进程的执行, 将处理机分配给优先级更高的进程.
上下文切换
PCB(process control block) 进程控制块
PCB通常记载进程相关信息,包括:
程序计数器:接着要运行的指令地址。
进程状态:可以是new、ready、running、waiting或 blocked等。
CPU暂存器:如累加器、索引暂存器(Index register)、堆栈指针以及一般用途暂存器、状况代码等,主要用途在于中断时暂时存储数据,以便稍后继续利用;其数量及类因电脑架构有所差异。
CPU排班法:优先级、排班队列等指针以及其他参数。
存储器管理:如标签页表等。
会计信息:如CPU与实际时间之使用数量、时限、账号、工作或进程号码。
输入输出状态:配置进程使用I/O设备,如磁带机。
一个进程的上下文(context)包括进程的状态、有关变量和数据结构的值、机器寄存器的值和PCB以及有关程序、数据等。
当只在执行的进程发生中断时, 系统要做进程上下文切换, 使得另一个进程得以执行.但另一个进程执行完毕后, 需要恢复中断的进程
三. 进程和线程的区别和联系
进程之间是相互独立的, 进程的创建和销毁开销很大, 线程的开销很低,所以线程比进程更轻量
我们都知道进程里包含很多线程, 但他们之间又存在什么联系呢
线程之间是共享进程资源的, 然而哪些资源是共享, 又有哪些资源是线程私有的呢
线程私有资源
线程的运行本质上就是函数的执行, 函数执行时的局部变量 相关寄存器等信息都保存在栈帧中, 一个栈区的函数不可能访问另一个栈区函数的局部变量, 所以栈区中保存的信息是私有的.
所属线程的栈区、程序计数器、栈指针以及函数运行使用的寄存器是线程私有的.这些信息叫做线程上下文,thread context。
当线程中断后如果想再次运行, 就是通过线程上下文信息来恢复
线程共享资源
全局变量 放在函数外的变量, 可以被所有线程所访问.
堆区中创建的对象, 任何一个线程都可以访问堆区中的数据.
进程之间通信 可以使用管道 套接字socket 消息队列等方式
线程之间通信也就是函数与函数之间的通信
最后
以上就是忧心水杯为你收集整理的多线程--进程调度以及进程和线程的关系一. 进程和线程二. 进程调度三. 进程和线程的区别和联系的全部内容,希望文章能够帮你解决多线程--进程调度以及进程和线程的关系一. 进程和线程二. 进程调度三. 进程和线程的区别和联系所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复