<操作系统>进程和线程

进程

定义:

  • 一个正在执行的程序;
  • 一个正在计算机上执行的程序实例;
  • 能分配给处理器并由处理器执行的实体;
  • 一个由一组执行指令,一个当前状态和一组相关的系统资源表征的活动单元。

进程的基本元素:程序代码和与代码相关联的数据集。

进程控制块:由操作系统创建和管理,每个进程控制块包含操作系统所需要的关于进程的所有信息,可以中断一个进程的执行,并恢复进程的执行;进程控制块是操作系统支持多线程处理和多重处理技术的重要工具。进程控制块是操作系统中最重要的数据结构.主要包含以下信息

标识符:进程的标识符,唯一确定这个进程。

状态:进程在执行中,则处于运行态。

优先级:相较于其他进程。

程序计数器:程序中即将执行的下一条指令的地址。

内存指针 :包括程序代码和进程相关的指针以及和其它进程共享内存的指针。

上下文数据:进程执行过程中,处理器中的寄存器的数据。

记账信息:处理器时间总和等等。

当一个进程中断的时候,操作系统会把程序计数器和上下文数据保存到进程控制块中。

进程的创建和终止

1、创建步骤:

  • 为新进程分配一个唯一的标识符。

  • 为新进程分配空间。
  • 初始化进程控制块
  • 设置正确的连接
  • 创建或者扩充其他数据结构。

创建进程的原因:

进程终止的原因

五状态模型:运行态,就绪态,阻塞态,退出态,新建态

运行态:进程正在运行。

就绪态:进程准备好,有机会就会执行

阻塞态:进程在某些事件发生前不能执行。

新建态:刚刚创建的进程,操作系统还未将其加入可执行进程组,通常是进程控制块已经创建但没加载到内存。

退出态:从可执行进程组释放的进程。

注意:进程转换到退出态后,其信息并不是立马被删除,与作业相关的表和其它信息会临时被操作系统保留,给辅助程序或者支持程序提供了提取所需信息的时间。提取信息完毕后,操作系统就不会保留与该进程相关的信息。

空-->创建:创建执行新进程。

新建-->就绪:操作系统准备好接纳一个新进程,就会把一个进程从新建态转成就绪态。

就绪-->运行:需要选择一个新进程执行的时候,操作系统就会从处于就绪状态的进程选择一个。

运行-->退出:当运行的进程已完成时,便会退出。

运行-->就绪:(1)有一个更高优先级的进程需要运行,那么当前进程转入就绪,也叫抢占 。(2)正在运行的进程已经到达运行不中断执行的最大时间(超时)。(3)进程自愿释放对处理器的控制。

运行-->阻塞:进程请求其必须等待的事情到来,则进入阻塞态。

阻塞-->就绪:所等待事情完成,进入就绪态。

就绪-->退出:例如父进程终止,那么父进程创建出的子进程也终止

阻塞-->退出:

上述状态中无法从就绪—>阻塞阻塞-->运行(必须经过就绪状态)

引入另外一种状态--挂起态。

挂起态:原因主要是由于内存的大小远远小于处理器处理的速度,导致资源浪费。因而把当前内存中处于阻塞状态的进程转出到磁盘的“挂起队列”。操作系统在此之后取出挂起队列中的另一个进程,或者接受一个新进程的请求,将其纳入内存运行.

挂起进程特点:该进程不能立即执行

进程描述

操作系统为了管理进程和资源,必须掌握关于每个进程和资源当前状态的信息。普遍使用的方法是:操作系统构造并维护它所管理的每个实体的信息表:

四种类型的信息:内存表,I/O表,文件表和进程表

内存表:跟踪内存和外(虚)存.内存表中必须包含以下:分配给进程的内存,分配给进程的外存,内存块或虚存块的任何保护属性以及管理虚存所需要的任何信息。

I/O表:管理计算机系统中的I/O设备和通道

文件表:文件是否存在,位置,当前状态以及相关属性

进程表:相关进程

使用进程映像来描述一个进程,进程镜像包括:程序、数据、栈和进程控制块(属性的集合)

进程控制

执行模式:用户模式和内核模式。使用两种模式的原因是很显然的,它可以保护操作系统和重要的操作系统表(如进程控制块)不受用户程序的干涉

切换:程序状态字(PSW)有一位表示执行模式,这一位应某些事件的要求而改变。当用户调用一个操作系统服务或中断触发系统例程的执行时,执行模式被设置为内核态;当从系统服务返回到用户进程时,执行模式被设为用户态.

下列情况下,进程可能把控制权交给操作系统。

进程切换:

  • 保存处理器上下文环境
  • 更新当前处于运行态进程的进程控制块
  • 进程控制块移到相应队列
  • 选择另一进程执行
  • 更新所选择进程的进程控制块
  • 更新内存管理的数据结构
  • 恢复处理器在被选择的进程最近一次切换出运行状态时的上下文环境

进程切换一定会有模式切换,而模式切换不一定有进程切换。

线程:

进程是操作系统调度资源的基本单位,而线程是调度的基本单位。进程中的所有线程共享该进程的状态和资源
线程的优点:

  • 时间短:在一个进程中创建一个线程比重新创建一个进程时间短
  • 终止一个线程比终止一个进程时间短
  • 统一进程内的线程切换比进程间切换时间短
  • 线程提高不同执行程序间通信效率。

