2024年9月进程调度和线程调度(进程与线程)

 更新时间:2024-09-21 08:18:07

  ⑴进程调度和线程调度(进程与线程

  ⑵经典定义:.进程是可以并发执行的计算部分

  ⑶进程的五个特性.动态性:创建时产生,由调度而执行,得不到资源而暂停执行,有撤销而消亡.并发性:多个进程实体同存于主存中(引入进程的目的,程序是不能并发执行的.独立性:进程实体是一个能独立运行的基本单位,也是系统中获得资源和独立调度的基本单位.异步性:进程按各自独立的,不可预知的速度向前推进(导致程序执行的不可再现性.结构特征:进程实体是由程序段、数据段、进程控制块三部分构成,又称进程映像/进程上下文(context进程的基本状态

  ⑷有些还存在两个额外状态:新状态和终止状态

  ⑸进程控制块PCB.概念:是操作系统用于记录和刻画进程状态及有关信息的数据结构,也是操作系统控制和管理进程的主要依据。

  ⑹原语:一组系统命令要么全部执行,要么不执行,不存在中间状态

  ⑺$$进程创建begin{cases}& ext{系统生成时,会创建一些系统进程(用来分配系统资源和管理工作}& ext{用户作业,由操作系统的作业调度程序为之创建相应的进程}end{cases}$$

  ⑻既可撤销具有指定标识符的过程,又可撤销一个优先级中的所有进程.一个进程被撤销时,必须从系统队列中移出,释放并归还所有系统资源,同时也有审查是否有子孙进程,如果有子孙进程也有一起予以撤销

  ⑼当一个进程出现等待事件时,该进程调用阻塞原语将自己阻塞

  ⑽必要性:解决多个进程争夺少数CPU资源的问题.功能:(记录系统中所有进程的执行情况(选择占有CPU的进程(CPU分配给进程,即进行进程上下文切换(回收CPU.进程调度算法先来先服务/FCFS按照进程进入就绪队列的先后次序选择占用处理器的进程

  ⑾优先数调度算法为每个进程确定一个优先数,进程调度总是让具有最高优先数的进程先使用处理器(若优先数相同则采用FCFS

  ⑿时间片轮转调度算法CPU处理时间分成固定大小的时间片,轮流来,如果时间片用完进程还未结束,也得重新排到就绪队列的末尾等待再次调度

  ⒀时间片q的选择:q=R/N(R是系统对响应时间的要求;N是进程数)

  ⒁多级反馈队列调度算法/MLFQ设置多个就绪队列各个队列的优先权不同(第一个队列的优先权最高,逐个降低)各个队列的时间片大小不同(优先权越高的队列时间片越小当前队列的某个进程在时间片内没有完成就进入下一个队列的末尾当某个队列为空时才会调度下一个队列处理机在第i队为谋进程服务时,如果有新进程进入优先权较高的队列(i之前,则处理机就去处理i之前的那个新进程了,正在运行的进程被放到i队伍的末尾(可怜哈哈哈哈

  ⒂调度算法的选择(处理器利用率(尽量让CPU处于忙碌状态(吞吐量(等待时间(尽可能减少(响应时间(尽可能减少

  ⒃进程互斥:若干个进程要使用一个共享资源,任何时刻只允许一个进程去使用,其他要使用的进程必须等待,直到那个进程使用完后释放资源.进程互斥的管理办法:PV操作管程

  ⒄进程同步:并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到达时才被唤醒

  ⒅$$进程通信begin{cases}低级& ext{PV操作}高级begin{cases}共享存储器系统消息传递系统管道通信系统end{cases}end{cases}$$

  ⒆基于共享数据结构的通信方式在这种通信方式中,要求诸进程公用某些数据结构,进程通过它们交换信息。这种通信方式是低效的,只适于传递少量数据。.基于共享存储区的通信方式为了传输大量数据,在存储器中划出了一块共享存储区,诸进程可通过对共享存储区中的数据进行读或写来实现通信。这种通信方式属于高级通信。

  ⒇消息传递系统中,进程间的数据交换以消息为单位

  ⒈管道,是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件,又称为pipe文件.为了协调双方的通信,管道通信机制必须提供以下三方面的协调能力:(互斥;(同步;(对方是否存在。

  ⒉需要线程的目的:保持系统的并发性.为了减少额外开销,系统把进程的资源申请与调度执行分开,线程是调度的基本单位,进程是资源申请与拥有的基本单位.概念:线程(Thread是进程中的一个实体,是可独立参与调度的基本单位.属性:并发一个线程可以创建另一个动态性(生命周期TCB(进程是PCB同一进程内的线程共享同一地址空间一个进程的线程对另外一个进程是不可见的线程的通信是基于全局变量进行的.状态(与进程类似

  ⒊时间片轮转算法优先权算法

  ⒋进程作为资源的申请与拥有单位,线程作为调度的基本单位.线程在调度和切换上所花费的开销比进程小得多.进程是独立拥有资源的的一个基本单位,线程只拥有一点点运行中必要的资源.进程作为独立拥有资源的基本单位,线程是独立参与调度的基本单位

  ⒌概念:死锁是多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再向前推进$$产生原因begin{cases}竞争资源进程推进顺序非法(请求与释放资源顺序不当end{cases}$$

  ⒍$$产生死锁必要条件begin{cases}互斥条件(进程互斥使用资源占有且等待条件(得不到需要的资源就不释放占有的资源不剥夺条件(进程不能从另一进程抢夺资源循环等待条件(每个进程都在等待另一个进程所持有的资源end{cases}$$

  ⒎对策:预防避免检测解除预防(静态分配策略//破坏第二个必要条件所谓静态分配是指一个进程必须在执行前就申请它所要的全部资源,并且直到它所要的资源都得到满足后才开始执行(层次分配策略//破坏第四个必要条件当一个进程获得了某一层的一个资源后,它想再申请该层中的另一个资源,必须先释放该层中的已占用资源。

  ⒏检测操作系统中的每一时刻的系统状态都可以用进程—资源分配图来表示,进程—资源分配图是描述进程和资源间申请及分配关系的一种有向图,可用以检测系统是否处于死锁状态。

  ⒐什么是进程和线程区别

  ⒑进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元。

  ⒒同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文,一个进行至少包括一个线程。

  ⒓进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束。

  ⒔线程有自己的私有属性TCB,线程id,寄存器、硬件上下文,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志。

  ⒕进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

  ⒖线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

  ⒗在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

  ⒘线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win线程;由用户进程自行调度的用户线程,如Linux平台的POSIXThread;或者由内核与用户进程,如Windows的线程,进行混合调度。

  ⒙进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。

  ⒚通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。

  ⒛动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。

  并发性:任何进程都可以同其他进程一起并发执行

  独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;

  异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进

  结构特征:进程由程序、数据和进程控制块三部分组成。

  多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。

  linux进程、线程及调度算法(三

  调度策略值得是大家都在ready时,并且CPU已经被调度时,决定谁来运行,谁来被调度。

  两者之间有一定矛盾。响应的优化,意味着高优先级会抢占优先级,会花时间在上下文切换,会影响吞吐。上下文切换的时间是很短的,几微妙就能搞定。上下文切换本身对吞吐并多大影响,重要的是,切换后引起的cpu的cachemiss.每次切换APP,数据都要重新load一次。Linux会尽可能的在响应与吞吐之间寻找平衡。比如在编译linux的时候,会让你选择kernalfeatures-》Preemptionmodel.抢占模型会影响linux的调度算法。

  所以ARM的架构都是big+LITTLE,一个很猛CPU+多个性能较差的CPU,那么可以把I/O型任务的调度放在LITTLECPU上。需要计算的放在big上。

  早期.内核将优先级划分了-bit的优先级。数值越低,优先级越高。-优先级都是RT(即时响应的,-都是非RT的,即normal。调度的时候看哪个bitmap中的优先级上有任务ready。可能多个任务哦。

  在普通优先级线程调度中,高优先级并不代表对低优先级的绝对优势。会在不同优先级进行轮转。就是比高,也会比高,但不会堵着。众屌丝进程在轮转时,优先级高的:

  初始设置nice值为,linux会探测你是喜欢睡眠,还是干活。越喜欢睡,linux越奖励你,优先级上升(nice值减少。越喜欢干活,优先级下降(nice值增加。所以一个进程在linux中,干着干着优先级越低,睡着睡着优先级越高。

  后期linux补丁中

  红黑树,数据结构,左边节点小于右边节点同时兼顾了CPU/IO和nice。数值代表着进程运行到目前为止的virtualruntime时间。

  (pyhsicalruntime/weight*(系数)。优先调度节点值(vruntime最小的线程。权重weight其实有nice来控制。

  一个线程一旦被调度到,则物理运行时间增加,vruntime增加,往左边走。weight的增加,也导致vruntime减小,往右边走。总之CFS让线程从左滚到右,从右滚到左。即照顾了I/O(喜欢睡,分子小)也照顾了nice值低(分母高.所以由喜欢睡,nice值又低的线程,最容易被调度到。自动调整,无需向nice一样做出奖励惩罚动作,个人理解权重其实相当于nice

  但是此时来一个-的线程,进行RT调度,都可以瞬间秒杀你!因为人家不是普通的,是RT的!

  一个多线程的进程中,每个线程的调度的策略如fiforrnormal,都可以不同。每一个的优先级都可以不一样。实验举例,创建个线程,同时开个:

  运行次,创建两个进程sudorenice-n-(nice-级别)-g(global),会明显看到一个进程的CPU占用率是另一个的倍。

  为什么cpu都已经达到%,为什么系统不觉得卡呢?因为,我们的线程在未设置优先级时,是normal调度模式,且是CPU消耗型调度级别其实不高。

  利用chrt工具,可以将进程调整为从normal的调度策略升为RT(fifo级别的调度策略,会出现:

  chrt,nicerenice的调度策略都是以线程为单位的,以上设置的将进程下的所有线程进行设置nice值线程是调度单位,进程不是,进程是资源封装单位!

  两个同样死循环的normal优先级线程,其中一个nice值降低,该线程的CPU利用率就会比另一个CPU的利用率高。

  进程与线程之间的关系和区别及CPU调度

  进程和线程有什么区别

  进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

  线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

  在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

  线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win线程;由用户进程自行调度的用户线程,如Linux平台的POSIXThread;或者由内核与用户进程,如Windows的线程,进行混合调度。

  进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。

  通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。

  进程是由进程控制块,程序段,数据段三部分组成。一个进程可以包含若干线程(Thread),线程可以帮助应用程序同时做几件事(比如一个线程向磁盘写入文件,另一个则接收用户的按键操作并及时做出反应,互相不干扰)。

  在程序被运行后,系统首先要做的就是为该程序进程建立一个默认线程,然后程序可以根据需要自行添加或删除相关的线程。是可并发执行的程序。

  在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位,也是称活动、路径或任务,它有两方面性质:活动性、并发性。

  进程可以划分为运行,阻塞,就绪三种状态,并随一定条件而相互转化,就绪运行,运行阻塞,阻塞就绪。

  进程为应用程序的运行实例,是应用程序的一次动态执行。看似高深,我们可以简单地理解为:它是操作系统当前运行的执行程序。

  在系统当前运行的执行程序里包括:系统管理计算机个体和完成各种操作所必需的程序;用户开启、执行的额外程序,当然也包括用户不知道,而自动运行的非法程序(它们就有可能是病毒程序。

  进程和线程的区别以及联系

  进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。、线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。区别与联系:(一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别的最小执行和调度单位。(资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。(处理机分给线程,即真正在处理机上运行的是线程。(线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。

  线程和进程的区别是什么

  进程与线程的区别?进程与线程的区别方法进程:指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。进程一般有三个状态:就绪状态、执行状态和等待状态【或称阻塞状态】;进程只能由父进程建立,系统中所有的进程形成一种进程树的层次体系;挂起命令可由进程自己和其他进程发出,但是解除挂起命令只能由其他进程发出。由程序段、相关的数据段和PCB三部分构成了进程实体(又称进程印像,一般,我们把进程实体就简称为进程。进程的特征:.动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的。.并发性:任何进程都可以同其他进程一起并发执行。.独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。.异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。线程:线程是进程中的一个实体,作为系统调度和分派的基本单位。Linux下的线程看作轻量级进程。线程的性质:.线程是进程内的一个相对独立的可执行的单元。若把进程称为任务的话,那么线程则是应用中的一个子任务的执行。.由于线程是被调度的基本单元,而进程不是调度单元。所以,每个进程在创建时,至少需要同时为该进程创建一个线程。即进程中至少要有一个或一个以上的线程,否则该进程无法被调度执行。.进程是被分给并拥有资源的基本单元。同一进程内的多个线程共享该进程的资源,但线程并不拥有资源,只是使用他们。.线程是操作系统中基本调度单元,因此线程中应包含有调度所需要的必要信息,且在生命周期中有状态的变化。.由于共享资源【包括数据和文件】,所以线程间需要通信和同步机制,且需要时线程可以创建其他线程,但线程间不存在父子关系。

  线程与进程的区别和联系

  简述线程与进程的区别及优缺点

  进程优点:每个进程互相独立,不影响主程序的稳定性,子进程崩溃没关系;

  缺点:需要跨进程边界,如果有大数据量传送,就不太好,适合小数据量传送、密集运算多进程调度开销比较大。

  线程优点:无需跨进程边界;

  缺点:每个线程与主程序共用地址空间,受限于GB地址空间;

  操作系统资源管理方式区别

  进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。

  在操作系统中能同时运行多个进程(程序;而在同一个进程(程序中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行

  系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源,线程组之间只能共享资源。

  请简要总结,进程和线程之间的区别!!!!

  进程和线程的区别和联系.进程有自己独立的地址空间;而线程共享进程的地址空间;.一个程序至少有一个进程,一个进程至少有一个线程;.线程是处理器调度的基本单位,但进程不是;.二者均可并发执行多线程比多进程成本低,但性能更低。在UNIX环境,多进程调度开销比多线程调度开销,没有显著区别,就是说,UNIX进程调度效率是很高的。内存消耗方面,二者只差全局数据区,现在内存都很便宜,服务器内存动辄若干G,根本不是问题。多进程是立体交通系统,虽然造价高,上坡下坡多耗点油,但是不堵车。多线程是平面交通系统,造价低,但红绿灯太多,老堵车。

您可能感兴趣的文章:

相关文章