专栏首页陌无崖知识分享计算机操作系统——进程和线程

计算机操作系统——进程和线程

作者 | 陌无崖

转载请联系授权

进程的定义

进程时具有一定功能的程序关于某个数据集合上的一次运行活动

为什么需要进程 在传统的计算机运行程序时,往往一次只能运行一个程序,这样对于CPU是极度不公平的,有可能一个程序需要进行计算仅仅需要简单的运算,而大部分都会进行输入输出,因此此时,我们的CPU处于闲置状态,CPU无法最大效率的运行。人们为了提高CPU的效率,人们想把多个程序同时加载到计算机中,也就是我们经常会说的并发执行。为了实现这一点,人们引入进程的概念,

程序和进程的关系 一个程序加载到内存后,就变成了进程,进程是系统进行资源调度和分配的一个独立单位。

进程是什么

从三个角度进行解释,首先从物理内存上:进程是内存的一片内存空间,在任意时刻cpu只能执行一条指令,执行哪条指令由物理程序由程序计数器决定,也就是说,进程共用一个程序计数器;从逻辑上:由于进程可以执行,也可以被挂起,还能继续执行,因此从这个角度看,每个进程有着自己的计数器;从时间上:进程都是向前推进;

进程的管理

引入了进程的概念,就需要对进程进行管理,只有这样各个进程在运行期间才会相互配合且互不影响。因此计算机需要对进程信息进行存储,操作系统对进程的存储引入了进程表的存储结构。

进程在计算机上运行,需要让计算机分配合适的内存,让其有一个安身之处,由于多个进程可能同时并存,因此为了解决让多个进程共享同一个物理内存而不发生冲突,操作系统解决这个问题的手段是内存管理;此外进程也需要进行切换,因此计算机为解决这个问题,则有了进程调度。

进程的创建过程

  • 分配进程控制块
  • 初始化机器寄存器
  • 初始化页表
  • 将程序代码从磁盘读进内存
  • 将处理器状态设置为用户态
  • 跳转到程序的起始地址

进程的几种状态

  • 就绪状态 当进程分配到除了cpu以外的所有必要的资源,只要获得处理机便可以立即执行;
  • 运行状态 进程获得了处理机,其程序正在处理机上执行;
  • 阻塞状态 正在执行的进程,由于等待某事件发生而无法执行时,便放弃处理机而处于阻塞状态;

进程几种状态的转换

  • 就绪到执行 计算机操作系统调度就绪进程到CPU上进程就到了运行状态
  • 执行到阻塞 当运行中的进程因为发生了某个事件的等待,进程因为阻塞无法继续向前推进。
  • 执行到就绪 正在执行的进程有可能占用了CPU太长时间,操作系统将其挂起
  • 阻塞到就绪 正在阻塞的进程在等待资源到达之前,变为就绪状态,当分配到所需的资源后就可以立即执行。

不可转换的状态

  • 阻塞到执行 操作系统将进程变为执行的时候,是从就绪队列中寻找进程,阻塞进程必须先转换成就绪进程

需要注意的是,此转换在逻辑上是可以实现,只不过计算机不允许这样做。

  • 就绪到阻塞 只有正在执行的进程才有可能发生阻塞,就绪状态不可能直接到阻塞,从逻辑上就不行。

线程

线程是进程的实体,是cpu调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。

为什么需要线程

线程的出现是为了更好的提高CPU的计算效率,由于进程在一个时间做一件事,进程在执行的过程中,如果发生了阻塞,那么整个进程就会无法继续向前推进,比如一个进程需要等待用户输入才能继续向前执行,有可能该进程中不需要等待用户输入的也无法工作。因此计算机科学家们在进程的基础上引入了线程的概念。

举个例子来说如果将进程比作工厂,线程就是工厂里的工人,工人们各自执行着自己的工作,没有关系的工作不会发生互相等待。

由此可以推出:多线程的情况下,增加cpu,可以有效提高进程的执行效率,如果没有线程,一个时间点只能运行一个进程。

进程与线程的关系

  • 一个进程至少有一个线程
  • 一个进程包含多个线程
  • 一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。

线程的同步方式

临界区 当多个线程访问同一个独占性资源的时候,可以使用临界区对象,只有拥有临界区对象的才能访问被保护的资源 事件 一个线程结束之后,主动唤醒另外一个线程,其中事件有两种类型分别是人工事件和自动事件。 互斥量 只有拥有互斥对象的线程才能有访问公共资源的权限,互斥对象只有一个。防止多个线程同时读写某一块内存区域。 信号量 信号量是允许多个线程访问同一个资源,但只能提供给固定数目的线程使用。

