首页 > 其他分享 >操作系统学习笔记

操作系统学习笔记

时间:2023-06-24 10:35:08浏览次数:62  
标签:协程 操作系统 调度 笔记 学习 算法 线程 切换 进程

进程线程区别 进程线程调度切换开销

进程和线程都是用于实现多任务的方式,但它们之间有很大的区别。

进程是程序执行过程中的一个实例,是操作系统进行资源分配的基本单位。每个进程都有自己的地址空间、内存、数据栈等,进程之间互相独立,彼此之间不能直接访问。可以说,进程是操作系统中的一个独立的个体,它拥有自己的生命周期,包括创建、运行和销毁。

线程是进程中的一个执行单元,是操作系统进行调度的最小单位。每个线程都运行在进程的上下文中,共享进程中的资源,包括地址空间、内存、数据栈等。线程之间可以共享数据,彼此之间可以直接访问。可以说,线程是进程中的一个工作单元,它共享进程的资源,但是拥有自己的执行路径和状态。

进程和线程在调度和切换开销方面也有很大的区别。由于每个进程都有自己的地址空间和资源,所以进程之间的切换需要保存和恢复大量的状态信息,因此进程的切换开销较大。而线程之间共享进程的资源,所以切换的开销比进程要小很多。此外,线程的创建和销毁也比进程要快很多,因为线程只需要创建和销毁线程栈和一些必要的数据结构,而不需要像进程那样创建和销毁整个进程空间。

总的来说,进程和线程虽然都用于实现多任务,但是进程和线程之间有很大的区别,包括资源分配、数据共享、调度和切换等方面的区别。对于不同的应用场景,我们需要选择不同的并发模型来实现。

多进程适用于计算密集型的场景,多线程适用于 I/O 密集型的场景。当然,在实际应用中,我们也可以使用多进程和多线程的组合来实现更好的效果,比如使用多进程+多线程的方式,或者使用多线程+协程的方式。

 多进程应用于图像处理、视频编解码、科学计算等。这是因为多进程可以发挥多核 CPU 的优势,同时可以让不同的进程在不同的 CPU 上并行执行,从而提高程序的运行效率。此外,由于每个进程都有自己独立的地址空间和资源,因此进程之间互相独立,不会出现因为共享数据导致的线程安全问题; 多线程适用于需要大量 I/O 操作或需要频繁切换任务的应用程序,比如网络服务器、Web 应用程序等。这是因为多线程可以在同一个进程内共享资源,从而避免了进程间通信的开销,同时可以减少线程切换的开销,提高程序的运行效率。此外,由于多线程共享同一进程的地址空间,因此线程之间可以直接访问共享数据,但是也需要注意线程安全的问题。  

协程(Coroutine)是一种比线程更轻量级的并发编程方式,它可以在单线程中实现并发的效果,并且可以避免线程切换的开销,从而提高程序的运行效率。

协程是一种用户态的线程,它是由用户程序自己控制的,而不是由操作系统控制。协程之间可以共享数据,彼此之间可以直接访问,不需要像线程之间那样进行加锁和解锁操作。协程的调度和切换是由用户程序自己实现的,通常可以使用生成器或 async/await 关键字来实现。

协程的主要优点包括:

  • 轻量级:协程比线程更轻量级,可以在单线程中实现并发的效果,减少线程切换的开销,提高程序的运行效率。
  • 高效性:由于协程之间共享数据,因此不需要像线程那样进行加锁和解锁操作,可以提高程序的运行效率。
  • 灵活性:协程可以根据需要随时暂停和恢复,可以自由地控制程序的执行流程,适用于很多复杂的应用场景。

协程的缺点主要在于:

  • 需要手动控制:协程需要用户程序自己控制调度和切换,因此需要一定的编程技巧和经验。
  • 难以调试:由于协程的执行流程比较复杂,因此在调试时比较困难,需要使用一些高级工具和技术。

总的来说,协程是一种比线程更轻量级的并发编程方式,可以在一些复杂的应用场景中发挥重要的作用,但是需要一定的编程技巧和经验,并且在调试时比较困难。

调度算法是操作系统中实现进程或线程调度的一种算法,它决定了系统如何选择下一个进程或线程执行。调度算法的主要目的是提高系统的资源利用率、响应时间、吞吐量等性能指标,同时也需要保证公平性、可靠性、可预测性等。

常见的调度算法包括以下几种:

  1. 先来先服务调度算法(FCFS):按照进程到达的先后顺序进行调度,先到达的进程先执行。优点是简单、公平,但是容易造成短作业等待长作业的情况,从而影响系统的响应时间。

  2. 最短作业优先调度算法(SJF):按照进程需要执行的时间长度进行调度,执行时间短的进程先执行。优点是可以最大限度地减少平均等待时间,但是需要预测进程的执行时间,容易受到长作业的影响。

  3. 优先级调度算法:为每个进程赋予一个优先级,按照优先级高低进行调度。优点是可以满足不同进程的不同需求,但是容易造成优先级倒挂、饥饿等问题。

  4. 时间片轮转调度算法(RR):将 CPU 时间分成多个时间片,每个进程轮流使用一个时间片,如果在时间片内没有执行完毕,则将进程挂起,等待下一轮调度。优点是可以保证公平性,但是需要选择合适的时间片长度,过长会降低响应时间,过短会增加上下文切换的开销。

  5. 多级反馈队列调度算法:将进程分成多个队列,每个队列有不同的优先级和时间片长度,进程根据自身的属性被分配到相应的队列中。优点是可以根据不同进程的属性分配不同的调度策略,但是需要合理设置多级队列的属性。