线程生命周期:

线程分类:用户级线程和内核级线程。

用户级线程优点:

(1)可以在任何操作系统执行,不需要修改内核以支持用户级线程

(2)调度可以是应用程序相关的。

(3)线程切换不需要内核特权,节省状态转换开销

用户级线程缺点:

(1)当用户级线程执行一个系统调用时,不仅这个线程会被阻塞,进程中的所有线程都会被阻塞

(2)一个多线程应用程序不能利用多处理技术。内核一次只把一个进程分配给一个处理器,因此一次进程中只有一个线程可以执行

内核级线程优点:

(1)内核可以同时把同一进程中的多个线程调度到多个处理器中同时运行

(2)如果进程中一个线程被阻塞,内核可以调度其它线程

(3)内核例程自身也可以使用多线程

缺点:把控制从一个线程转移到用一进程的另一线程时,需要到内核的状态切换

原文地址:https://www.cnblogs.com/tingweichen/p/10645090.html

时间: 2024-10-28 17:58:44

<操作系统>进程和线程的相关文章

linux查看某个进程的线程id(spid)

鉴于linux下线程的广泛使用 我们怎么查看某个进程拥有的线程id了 现在很多服务的设计 主进程->子进程->线程(比如mysql,varnish) 主进程负责侦听网络上的连接 并把连接发送给子进程 子进程派生线程去处理这些线程 mysql(父进程460,子进程863) 1 460 425 333 ? -1 S 0 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/storage/mysql/backup --pid-file=/

该进程或线程自上一个步骤以来已更改

相关解决办法如下: VS进行高度时,断点处提示"该进程或线程自上一个步骤以来已更改" 每个断点跑两遍似的. 这个是由于在VS环境中 勾上了 "工具\选项--->调试--要求源文件与原始版本完全匹配"这个项 该进程或线程自上一个步骤以来已更改 英文表述:The process or thread has changed since last step 以下是是从网上摘录的解决办法. Q: I have a console application that exe

进程和线程、内核空间等概念

用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限.为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操作系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间.针对linux操作系统而言,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间,而将较

进程和线程有什么区别?

作者:榴莲艺声链接:https://www.zhihu.com/question/21535820/answer/22915780来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 一.关于进程和线程,首先从定义上理解就有所不同 1.进程是什么? 是具有一定独立功能的程序.它是系统进行资源分配和调度的一个独立单位,重点在系统调度和单独的单位,也就是说进程是可以独 立运行的一段程序. 2.线程又是什么? 线程进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的

Python自动化开发,Day10 - 进程、线程、协程

本章内容 操作系统发展史介绍 进程与线程的区别 python GIL全局解释器锁 线程 语法 join 线程锁Lock\Rlock\信号量 将线程变为守护进程 Event时间 Queue队列 生产者消费者模型 进程 语法 进程间通讯 进程池 一.操作系统发展史介绍 手工操作(无操作系统) 1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式. 手工操作 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存

进程、线程和上下文切换

进程是什么? 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed). 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动.它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元. 进程的概念主要有两点:第一,进程是一个实体.每一个进程都有它自己的地址空间,一般情况下,包括文本区域(textregion).数据区域(data region

多线程编程(进程和线程)

多线程编程(进程和线程) 1.进程:指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程可以启动多个线程. 2.线程:指程序中一个执行流程,一个进程中可以运行多个线程. 一.创建线程(两种方式) 二.线程的5种状态( New,Runnable,Running,Block,Dead ): 三.线程的优先级 四.守护线程 /精灵线程/后台线程 五.方法 六.同步代码锁(synchronized) 一.创建线程(两种方式): 方式1:采用继承Thread的方法 第一,继承 Thre

进程与线程

1.进程与程序的区别? 进程与程序的区别:程序是指的存储在存储设备上(如磁盘)包含了可执行机器指 令(二进制代码)和数据的静态实体:而进程可以认为是已经被OS从磁盘加载到内存上的.动态的.可运行的指令与数据的集合,是在运行的动态实体. 2.进程的概念 程序的运行实例(但这并不代表进程就是在运行,根据OS的调度,进程会处于不同的状态),进程是OS进行资源分配的基本单位. 3.线程的概念 线程是进程的一个执行分支,是OS进行调度的基本单位. 4.进程与线程的区别 除了上述概念上的区别外,进程强调资源

走近并发编程之一 进程和线程

并发与并行,进程与线程不仅是操作系统中及其重要的概念,也是并发编程入门 必须要理解的核心知识. 什么是并发?并发与并行的区别 顺序编程:程序中的所有事物在任意时刻都只能执行一个步骤 并发:在同一时间段内,需要处理多个任务,而在每个时间点又只能处理一个,这就是并发. 假设我们要把多个任务分配给处理机,如果这台机器有多个处理器,显然可以同时执行这些任务,这就是并行. 不同于并行,并发的目的旨在最大限度的提高程序在单处理器上的效率.前者是在物理上的同时发生,而并发是在逻辑上的同时发生.如图,如果要在同

程序,进程,线程(需补充)

1.程序,进程,线程 程序:程序时完成特定任务的一系列指令集合. 进程:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程:线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发