进程调度

【线程理论篇】 -- 2019-08-16 20:51:20

家住魔仙堡 提交于 2019-11-27 13:49:31
原文: http://blog.gqylpy.com/gqy/231 " 一、线程概念的引入背景 1. 进程 之前的博客 已经整理了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。正是这样的设计,大大提高了CPU的利用率。进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在CPU上实现多道编程而提出的。 2. 有了进程为什么还要有线程 进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的cpu和其它资源,可以提高计算机的利用率。很多人就不理解了,既然进程那么优秀,为什么还有线程呢?其实,仔细观察就会发现进程还有很多缺陷的,主要体现在以下两点: 进程只能在同一时间处理一件任务,如果想在同一时间处理两件任务,进程就无能为力了. 进程在执行过程中如果遇到阻塞,例如等待i/o,整个进程就会挂起,即便进程中有些工作不依赖之例,也将无法执行. 3. 线程的出现 60年代,在OS中能拥有资源和独立运行的基本单位是进程,然后随着计算机技术的发展,进程出现了很多弊端。一是由于进程是资源拥有者,创建、撤销

GO的并发之道-Goroutine调度原理&Channel详解

霸气de小男生 提交于 2019-11-27 13:36:48
并发(并行),一直以来都是一个编程语言里的核心主题之一,也是被开发者关注最多的话题;Go语言作为一个出道以来就自带 『高并发』光环的富二代编程语言,它的并发(并行)编程肯定是值得开发者去探究的,而Go语言中的并发(并行)编程是经由goroutine实现的,goroutine是golang最重要的特性之一,具有使用成本低、消耗资源低、能效高等特点,官方宣称原生goroutine并发成千上万不成问题,于是它也成为Gopher们经常使用的特性。 一、goroutine简介 Golang被极度赞扬的是它的异步机制,也就是goroutine。goroutine使用方式非常的简单,只需使用go关键字即可启动一个协程, 并且它是处于异步方式运行,你不需要等它运行完成以后再执行以后的代码。 go func()//通过go关键字启动一个协程来运行函数 除去语法上的简洁,goroutine是一个协程,也就是比线程更节省资源,一个线程中可以有多个协程,而且goroutine被分配到多个CPU上运行,是真正意义上的并发。 go func()//通过go关键字启动一个协程来运行函数 二、goroutine内部原理 在介绍goroutine原理之前,先对一些关键概念进行介绍: 关键概念 并发 一个cpu上能同时执行多项任务,在很短时间内,cpu来回切换任务执行(在某段很短时间内执行程序a

【线程理论篇】 -- 2019-08-16 18:34:29

社会主义新天地 提交于 2019-11-27 13:28:42
原文: http://blog.gqylpy.com/gqy/231 " 一、线程概念的引入背景 1. 进程 之前的博客 已经整理了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。正是这样的设计,大大提高了CPU的利用率。进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在CPU上实现多道编程而提出的。 2. 有了进程为什么还要有线程 进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的cpu和其它资源,可以提高计算机的利用率。很多人就不理解了,既然进程那么优秀,为什么还有线程呢?其实,仔细观察就会发现进程还有很多缺陷的,主要体现在以下两点: 进程只能在同一时间处理一件任务,如果想在同一时间处理两件任务,进程就无能为力了. 进程在执行过程中如果遇到阻塞,例如等待i/o,整个进程就会挂起,即便进程中有些工作不依赖之例,也将无法执行. 3. 线程的出现 60年代,在OS中能拥有资源和独立运行的基本单位是进程,然后随着计算机技术的发展,进程出现了很多弊端。一是由于进程是资源拥有者,创建、撤销

【线程理论篇】 -- 2019-08-16 18:27:16

