进程

定义:

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

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

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

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

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

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

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

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

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

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

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

进程的创建和终止

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. java Future用法和意义一句话击破

    在并发编程时,一般使用runnable,然后扔给线程池完事,这种情况下不需要线程的结果. 所以run的返回值是void类型. 如果是一个多线程协作程序,比如菲波拉切数列,1,1,2,3,5,8...使 ...

  2. Markdown字体大小与颜色

    Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式.但是它本身是不支持修改字体.字号与颜色等功能的!   CSDN-markdo ...

  3. 【Java并发编程】19、DelayQueue源码分析

    DelayQueue,带有延迟元素的线程安全队列,当非阻塞从队列中获取元素时,返回最早达到延迟时间的元素,或空(没有元素达到延迟时间).DelayQueue的泛型参数需要实现Delayed接口,Del ...

  4. Ubuntu(14.04LTS)学习札记

    这篇博文是我在基于Ubuntu学习一些知识的札记,方便日后进行不断回顾,这里进行统一记录,当然当学到新的东西也会陆续更新!!!还请各位博主不要见笑,小弟在此谢过~\(≧▽≦)/~啦啦啦!!!! 1.U ...

  5. Python 线程同步变量,同步条件,列队

    条件变量同步 有一类线程需要满足条件之后才能够继续执行,Python提供了threading.Condition 对象用于条件变量线程的支持,它除了能提供RLock()或Lock()的方法外,还提供了 ...

  6. Linux下查看tomcat控制台输出信息

    1.进入tomcat/logs文件夹下 2.# tail -f catalina.out -f:实时刷新

  7. 【转】巧用DOS tree命令+批处理 实现 指定文件 批量复制!

    转自:http://www.cnblogs.com/looky/archive/2010/01/24/1655292.html 今天一朋友叫我帮忙解决指定文件批量复制的问题,于是找了一大堆批处理命令, ...

  8. 安全测试 一次关于WEB的URL安全测试

    一次关于WEB的URL安全测试 by:授客 QQ:1033553122     测试思路: 时间精力问题,对web安全这块也没咋深入研究,但因为某个小插曲,公司要求先做个简单的安全测试,主要是针对UR ...

  9. charles系列破解激活办法(最高charles4.2都可以激活)

    // Charles Proxy License // 适用于Charles任意版本的注册码,谁还会想要使用破解版呢. // Charles 4.2目前是最新版,可用.   Registered Na ...

  10. python第五十九天-----补上笔记

    rabbitmq_server_topic    topic模式 #!/usr/bin/env python #{data} {time} #_*_coding:utf-8_*_ import pik ...