以上是常见的几种调度算法,不同的调度算法适用于不同的应用场景,需要根据具体情况选择合适的算法

标签:协程,操作系统,调度,笔记,学习,算法,线程,切换,进程
From: https://www.cnblogs.com/xiao-longxia/p/17500769.html

相关文章

  • opencv学习笔记(九)
    模板匹配:在模板匹配中,我们引入函数cv2.matchTemplate()函数来执行模板匹配的操作res=cv2.matchTemplate(image,template,method,result=None,mask=None)image:输入的源图像,可以是灰度图像或彩色图像。template:要匹配的模板图像,必须与源图像具有相同的数据类型和通道数......
  • Windows操作系统磁盘碎片整理程序的作用
    Windows操作系统磁盘碎片整理程序的作用是优化硬盘的存储和访问效率,提升系统的整体性能。磁盘碎片是指文件在硬盘上分散存储的情况,导致文件的不连续存储,从而增加了文件读取和写入的时间。磁盘碎片整理程序通过重新组织文件的存储位置,将文件片段整理成连续的空间,以减少磁盘访问的时......
  • CF1418G Three Occurrences 做题笔记
    题目链接题意是输出所有区间满足其内部每个数要么出现$3$次要么不出现的个数。因为是区间,数量很多,发现贡献是可以抵消的,直接无脑预处理前缀的桶。然后枚举左端点,统计答案,怎么处理呢?疯狂地向右扩展,直到区间内有数字出现了$3$次以上(这样是对的,待会儿证明,另外扩展到前一个就......
  • WPF 入门笔记 - 06 - 命令
    我们把世界看错,反说它欺骗了我们。--飞鸟集前言相较而言,命令对我来说是一个新概念,因为在Winform中压根没有所谓的命令这个概念......
  • P9400 「DBOI」Round 1 三班不一般 做题笔记
    题目链接最近搬运一些洛谷上的题解到这里来,一是增加我的博文数量,二是缓解一下我的博客园冷清的气氛。我的做法和题解里的做法不一样,麻烦了许多。首先看到连续的几盏灯刺眼就不行了,当然能够想到动态规划,设$f[i][j]$为看到第$i$个宿舍,末尾有连续$j$个灯刺眼,且前面的灯都合......
  • P8026 [ONTAK2015] Bajtocja 做题笔记
    题目链接一道好题,本来是做几道启发式合并玩玩,没想到是个哈希。这一道题需要维护连通性,显然想到使用并查集。如果两个点在某个图内的父亲相同,显然这两个点就连通了。但是如果每链接一对点我们就遍历所有点对然后判断父亲,显然爆炸。于是考虑借鉴一下CSP2022T3的思路,对于每......
  • P8026 『JROI-7』hibernal 做题笔记
    题目链接观察数据,要求询问次数不超过$\lceil2\logn\rceil-1$,相当困难。我刚开始也在想二分,但这个东西并不具有单调性,但这个题具有的特点就是你不仅仅可以询问一个前缀,你还可以询问任意的集合。首先发现如果能将$n$个苹果分成$S_1$$S_2$两个长度接近的集合,且$S_1$和$S......
  • 读发布!设计与部署稳定的分布式系统(第2版)笔记10_自动化和缓慢的响应
    1. 工业机器人1.1. 具有多层防护措施,防止对人员、机器和设施造成损害1.2. 防护措施能限制机器人的动作和传感器的感知1.3. 机械臂的旋转范围会远远小于它可以达到的全部运动范围2. 自动化2.1. 它更像是工业机器人2.1.1. 掌握控制层感知系统的当前状态2.1.2. 将其......
  • 软测笔记2-【五大用例设计方法】
    用例设计方法测试用例:是为测试项目而设计的执行文档->作用:防止漏测,实施测试的标准1、等价类划分法:    在所有测试数据中,具有某种共同特征的数据集合进行划分分类:a.有效等价类:满足需求的数据集合b.无效等价类:不满足需求的数据集合使用步骤:......
  • 软测笔记3-【缺陷】
    缺陷1.缺陷:软件在使用过程中存在的任何问题都叫软件的缺陷,简称bug 2.缺陷的判定标准:a.软件未实现需求(规格)说明书中明确要求的功能(少功能)b.软件实现的功能超出需求(规格)说明书指明的范围(多功能)c.软件出现了需求(规格)说明书中指明不应该出现的错误(功能......