久未见 提交于 2019-11-27 13:28:09
原文: http://blog.gqylpy.com/gqy/231 " 一、线程概念的引入背景 1. 进程 之前的博客 已经整理了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。正是这样的设计,大大提高了CPU的利用率。进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在CPU上实现多道编程而提出的。 2. 有了进程为什么还要有线程 进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的cpu和其它资源,可以提高计算机的利用率。很多人就不理解了,既然进程那么优秀,为什么还有线程呢?其实,仔细观察就会发现进程还有很多缺陷的,主要体现在以下两点: 进程只能在同一时间处理一件任务,如果想在同一时间处理两件任务,进程就无能为力了. 进程在执行过程中如果遇到阻塞,例如等待i/o,整个进程就会挂起,即便进程中有些工作不依赖之例,也将无法执行. 3. 线程的出现 60年代,在OS中能拥有资源和独立运行的基本单位是进程,然后随着计算机技术的发展,进程出现了很多弊端。一是由于进程是资源拥有者,创建、撤销

Linux IO Scheduler

走远了吗. 提交于 2019-11-27 05:06:06
  一直都对linux的io调度算法不理解,这段时间一直都在看这方面的内容,下面是总结和整理的网络上面的内容。生产上如何建议自己压一下。以实际为准。   每个块设备或者块设备的分区,都对应有自身的请求队列 (request_queue), 而每个请求队列都可以选择一个 I/O 调度器来协调所递交的 request 。 I/O 调度器的基本目的是将请求按照它们对应在块设备上的扇区号进行排列,以减少磁头的移动,提高效率。每个设备的请求 队列里的请求将按顺序被响应。实际上,除了这个队列,每个调度器自身都维护有不同数量的队列,用来对递交上来的 request 进行处理,而排在队列最前面的 request 将适时被移动到请求队列 中等待响应。    IO调度器在内核栈中所处位置如下:      下图是一个以write为例的 Linux 磁盘IO子系统的架构:   下面是详细的Linux 存储栈流程图:    IO调度器的总体目标是希望让磁头能够总是往一个方向移动,移动到底了再往反方向走,这恰恰就是现实生活中的电梯模型,所以IO调度器也被叫做电梯. (elevator)而相应的算法也就被叫做电梯算法.而Linux中IO调度的电梯算法有好几种,一个叫做as(Anticipatory),一个叫做 cfq(Complete Fairness Queueing),一个叫做deadline

【并发编程必备基础之进程】

假如想象 提交于 2019-11-27 02:51:37
原文: http://106.13.73.98/__/10/ 目录 1.操作系统背景知识 2.什么是进程 3.进程调度 4.进程的并行与并发 5.同步异步阻塞非阻塞 6.进程的创建与结束 1.操作系统背景知识 顾名思义 ,进程即正在执行的一个过程,进程是对正在运行的程序的一个抽象。进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老的最重要的抽象概念之一,操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,应先了解操作系统, 点击进入操作系统介绍 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用+空间多路复用+硬件上支持分离),如果没有进程的抽象,现代计算机将不复存在。 必备理论基础 1.操作系统的作用: 1)隐藏复杂的硬件接口,提供良好的抽象接口. 2)管理,调度进程,并且将多个进程对硬件的抢夺变得有序 2.多道技术 1)产生背景:针对单核,实现并发 2)空间上的复用:如内存中同时有多道程序 3)时间上的复用:复用一个cpu的时间片,强调:遇到io切,占用cpu的时间过长也切,核心在于切之前将进程的状态保存下载,这样才能保证下次切换回来时能基于上次切走的位置继续运行. PS:现在的cpu一般都是多核的,同样,每个核都会用到多道技术

【线程理论篇】

孤街浪徒 提交于 2019-11-27 02:49:54
原文: http://106.13.73.98/__/5/ 一、线程概念的引入背景 1. 进程 之前的博客 已经整理了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。正是这样的设计,大大提高了CPU的利用率。进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在CPU上实现多道编程而提出的。 2. 有了进程为什么还要有线程 进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的cpu和其它资源,可以提高计算机的利用率。很多人就不理解了,既然进程那么优秀,为什么还有线程呢?其实,仔细观察就会发现进程还有很多缺陷的,主要体现在以下两点: 进程只能在同一时间处理一件任务,如果想在同一时间处理两件任务,进程就无能为力了. 进程在执行过程中如果遇到阻塞,例如等待i/o,整个进程就会挂起,即便进程中有些工作不依赖之例,也将无法执行. 3. 线程的出现 60年代,在OS中能拥有资源和独立运行的基本单位是进程,然后随着计算机技术的发展,进程出现了很多弊端。一是由于进程是资源拥有者,创建、撤销

