进程调度

iOS多线程技术—多线程简单介绍

别说谁变了你拦得住时间么 提交于 2019-12-24 03:03:28
iOS多线程技术—多线程简单介绍 一、进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ、Xcode,系统就会分别启动2个进程 通过“活动监视器”可以查看Mac系统中所开启的进程 2.什么是线程 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行 比如使用酷狗播放音乐、使用迅雷下载电影,都需要在线程中执行    3.线程的串行 1个线程中任务的执行是串行的 如果要在1个线程中执行多个任务,那么只能一个一个地按顺序执行这些任务 也就是说,在同一时间内,1个线程只能执行1个任务 比如在1个线程中下载3个文件(分别是文件A、文件B、文件C) 二、多线程 1.什么是多线程 1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务 进程 ->车间,线程->车间工人 多线程技术可以提高程序的执行效率 比如同时开启3条线程分别下载3个文件(分别是文件A、文件B、文件C) 2.多线程的原理 同一时间,CPU只能处理1条线程,只有1条线程在工作(执行) 多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换) 如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象 思考:如果线程非常非常多

调度 15-17

淺唱寂寞╮ 提交于 2019-12-23 20:31:51
十五: Linux的进程: 1)实时进程; 2)普通进程; 1.task_struct内成员变量: 1)调度策略 #define SCHED_NORMAL 0 #define SCHED_FIFO 1 #define SCHED_RR 2 #define SCHED_BATCH 3 #define SCHED_IDLE 5 #define SCHED_DEADLINE 6 2)优先级 int prio, static_prio, normal_prio; unsigned int rt_priority; 说明:实时进程:1-99;普通进程100-139;数值越低级别越高 3)调度策略; -- 实时进程: SCHED_FIFO(先到先得), SCHED_RR(轮询), SCHED_DEADLINE(交付任务最近的最优先) --普通进程: SCHED_NORMAL, SCHED_BATCH, SCHED_IDLE 4)执行等级(Class) 即 sched_classs,分5类class 2. 普通进程的CFS算法(common Fair scheduling) Fair_sched_class: Tick;vruntime; 3.调度队列和调度实体(红黑树); - 实时调度实体 sched_rt_entity,Deadline调度实体sched_dl_entity

线程属性总结 线程的api属性

我是研究僧i 提交于 2019-12-23 04:48:14
http://blog.csdn.net/zsf8701/article/details/7842392 //线程属性结构如下: typedef struct { int etachstate; //线程的分离状态 int schedpolicy; //线程调度策略 structsched_param schedparam; //线程的调度参数 int inheritsched; //线程的继承性 int scope; //线程的作用域 size_t guardsize; //线程栈末尾的警戒缓冲区大小 int stackaddr_set; //线程的栈设置 void* stackaddr; //线程栈的位置 size_t stacksize; //线程栈的大小 }pthread_attr_t; 属性值不能直接设置,须使用相关函数进行操作,初始化的函数为pthread_attr_init,这个函数必须在pthread_create函数之前调用。之后须用pthread_attr_destroy函数来释放资源。线程属性主要包括如下属性:作用域(scope)、栈尺寸(stack size)、栈地址(stack address)、优先级(priority)、分离的状态(detached state)、调度策略和参数(scheduling policy and parameters)

随笔之Android平台上的进程调度探讨

