进程控制块

一文读懂什么是进程、线程、协程

隐身守侯 提交于 2019-11-29 19:11:59
目录 进程 线程 任务调度 进程与线程的区别 多线程与多核 一对一模型 多对一模型 多对多模型 查看进程与线程 线程的生命周期 协程 协程的目的 协程的特点 协程的原理 协程和线程的比较 进程   我们都知道计算机的核心是CPU,它承担了所有的计算任务;而操作系统是计算机的管理者,它负责任务的调度、资源的分配和管理,统领整个计算机硬件;应用程序则是具有某种功能的程序,程序是运行于操作系统之上的。   进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。 进程一般由程序、数据集合和进程控制块三部分组成。 程序用于描述进程要完成的功能,是控制进程执行的指令集; 数据集合是程序在执行时所需要的数据和工作区; 程序控制块(Program Control Block,简称PCB),包含进程的描述信息和控制信息,是进程存在的唯一标志。 进程具有的特征: 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的; 并发性:任何进程都可以同其他进程一起并发执行; 独立性:进程是系统进行资源分配和调度的一个独立单位; 结构性:进程由程序、数据和进程控制块三部分组成。 线程   在早期的操作系统中并没有线程的概念,进程是能拥有资源和独立运行的最小单位

python网络进程

谁说我不能喝 提交于 2019-11-29 19:07:06
多任务编程 意义 :充分利用计算机的资源提高程序的运行效率 定义 :通过应用程序利用计算机多个核心,达到同时执行多个任务的目的 实施方案 : 多进程 、 多线程 并行 :多个计算机核心 并行的 同时处理 多个任务 并发 :内核在 多个任务间 不断 切换 ,达到好像内核在同时处理多个任务的运行效果 进程 :程序在计算机中运行一次的过程 程序 :是一个可执行文件,是静态的,占有磁盘,不占有计算机运行资源 进程 :进程是一个动态的过程描述,占有CPU内存等计算机资源的,有一定的生命周期 * 同一个程序的不同执行过程是不同的进程,因为分配的计算机资源等均不同 父子进程 : 系统中每一个进程(除了系统初始化进程)都有唯一的父进程,可以有0个或多个子进 程。父子进程关系便于进程管理。 进程 CPU时间片: 如果一个进程在某个时间点被计算机分配了内核,我们称为该进程在CPU时间片上。 PCB( 进程控制块):存放进程消息的空间 进程ID(PID):进程在操作系统中的唯一编号,由系统自动分配 进程信息包括:进程PID,进程占有的内存位置,创建时间,创建用户. . . . . . . . 进程特征: 进程是操作系统分配计算机资源的最小单位 每一个进程都有自己单独的 虚拟 内存空间 进程间的执行相互独立,互不影响 进程的状态 1、 三态 就绪态: 进程具备执行条件, 等待系统分配CPU 运行态: 进程

Python基础(十四)-并发编程

时间秒杀一切 提交于 2019-11-29 12:20:31
一、操作系统 参考文档: https://www.cnblogs.com/yuanchenqi/articles/6248025.html 二、进程与线程 2.1、进程简介 进程 :一个程序在一个数据集上的一次动态执行过程,一般由程序、数据集、进程控制块三部分组成 程序:用来描述进程要完成哪些功能以及如何完成 数据集:程序在执行过程中所需要使用的资源 进程控制块:记录进程的外部特征,描述进程的执行变化过程,系统可以利用它来控制和管理进程,它是系 统感知进程存在的唯一标志 2.2、线程 线程 :轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID、程序 计数器、寄存器集合和堆栈共同组成。线程的引入减小了程序并发执行时的开销,提高了操作系统的并发 性能。线程没有自己的系统资源。 2.3、进程与线程区别 1)一个程序至少有一个进程,一个进程至少有一个线程.(进程可以理解成线程的容器) 2)进程在执行过程中拥有独立的内存单元,而 多个线程共享内存 ,从而极大地提高了程序的运行效率。 3)线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和 程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 4)进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调

进程基础

只愿长相守 提交于 2019-11-29 12:02:35
进程基础 一、操作系统背景知识 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操作系统,点击进入 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间多路复用+硬件上支持隔离),没有进程的抽象,现代计算机将不复存在。 1.1 必备的理论基础 操作系统的作用: 隐藏丑陋复杂的硬件接口,提供良好的抽象接口 管理、调度进程,并且将多个进程对硬件的竞争变得有序 多道技术: 产生背景:针对单核,实现并发 ps:现在的主机一般是多核,那么每个核都会利用多道技术。有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再重新调度,会被调度到4个cpu中的任意一个,具体由操作系统调度算法决定。 空间上的复用:如内存中同时有多道程序 时间上的复用:复用一个cpu的时间片 强调:遇到io切换,占用cpu时间过长也切换,核心在于切之前将进程的状态保存下来,这样才能保证下次切换回来时,能基于上次切走的位置继续运行。 ## 二、什么是进程 进程(Process

