进程

定义:

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

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

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

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

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

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

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

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

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

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

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

进程的创建和终止

1、创建步骤:

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

创建进程的原因:

进程终止的原因

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

运行态:进程正在运行。

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

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

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

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

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

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

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

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

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

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

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

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

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

阻塞-->退出:

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

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

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

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

进程描述

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

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

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

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

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

进程表:相关进程

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

进程控制

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

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

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

进程切换:

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

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

线程:

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

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

线程生命周期:

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

用户级线程优点:

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

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

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

用户级线程缺点:

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

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

内核级线程优点:

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

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

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

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

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

  1. Python3学习之路~9.2 操作系统发展史介绍、进程与线程区别、线程语法、join、守护线程

    一 操作系统发展史介绍 参考链接:http://www.cnblogs.com/alex3714/articles/5230609.html 二 进程与线程 进程: 对各种资源管理的集合 就可以称为进 ...

  2. Python开发——13.操作系统、进程和线程

    一.操作系统 1.定义 操作系统是用来协调.管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间.操作系统运行在内核态,拥有对所有硬件的完全访问权,可以执行机器能够运行的任何指令.软件的 ...

  3. LINUX操作系统知识:进程与线程详解

    当一个程序开始执行后,在开始执行到执行完毕退出这段时间内,它在内存中的部分就叫称作一个进程. Linux 是一个多任务的操作系统,也就是说,在同一时间内,可以有多个进程同时执行.我们大家常用的单CPU ...

  4. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  5. 33.python之操作系统,进程,线程

    转载:https://www.cnblogs.com/yuanchenqi/articles/6248025.html 操作系统 一 为什么要有操作系统? 现代计算机系统是由一个或者多个处理器,主存, ...

  6. 进程和线程操作系统转载的Mark一下

    https://www.cnblogs.com/leisure_chn/p/10393707.html Linux的进程线程及调度 本文为宋宝华<Linux的进程.线程以及调度>学习笔记. ...

  7. 5、CPU 的线程与操作系统的线程有何关系?操作系统中的进程和线程是什么关系?

    CPU中的线程和操作系统(OS)中的线程即不同,在调度的时候又有些关联.CPU中的线程,我们叫它们Thread,和OS中的线程的名字一样.它来自同步多线程(SMT,Simultaneous Multi ...

  8. [OS] 操作系统-进程线程-经典面试笔试题

    题目转自:http://blog.csdn.net/morewindows/article/details/7392749 ·线程的基本概念.线程的基本状态及状态之间的关系? 线程,有时称为轻量级进程 ...

  9. 操作系统:Linux进程与线程

    这里是一部分内容,还会做修改. 一:目的及内容 学习fork(),exec,pthread库函数的使用,阅读源码,分析fork,exec,pthread_create函数的机理 代码实现: 进程A创建 ...

随机推荐

  1. [android] 手机卫士应用程序更新和签名

    弹出升级对话框 获取AlertDialog.Builder对象,通过new出来 调用Builder对象的setTitle()方法,参数:文本 调用Builder对象的setMessage()方法,参数 ...

  2. Installing Fonts programatically C#

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. 使用fiddle处理跨域

    认真的用fiddle处理跨域 相信很多前端的同学都或多或少被跨域这个问题烦恼过,网上很多处理的方式其实都是要后端处理, 用fiddle来处理 ,就不必看后端的脸色了,自己安安心心的倒腾接口,何乐而不为 ...

  4. Windows下判断jdk是否安装好以及环境变量是否配置好

    cmd下执行: 1.java 2.javac 3.where java 如果三个都没问题,说明安装成功&环境变量配置成功

  5. ArcGIS地图文档优化 mxdPerfstat工具使用体验

    经常有客户会咨询到如何提高地图的显示性能.为何ArcMap刷新地图那么缓慢.为何地图服务响应要等待10多秒? 诸如这些问题,虽然它们的表象都是相似的,但是往往在分析排查问题的时候,我们发现背后的原因是 ...

  6. Android View体系(六)从源码解析Activity的构成

    前言 本来这篇是要讲View的工作流程的,View的工作流程主要指的measure.layout.draw这三大流程,在讲到这三大流程之前我们有必要要先了解下Activity的构成,所以就有了这篇文章 ...

  7. 怎么查找Jenkins的个人api token

    程序中可变部分解释:其中server.build_job方法传入的参数channel为分渠道构建参数,也即jenkins job的参数,这个参数随不同的日常job不同是不同的,实际编写脚本的过程中这个 ...

  8. 外网访问局域网ip的方法

    https://jingyan.baidu.com/article/48b558e335e3ac7f39c09a59.html 步骤: 1.浏览器内输入:192.168.1.1进入路由器管理界面 2. ...

  9. [Compression] Hadoop 压缩

    0. 说明 Hadoop 压缩介绍 && 压缩格式总结 && 压缩编解码器测试 1. 介绍 [文件压缩的好处] 文件压缩的好处如下: 减少存储文件所需要的磁盘空间 加速 ...

  10. selenium+Python3.5获取验证码

    其中PIL为Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,但API却非常简单易用. PIL第三方库安装 pip install PI ...