让人想犯罪 __ 提交于 2019-12-22 14:42:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 随笔之Android平台上的进程调度探讨 一由来 最近在翻阅MediaProvider的时候,突然想起之前碰到的⼀个 问题,该问题是这样的: 一个Pad上有很多媒体文件,然后每次开机后的⼀段时间 内,Home Screen的反应都特别慢,有时候还会报出ANR 的错误。从ANR文件/data/anr/traces.txt分析,发现系统 打印的cpu占有率中,android.process.media占用非常高 。所以怀疑是MediaProvider做文件扫描占用CPU太多资 源导致。 但是我们实际测试的时候,通过top –m 5查看cpu占有率 的时候,发现只要一操作Home,android.process.media 进程cpu占有率就会下降很多。 当时看到这个现象,直观感觉就是MediaProvider抢占CPU能 力不够。直接把该现象告诉领导,这个事情也就结了。但是⼀ 直没在代码中找到依据:总有地方设置进程的优先级吧?? 后来,时间充裕了,想起这个问题。果不其然,在MediaScan nerService中,找到答案: public void run() { Process.setThreadPriority(Process.THREAD_PRIORITY_BA Process.THREAD

抢占式与非抢占式调度算法

雨燕双飞 提交于 2019-12-21 23:41:48
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 为照顾紧迫性作业,使之在进入系统后便获得优先处理,引入了最高优先权优先(FPF)调度算法。它分为两种: (一)非抢占式优先权算法; (二)抢占式优先权调度算法。 1.非抢占式优先权算法:系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成。 2.抢占式优先权调度算法:系统同样把处理机分配给优先权最高的进程,使之执行.但在其执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理机分配给新到的优先权最高的进程。 来源: oschina 链接: https://my.oschina.net/u/2244961/blog/1608035

linux内核分析笔记----调度

跟風遠走 提交于 2019-12-21 03:38:09
调度?咋这熟悉,我们是不是常在哪里听到。没错,是的,调度我们时常听过,比如交通管制调度啦等。这不,夏天这热, 标语贴的好:相应国电电力调度,做文明市民,好别扭啊!不管了。你要是还是不懂,再啰嗦讲个事,过年回家,和漂亮的GF回家,为了张普通的硬座票还要排老久对,甚至还可能被坑拿到黄牛票,这时你嘴里咧咧的啥:XX,啥火车站,做的啥春运调度啊!唉,这次你说到点上了。 总结一下:调度就是通过调度程序的合理调度,实现系统资源的最大限度发挥作用。多进程的并发正是这样的效果。其实原理一点也不复杂,道理也一样简单:只要又可以执行的进程,那么就总是会有进程正在执行。但简单的问题也会复杂化, 比如:我们买票为啥抱怨调度,归根接地感谢当年的人海战术(多说一句,其实现实的很多问题,一个人海战术解决所有,这战术中国人用起来最得心应手)。 好么,一般系统中进程的数目总会比处理器的个数多,所以竞争在所难免,调度的问题就集中在解决竞争的问题。 种类问题不多说:抢占和非抢占。linux提供了抢占式的多任务模式,下一阶段谁得到CPU的执行时间由调度程序决定。这怎么决定,是不是请个客,喝个酒啥的。对不起,linux无情的说,我是开源的,对所有人公平,哥不吃这一套。我有自己的一套原则(策略,这个我们待会儿再讲)。接着来术语,上面的过程叫做抢占,进程得到CPU的执行机会这段时间叫时间片,是由系统定义好的。后面我们会看到

oracle运行机制

不问归期 提交于 2019-12-20 18:18:51
我们从一个用户请求开始讲,ORACLE的完整的工作机制是怎样的,首先一个用户进程发出一个连接请求,如果使用的是主机命名或者是本地服务命中的主机名使用的是机器名(非IP地址),那么这个请求都会通过DNS服务器或HOST文件的服务名解析然后传送到ORACLE监听进程,监听进程接收到用户请求后会采取两种方式来处理这个用户请求,下面我们分专用服务器和共享服务器分别采用这两种方式时的情况来讲: 专用服务器模式下: 一种方式是监听进程接收到用户进程请求后,产生一个新的专用服务器进程,并且将对用户进程的所有控制信息传给此服务器进程,也就是说新建的服务器进程继承了监听进程的信息,然后服务器进程给用户进程发一个RESEND包,通知用户进程可以开始给它发信息了,用户进程给这个新建的服务器进程发一个CONNECT包,服务器进程再以ACCEPT包回应用户进程,致此,用户进程正式与服务器进程确定连接。我们把这种连接叫做HAND-OFF连接,也叫转换连接。 另一种方式是监听进程接收到用户进程的请求后产生一个新的专用服务器进程,这个服务器进程选用一个TCP/IP端口来控制与用户进程的交互,然后将此信息回传给监听进程,监听进程再将此信息传给用户进程,用户进程使用这个端口给服务器进程发送一个CONNECT包,服务器进程再给用户进程发送一个ACCEPT包,致此,用户进程可以正式向服务器进程发送信息了

大数据面试题

房东的猫 提交于 2019-12-20 03:38:01
第一部分选择题 1. 下面哪个程序负责 HDFS 数据存储。 答案C DataNode a)NameNode b)Jobtracker c)DataNode d)secondaryNameNode e)tasktracker NameNode:负责调度,比如你需要存一个640m的文件 如果按照64m分块 那么namenode就会把这10个块(这里不考虑副本)分配到集群中的datanode上 并记录对于关系 。当你要下载这个文件的时候namenode就知道在哪些节点上给你取这些数据了。。。它主要维护两个map 一个是文件到块的对应关系 一个是块到节点的对应关系。(文件分成哪些块,这些块分别在哪些节点) 2. HDfS 中的 block 默认保存几份? 答案A默认3分 a)3 份 b)2 份 c)1 份 d)不确定 3. 下列哪个程序通常与 NameNode 在一个节点启动? 答案D a)SecondaryNameNode b)DataNode c)TaskTracker d)Jobtracker 此题分析: hadoop的集群是基于master/slave模式,namenode和jobtracker属于master,datanode和tasktracker属于slave,master只有一个,而slave有多个SecondaryNameNode内存需求和NameNode在一个数量级上