总结

  • 多进程形式,允许多个任务同时运行
  • 多线程形式,允许单个任务分成不同的部分运行
  • 协调机制,防止进程和线程之间的冲突,另一方面允许进程之间和线程之间共享资源

END

本文分享自微信公众号 - golang技术杂文(gh_ebbdb61f463e),作者:无崖子天下无敌

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 操作系统-进程和线程

    进程线程的区别 1、进程是什么? 是具有一定独立功能的程序、它是系统进行资源分配和调度的一个独立单位,重点在系统调度和单独的单位,也就是说进程是可以独立运行...

    用户2909867
  • 计算机操作系统之进程管理

    当有了多道程序技术之后就得到了b图,每个程序各自独立的占用一个逻辑程序计数器,达到并发执行效果

    JavaEdge
  • 什么是计算机程序?操作系统、指令、进程、线程等

    不管你用了多少技术,框架,模式,实现了怎么样的协议与功能,原理是什么,也只是人类意识层面上的内容,到底层只有指令。

    一个会写诗的程序员
  • 计算机操作系统学习笔记 | 进程

    进程的静态描述由3部分组成:进程控制块 (Process Control Block, PCB) 、有关程序段和该程序段对其进行操作的数据结构集。而PCB(进程...

    阿峰博客
  • 操作系统-多进程和多线程-python

    在学习廖雪峰老师的python教程,学习了多进程和多线程,记录下核心的思路和方法。

    我在鹅厂做安全
  • 操作系统 进程线程模型 进程线程调度

    调度是分层次的,在操作系统中,一般将调度分为高级调度、中级调度和低级调度。 高级调度也称作业调度,其主要任务是按一定的原则,对磁盘中的处于后备状态的作业进行选择...

    Meng小羽
  • 操作系统中的进程与线程

    进程是一个动态概念,表示程序在一个数据集合上的一次动态执行过程。进程包含正在运行的一个程序的所有状态信息:

    陆道峰
  • 操作系统 进程线程模型 线程模型

    进程是一个资源拥有者,因而在进程的创建、撤销和切换中,系统必须为之付出较大的时空开销。

    Meng小羽
  • 操作系统 进程线程模型 进程模型

    程序是一个在时间上按严格次序前后相继的操作序列,这些操作是机器指令或高级语言编写的语句。

    Meng小羽
  • 计算机操作系统的自举过程

    CPU的硬件都设计为加电即进入16位实模式状态运行。同时,还有一点非常关键的是,将CPU硬件逻辑设计为加电瞬间强行将CS的值置为0xF000、IP的值置为0xF...

    一个会写诗的程序员
  • 计算机操作系统——锁的进化

    相信大家都知道金鱼是不知道饥饿的,如果有食物吃,金鱼就会不停的填饱肚子,哪怕被撑死。在计算机中锁的进化可以用金鱼生存的例子来引入。

    陌无崖
  • 计算机操作系统

    计算机系统由硬件系统和软件系统两大部分组成。操作系统(英语:Operating System,缩写:OS)是管理计算机硬件与软件资源的系统软件,同时也是计算机系...

    搬砖俱乐部
  • 操作系统——线程

    静态链接库是一个或多个obj文件的打包,所以有人干脆把obj文件生成lib文件的过程称为Archive,即合并在一起。比如你链接一个静态库,如果其中有错,他会准...

    海盗船长
  • 操作系统 - 进程

    系统为每一个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置)

    用户5705150
  • 操作系统——进程

    作业:用户在一次解题或一个事务处理过程中要求计算机系统所做工作的集合。它包括用户程序、所需要的数据及控制命令等。作业由一系列有序的步骤组成。 进程:一个程序在...

    海盗船长
  • 操作系统-进程

    (2)阻塞状态是缺少需要的资源从而由运行状态转换而来,但是该资源不包括 CPU 时间,缺少 CPU 时间会从运行态转换为就绪态。

    CherishTheYouth
  • 计算机操作系统学习笔记_进程管理--死锁

    进程管理 --死锁 一、死锁的概念 1.死锁的概念   系统中两个或两个以上的进程无限期地相互等待永远不会发生的条件,系统处于一种停滞状态,这种情况称为死锁。 ...

    小小科
  • 操作系统笔记-进/线程模型

    进程表(process table),也称进程控制块(PCB),是由操作系统维护的,每个进程占用其中一个表项。该表项包含了操作系统对进程进行描述和控制的全部信息...

    Cloud-Cloudys
  • 操做系统-线程与进程

    进程切换的实质是回收当前运行进程对 CPU 的控制权,并将 CPU 控制权转交给新调度的就绪进程.

    一滴水的眼泪

扫码关注云+社区

领取腾讯云代金券