【并发编程必备基础之进程】 -- 2019-08-12 12:41:39

China☆狼群 提交于 2019-11-27 02:46:29
原文: http://106.13.73.98/__/10/ 目录 1.操作系统背景知识 2.什么是进程 3.进程调度 4.进程的并行与并发 5.同步异步阻塞非阻塞 6.进程的创建与结束 1.操作系统背景知识 顾名思义 ,进程即正在执行的一个过程,进程是对正在运行的程序的一个抽象。进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老的最重要的抽象概念之一,操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,应先了解操作系统, 点击进入操作系统介绍 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用+空间多路复用+硬件上支持分离),如果没有进程的抽象,现代计算机将不复存在。 必备理论基础 1.操作系统的作用: 1)隐藏复杂的硬件接口,提供良好的抽象接口. 2)管理,调度进程,并且将多个进程对硬件的抢夺变得有序 2.多道技术 1)产生背景:针对单核,实现并发 2)空间上的复用:如内存中同时有多道程序 3)时间上的复用:复用一个cpu的时间片,强调:遇到io切,占用cpu的时间过长也切,核心在于切之前将进程的状态保存下载,这样才能保证下次切换回来时能基于上次切走的位置继续运行. PS:现在的cpu一般都是多核的,同样,每个核都会用到多道技术

并发编程(一)

我怕爱的太早我们不能终老 提交于 2019-11-27 00:58:33
并发编程(一) >>>思维导图>>>博客园 操作系统的作用 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理、调度进程,并且将多个进程对硬件的竞争变得有序 多道技术 1.空间上的复用:多个赓续公用一套计算机硬件 2.时间上的复用:切换+保存状态 >1.当一个程序遇到IO操作 操作系统会剥夺该程序的cpu执行权限(提高了cpu的利用率 并且也不影响程序的执行效率) >2.当一个程序长时间占用cpu 操作系统也会剥夺该程序的cpu执行权限(降低了程序的执行效率) 并发:看起来像同时运行的就可以 并行:真正意义上的同时执行 单核的计算机不能实现并行,但是可以实现并发 View Code 单道程序工作示例 多道程序工作示例 进程 程序:一堆代码 进程:正在运行的程序 第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。 第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。[3] 进程是操作系统中最基本、重要的概念。是多道程序系统出现后

并发编程

六月ゝ 毕业季﹏ 提交于 2019-11-27 00:42:35
操作系统的发展史 首先是手工操作-穿孔卡片 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。 手工操作方式两个特点:   (1)用户独占全机。不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低。   (2)CPU 等待手工操作。CPU的利用不充分。 批处理-磁带存储 批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令) 联机批处理系统   首先出现的是联机批处理系统,即作业的输入/输出由CPU来处理。 脱机批处理系统   为克服与缓解:高速主机与慢速外设的矛盾,提高CPU的利用率,又引入了脱机批处理系统,即输入/输出脱离主机控制。 卫星机:一台不与主机直接相连而专门用于与输入/输出设备打交道的。   其功能是:   (1)从输入机上读取用户作业并放到输入磁带上。   (2)从输出磁带上读取执行结果并传给输出机。   这样,主机不是直接与慢速的输入/输出设备打交道,而是与速度相对较快的磁带机发生关系,有效缓解了主机与设备的矛盾。主机与卫星机可并行工作,二者分工明确,可以充分发挥主机的高速计算能力。 脱机批处理系统:20世纪60年代应用十分广泛,它极大缓解了人机矛盾及主机与外设的矛盾。   不足:每次主机内存中仅存放一道作业