深入理解 Kubernetes 资源限制:CPU

懵懂的女人 提交于 2019-12-18 22:35:16
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在关于 Kubernetes 资源限制的系列文章的 第一篇文章 中,我讨论了如何使用 ResourceRequirements 对象来设置 Pod 中容器的内存资源限制,以及如何通过容器运行时和 linux control group( cgroup )来实现这些限制。我还谈到了 Requests 和 Limits 之间的区别,其中 Requests 用于在调度时通知调度器 Pod 需要多少资源才能调度,而 Limits 用来告诉 Linux 内核什么时候你的进程可以为了清理空间而被杀死。在这篇文章中,我会继续仔细分析 CPU 资源限制。想要理解这篇文章所说的内容,不一定要先阅读上一篇文章,但我建议那些工程师和集群管理员最好还是先阅读完第一篇,以便全面掌控你的集群。 1. CPU 限制 正如我在上一篇文章中提到的, CPU 资源限制比内存资源限制更复杂,原因将在下文详述。幸运的是 CPU 资源限制和内存资源限制一样都是由 cgroup 控制的,上文中提到的思路和工具在这里同样适用,我们只需要关注他们的不同点就行了。首先,让我们将 CPU 资源限制添加到之前示例中的 yaml: resources: requests: memory: 50Mi cpu: 50m limits: memory: 100Mi cpu

多CPU,多核,多进程,多线程以及进程和线程的简单理解以及区别

狂风中的少年 提交于 2019-12-17 04:14:02
当面临这些问题的时候,有两个关键词无法绕开,那就是 并行 和 并发 。 首先,要先了解几个概念:   1、进程是程序的一次执行。   2、进程是资源分配的基本单位。   3、一个进程可以包括多个线程。   4、在单CPU计算机中,有一个资源是 无法被多个程序并行使用的 :CPU。   5、操作系统调度器:拆分CPU 为一段段时间的运行片,轮流分配给不 同的程序。   6、操作系统内存管理模块:管理物理内存、虚拟内存相关的事务。   由于CPU同时刻只能执行一个进程,如果我们不加以控制的话,一个进程可能使用CPU直到运行结束,于是出现了操作系统调度器,而进程也成为了调度单位。   进程的运行不仅仅需要CPU,还需要很多其他资源,如内存啊,显卡啊,GPS啊,磁盘啊等等,统称为程序的执行环境,也就是程序上下文。   在这里就出现了 并发的概念,调度器切换CPU给不同进程使用的速 度非常快,于是在使用者看来程序是在同时运行,这就是并发,而实际上CPU在同一时刻只在运行一个进程。并发只是给人的假现象 ,原因就是由于cpu工作很快,不断地loop感觉是同时发生,实际都是单个执行的。   CPU进程无法同时刻共享,但是出现一定要共享CPU的需求呢?此时线程的概念就出现了。线程被包含在进程当中,进程的不同线程间共享CPU和程序上下文。(共享进程分配到的资源)   单CPU进行进程调度的时候,需要