计算机操作系统第三章处理机调度与死锁习题及答案

老子叫甜甜 提交于 2019-11-29 07:28:12
进程调度的因素 引起进程调度的原因有:进程结束;时间片用完;被抢占;调用原语被阻塞;I/O请求 某进程被唤醒后立即进入运行,我们就说这个系统采用的是抢占调度方法,对吗?为什么? 不对,抢占调度方法定义:允许调度程序根据某种原则,将已分配给该进程的处理机,重新分配给另一进程,由题不能判断CPU是否处于空闲状态 高级调度和低级调度的主要任务是什么?为什么引入中级调度? (1)高级调度又称为作业调度。它是批处理系统中使用的一种调度。主要任务是按照某种算法从外存的后备队列上选择一个或多个作业调入内存,并为其创建进程、分配必要的资源,然后再将所创建的进程控制块插入就绪队列中 (2)低级调度又称进程调度。它是距离硬件最近的一级调度。其主要任务是按照某种算法从就绪队列上选择一个(或多个)进程,使其获得CPU (3)引入中级调度的目的是为了提高内存利用率和系统吞吐量。其功能是,让那些暂时不能运行的进程不再占用宝贵的内存资源,而是调其到外存上等候。此时的进程状态为挂起状态。当这些进程重新具备运行条件且内存空闲时,由中级调度选择一部分挂起状态的进程调入内存并将其状态变为就绪状态 何谓死锁?产生死锁的原因和必要条件是什么? 何谓死锁: 死锁是指多个进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,当进程处于这种状态时,若无外力作用,它们都将无法再向前推进。 产生死锁的原因: (1

并发编程:进程+线程+协程

三世轮回 提交于 2019-11-29 05:56:16
现代计算机系统是由一个或者多个处理器,主存,磁盘,打印机,键盘,鼠标显示器,网络接口以及各种其他输入 输出设备组成的复杂系统,每位程序员不可能掌握所有系统实现的细节,并且管理优化这些部件是一件挑战性极强 的工作。所以,我们需要为计算机安装一层软件,成为操作系统,任务就是用户程序提供一个简单清晰的计算机模 型,并管理以上所有设备。 定义也就有了:操作系统是一个用来协调、管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间。 (程序是运行在系统上的具有某种功能的软件,比如说浏览器,音乐播放器等。) 操作系统的内核的定义:操作系统的内核是一个管理和控制程序,负责管理计算机的所有物理资源,其中包括:文件系 统、内存管理、设备管理和进程管理。 过程: 万能程序员们将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机 内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或 卡片)后,才让下一个用户上机。 注意点: 程序员需要在墙上的计时表上预约时间 同一时刻只有一个程序在内存中被CPU调用运行(串行的) 优缺点: 优点:程序员在申请的时间段内独享整个资源,即时的调试自己的程序,如果有bug可以当场处理, 缺点:这对于计算机提供商来说是一种浪费(你买一台电脑4000块,那

内存管理

佐手、 提交于 2019-11-29 05:40:01
如何进行内存管理 为了让每个进程认为 独占 地使用内存,并且让每个进程看到的内存是 一致 的,操作系统对物理内存、磁盘进行了 抽象 ,抽象出 虚拟内存 。并且把虚拟内存、物理内存以相同固定大小的 页 进行切分管理( 分页 ),虚拟内存中叫页,物理内存中的叫页帧。 每个进程虚拟地址空间是独立的。用户访问的是虚拟内存的地址,即虚拟地址。需要通过 CPU 芯片上的 内存管理单元 MMU 硬件根据页表 翻译 成物理地址,才能真正访问内存。 页表 :每个进程都有它的独立的页表(放在内存里),用来存对虚拟页、物理页的 映射 。页表可以有多级页表,以时间换取空间(实际上,多级页表的地址翻译,并不比单级页表慢很多)。 为什么用分页机制 如果直接按一个个程序加载到内存,会出现内存 碎片 。 后来出现 分段 机制,按程序的各段来存储,从而减少碎片,但是还是有很多。 所以引出分页,把程序分成更小的页(一般大小为 4KB )来管理内存。分得更小,会增加负荷,但实际上利大于弊。 硬件关系 通过虚拟地址 访问 数据: MMU 先通过它里面的 TLB 缓存查询,如果没有,则去内存中的 页表 进行查询。成功翻译成物理地址后,访问 一级缓存 获取数据。如果没有则访问 二级缓存 (可能还有三级缓存)。还是没有就访问 内存 。 物理内存 不够 时: 将不用的页面换出到磁盘中的 swap 分区 里。 内存空间布局

进程线程模型

∥☆過路亽.° 提交于 2019-11-29 05:34:39
pthread_join 等待一个特定线程的退出 进程控制块分为调度信息和现场信息 进程标识符 进程当前状态 代码段指针 进程从运行——>就绪的原因可能是:1.被调度程序抢占处理机 2.进程完成创建 3.时间片用完 非抢占式能引起新的进程调度是:1.正在执行的进程运行完毕 正在执行的进程调用阻塞原语将自己阻塞进入等待状态3.正在执行的进程调用阻塞原语并因资源不足被阻塞 4.唤醒原语激活了资源进程 时间片用完 进程由:进程控制块 数据 指令代码组成 引入进程的原因:提高并发度 减少通信开销 线程之间的切换时间短 每个线程都有独有的栈 等待——>就绪 唤醒 当设备忙进程会进入等待状态 不会终止 运行中的三种状态:就绪 等待 运行 运行——>就绪 现场的信息都会保存到进程控制块当中 不同的进程执行的代码段可能相同 与本进程相关的内容只能由操作系统读取 当进程中请处理机得不到满足时 他将进入就绪态 管程只允许一个进程进入管理 从而实现进程的互斥 但无法保证其本身互斥 进程优先级:静态和动态 系统进程优先级高于用户进程优先级 静态优先级 进程创建时确定运行期间不会改变 动态优先级 创建时确定优先级 之后不断改变 所有进程必须调度才能在处理机上运行 没有被调度到的进程只能处于等待状态 操作系统可以根据不同情景分类应用多种进程调度算法 一个进程的状态变化不一定会引起令一个进程的状态变化

进程的介绍(理论部分)

若如初见. 提交于 2019-11-28 22:28:06
进程的介绍(理论部分) 一 什么是进程 ​ 进程:正在进行的一个过程或者说一个任务。而 负责执行任务则是cpu 。源于操作系统 由操作系统调控交予cpu运行 ​ 举例(单核+多道,实现多个进程的并发执行): ​ 太白金星在一个时间段内有很多任务要做:python备课的任务,写书的任务,交女朋友的任务,王者荣耀上分的任务,   ​ 但太白金星同一时刻只能做一个任务(cpu同一时间只能干一个活),如何才能玩出多个任务并发执行的效果? ​ 太白金星备一会课,再去跟嫂子聊聊天,再去打一会王者荣耀....这就保证了每个任务都在进行中. 二 进程与程序的区别 程序仅仅只是一堆静态的代码而已,而进程指的是程序的运行过程。 举例: 想象一位有一手好厨艺的计算机科学家太白金星正在为他的女儿元昊烘制生日蛋糕。 他有做生日蛋糕的食谱, 厨房里有所需的原料:面粉、鸡蛋、韭菜,蒜泥等。 在这个比喻中: ​ 做蛋糕的食谱就是程序 (即用适当形式描述的算法) ​ 计算机科学家就是处理器(cpu) ​ 而做蛋糕的各种原料就是输入数据 。 进程就是厨师阅读食谱、取来各种原料以及烘制蛋糕等一系列动作的总和 。 现在假设计算机科学家太白金星的儿子alex哭着跑了进来,说: XXXXXXXXXXXXXX 。 科学家太白金星想了想,处理儿子alex蛰伤的任务比给女儿元昊做蛋糕的任务更重要,于是

我是如何学习写一个操作系统(五):故事的高潮之进程和线程1

久未见 提交于 2019-11-28 17:47:45
前言 为什么取这个标题呢?一是进程和线程是作为操作系统里最重要最核心的一部分。二是确实吃冰棍拉冰棍,没话,强行凑标题和之前的标题差不多字数。 前一章写了系统调用的过程,算是一个小插曲,这个部分不管在哪里应该都是可以的。 现在的这个系列已经和之前的标题渐行渐远了,原本是想以之前写的一个玩具型操作系统 FragileOS 为主线,但是在看书学习的过程中稍微改了一下方向,已经不是特别关注一个操作系统的实现的完整流程和内部的联系,更多的是想系统的学习操作系统的各个模块然后辅以一些代码,但是不管怎么样,都是属于自己在学习操作系统的过程的一个记录 进入正题 进程 进程的出现最最主要的原因就是想要提高CPU的利用率 进程的定义 正在执行的程序 正在计算机上执行的程序实例 能够分配给处理器并由处理器执行的实体 一组指令的执行、一个当前状态和相关的系统资源的集合 多进程的组织 单核CPU在同一时刻只能运行一条指令,所谓的多进程只是指令来回切换的假象,但是因为速度太快,就可以看成是同时进行的。所以在进程切换的时就需要去组织进程的切换 进程控制块(process control block) 控制进程的切换一个重要的数据结构就是进程控制块(process control block),是与每个进程相关的还有操作系统用于控制进程的许多属性的集合 进程控制块的作用,是使一个在多道程序环境下不能独立进行的程序