进程和线程
来源:互联网 发布:最近流行搞怪拍照软件 编辑:程序博客网 时间:2024/06/03 07:20
进程
进程,即正在执行的程序,是系统进行资源分配和调度的基本单位。程序和进程的关系就像菜谱和按照菜谱做菜的过程。程序只是被动实体,如存储在磁盘上的文件内容(常被称为可执行文件);进程是活动实体,它有一个程序计数器用来表示下一个要执行的命令和相关资源的集合。进程包括代码段,数据段,堆,栈。
上图是进程的五状态模型。
每个进程在通过PCB来代表,PCB一般包括进程状态(new,ready,running,waiting,halted, and
so on),程序计数器(pc,指向下一条需要执行的指令的地址),cpu调度信息,内存管理信息,Accounting information, IO status information ,它存放着操作系统用于描述进程情况及控制进程运行所需的全部信息。
进程调度分为长程调度,短程调度,中程调度。
短程调度,或者cpu调度,发生频率高,周期非常短,从准备执行的程序(ready队列)中选择一个并为其分配cpu,
进程之间竞争的是cpu资源。
中程调度,将程序从内存移到外存,能减少多道程序的程度,之后当系统资源够用时,进程从外存移到内存并从中断处执行,这个过程成为swap(交换)。
长程调度,从外存中选择进程,装入内存(ready队列)以便执行,发生频率低。
Context switch
Context switch:将CPU从一个进程切换到另一个进程需要保存当前进程的状态和恢复另一个进程的状态,这一任务称之为上下文交换。
(l)保存处理器内容。
(2)对当前运行进程的PCB进行更新。包括改变进程状态和其它相关信息。
(3)将这个进程的PCB移入适当的队列(就绪、因事件阻塞、就绪挂起等)。
(4)挑选其他进程执行。
(5)对挑选进程PCB进行更新,包括将其状态改为运行。
(6)对存储器管理数据结构进行更新。
(7)恢复被选择进程上次移出时的处理器状态。
如上图,新进程最初被放在就绪队列中,它就在就绪队列中等待,直到被选中执行。进程获得了cpu后可能发生下面的事件:1. 进程可能发送一个I/O请求,然后被放置在I/O队列中;2. 进程可以创建新的子进程并等待它终止;3. 发生一个中断,导致进程被强行从CPU移除,并返回就绪队列,例如时间片到期;前两种情况,进程最终会从waiting状态转换为ready状态,并返回到就绪队列。一个进程会不停的进行上图的循环,直到termited,然后进程退出所有队列并是否自己的PCB和资源。
线程
线程是所属进程的一部分,一个进程包括多个或一个线程。线程又分为用户线程和内核线程。
进程和线程的区别:
1.进程是os资源分配的基本单位,线程是os执行的基本单位; 2.一个进程可以包括一个或多个线程,这些线程共享此进程的资源; 3.线程的创建比进程容易些。 4.进程间的通信一般需要用IPC机制,而属于同一进程的不同线程之间的可以直接进行通信。 未完...
未完待续…
- 进程和线程
- 关于进程和线程
- 进程和线程
- 进程和线程
- 小解进程和线程
- 进程和线程
- 理解进程和线程
- 进程和线程
- 进程和线程
- 进程和线程 编程
- 进程和线程
- 进程和线程
- 线程和进程
- 进程和线程编程
- 程序、进程和线程
- 进程和线程 区别
- 进程和线程编程
- 什么是线程和进程
- spring cloud config学习入门初探
- Python 边做边学 9.6 数据库操作--查询条件解析工具(QCondition)
- 自定义xcode文件模板
- 单例模式
- Python 的美妙!
- 进程和线程
- HDU
- [挑战程序设计]二分搜索
- Tensorflow-tf.nn.dynamic_rnn函数解析
- Android 使用URLConnection提交请求
- Java基本数据类型_运算符_输入输出
- 修改xcode代码风格设置
- 线程死锁
- 二维数组右上左下遍历 (Coursera 程序设计与算法 专项课程2 C程序设计进阶 李戈;OpenJudge)