[面试直通版]操作系统核心之进程、线程与协程(下)_操作系统中线程的提出(2)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

线程是什么

进程与线程的关系

用户态/内核态

操作系统资源管理

内核态

用户态

内核态/用户态切换

程序运行类型分析

计算密集型

IO密集型

结合进程,线程来理解

程序运行类型分析

协程基础

上下文切换

协程

协程为什么叫协作式线程?

协程的优缺点


  • 操作系统线程

  • 典型问题:
  • 简述进程和线程的区别
  • 以下内容带您一步步了解
    • 线程是什么
  • 比进程更小的独立运行的基本单位-线程(Threads)
  • 线程的提出主要是为了提高系统内程序并发执行的程度,从而进一步提升系统的吞吐量,充分发挥多核CPU的优越性而设计的
  • 引入进程是为了操作系统更加方便地管理程序,使得多个程序能并发管理和执行
  • 而线程则是为了减少程序在并发执行时的开销,并且提高程序内程序并发执行的程度
  • 从从属关系来看,一个进程对应多个线程,线程是从属于某一进程的
  • 线程的一大特点
  • 轻装上阵
  • 在一些地方称其为轻量级进程
  • 不管在调度,切换,运行都比进程更加轻量
  • 线程是操作系统进行运行调度的最小单位
  • 包含在进程之中,是进程中实际运行工作的单位
  • 一个进程可以并发多个线程,每个线程执行不同的任务
  • 线程强调的是运行
  • 进程强调的是资源分配
    • 进程与线程的关系
  • 进程的线程共享进程资源
  • 因为操作系统在进行资源分配时并不是以线程为单位的,而是以进程为单位
  • 线程本身是不拥有资源的
    • 用户态/内核态

  • 典型问题:
  • 简述操作系统的内核态
  • 简述进程什么时候进入内核态
  • 以下内容带您一步步了解
    • 操作系统资源管理
  • 有处理器资源,IO设备资源,存储器资源,文件资源等等
  • 这些资源都是交给操作系统去直接管理的,用户是不能直接接触到的,都是通过操作系统提供的接口来处理的
  • 为了屏蔽用户可能对计算机所造成的影响,操作系统就把操作系统的状态分为内核态和用户态2个部分
  • 关键的程序就运行在内核态
  • 用户所编写的程序在没有必要的情况下一般都是运行在用户态
  • 以Linux作为例子
  • Linux设计的哲学
  • 对不同的操作赋予不同的执行等级
  • 与系统相关的一些特别关键的操作必须由最高特权的程序来完成
    • 内核态
  • 内核是操作系统的内部核心程序,它向外部提供了对计算机设备的核心管理调用
  • 我们将操作系统的代码分成2部分
  • 内核所在的地址空间称作内核空间
  • 内核空间:存放的是内核代码和数据
  • 内核态一般指的是运行在内核空间的程序和代码的状态
  • 当执行到内核空间的一段代码时,我们称程序处于内核态
  • 内核态下的程序可以访问所有资源和设备
    • 用户态
  • 在内核以外的统称为外部管理程序,它们大部分是对外围设备的管理和界面操作
  • 外部管理程序与用户进程所占据的地址空间称为用户(外部)空间
  • 当程序执行到外部空间代码时,我们称程序处于用户态
  • 在此状态下,执行的代码被硬件限定,不能进行某些操作,以防止给操作系统带来安全隐患
    • 内核态/用户态切换
  • 从用户态切换到内核态主要有3种情况:
  • 系统调用
  • 操作系统管理资源时为我们提供了很多接口,通过这些接口就可以操作这些资源
  • 这些接口就可以理解为系统调用
  • 所有用户程序都是运行在用户态,但是有时候这些用户态的程序也需要做一些内核态的事情
  • 比如说从硬盘读取数据,从网卡里读写数据,这些都只能由操作系统来完成
  • 这时就要通过系统调用的操作来把这些工作交给操作系统去执行
  • 进行了系统调用后,当前用户程序就会由用户态切换到内核态去执行
  • 当系统调用完成后,会返回数据,用户态程序拿到数据后,它又返回到用户态来继续执行
  • 异常中断
  • 如CPU在执行用户态程序时突然发生了一些不可预知的事件如内存不存在,当前访问程序出现异常等
  • 异常只能由操作系统去管理,这时进程就会由用户态切换到内核态,让操作系统去处理相关异常事件
  • 外围设备中断
  • 在读写外围设备时,如果说外围设备在完成工作之后,它可以给CPU发出中断信号,可以暂停当前需要执行的指令,转而去执行中断信号对应的处理程序
  • 如暂停当前需要执行的指令的程序是用户态的程序的话,那么它处理外围设备中断时就会转为内核态去执行
  • 著名事件Intel meltdown漏洞
  • 就是由于通过漏洞跳过以上3种步骤进行了切换,越权,使得用户程序也可以拥有最高的执行权限
    • 程序运行类型分析

  • 典型问题:
  • 举例说明什么是IO密集型任务
  • IO密集型任务部署时,应该注意什么
  • 以下内容带您一步步了解
    • 计算密集型
  • 也称为CPU密集型
  • 完成一项任务的时间取决于CPU的速度
  • 特点:
  • CPU利用率高,并且运行时很可能导致别的程序处理慢的情况
  • 对处理器资源(高频使用)要求很高,对于其它资源(低频使用)要求较低
  • 计算1024000的阶乘就是典型的计算密集型的任务
    • IO密集型
  • 完成一项任务的时间取决于IO设备的速度

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 18
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值