你知道 Goroutine 是怎么来的吗?Go编程时光关注共 1335字,需浏览 3分钟 ·2021-05-25 20:49 超超为了让女朋友婷婷过上幸福美满的生活,决定去大厂历练一番,下面是他在面试过程中关于操作系统的几个问题单进程系统超超:面试官,您好~面试官:你好呀,我们来简单聊会,你们平时是在Linus还是Windows上进行开发?超超:我们用的是基于unix的macOS(:哈哈面试官:Linux也是基于unix开发的,那我们来聊一下操作系统的发展历程吧,你知道单道批处理系统吗?考点:单道批处理系统超超:这个知道的,单道批处理系统内存中始终只保持一道作业,cpu只能将内存中作业执行完毕,才能执行下一道作业,进程之间串行执行,A、B、C三个进程按顺序执行单道批处理系统不用考虑并发问题,程序设计较为简单,但是每次只能执行一个进程功能过于单一,且当进程存在大量IO操作时,会造成CPU资源的浪费。分时系统面试官:那你知道分时系统的机制吗?考点:多进程程序超超:知道的,分时系统引申出了时间片的概念,进程按照调度算法分时间片在CPU上执行,A、B、C三个进程按照时间片并发执行这样做有俩个优点,一是对于单个核可以并发执行多个进程,应用场景更加丰富,二是当某个进程是IO密集型进程时,也能保证CPU的利用率。但是随着时代的发展,CPU通过进程来进行调度的缺点也越发的明显。大量的进程切换,创建和销毁,将浪费大量的CPU资源。如果一个程序比较复杂,那么大量的进程之间通讯也会给系统带来负担。面试官:那后来进行了怎样的改进了?考点:多线程超超:后来引入了线程的概念,在进程的基础上再细分出线程,线程比进程更轻量,线程之间的通信也更为便捷,任务的最小载体变成了线程。这样一来当一个进程中有线程阻塞时,不妨碍其他线程的执行。并且内核级线程只有很小的数据结构和堆栈,切换速度快。面试官:你刚刚提到了内核级线程,那你知道内核级线程和用户级线程的区别吗?考点:线程知识点广度超超:嘿嘿,这个我也研究过的用户线程:刚有线程概念时,线程只能在用户态中执行,因此线程的调度由用户态进程中的调度器执行,对于内核来说调度的仍是进程,因此如果一个进程中的某一个线程发生阻塞,那么整个进程中的线程都无法执行。内核线程:后来线程的技术逐步成熟,则在内核中添加了内核级线程,此时CPU调度的最小单位就变为线程。协程面试官:嗯,不错!那线程这么好,为什么我们还要引入协程呢?考点:协程超超:随着时代的发展,为每个任务都创建一个线程是不现实的,因为会消耗大量的内存(进程虚拟内存会占用4GB[32位操作系统], 而线程也要大约4MB)。同时多线程也会给内核的调度管理带来巨大的压力。基于线程所占空间较大和内核调度压力大这俩个缺点,可以将线程做的更加轻量级,因此将协程抽象成线程,并在用户空间做协程的管理,减小内核的压力。协程占用的内存更小(几kb),而线程通常需要4M。并在用户层再封装一次调度,减轻内核负担。 喜欢明哥文章的同学欢迎长按下图订阅!⬇⬇⬇ 浏览 64点赞 评论 收藏 分享 手机扫一扫分享分享 举报 评论图片表情视频评价全部评论推荐 你是怎么来的你是怎么来的0你是怎么来的你不可能坐在沙发上平心静气地读完这本书 全面揭示所有人体缺陷的秘密和根源 继霍金的《时间你知道中国镖局是怎么诞生的吗?镖户走镖是镖局诞生前的主要走镖形式,与商业的产生和发展是基本一致的。镖户走镖纯属私人行为,受地域和声天天看统计数据,知道数据是怎么来的吗产品的技术小课0我知道你是怎么剩下的我知道你是怎么剩下的0【32期】你知道Redis的字符串是怎么实现的吗?程序员的成长之路0我知道你是怎么剩下的《剩女宝典系列:我知道你是怎么剩下的+炼爱有道+女人由爱到恨(套装共4册)》内容简介:《我知道你是怎你是怎么知道那么多书的?程序视界0你知道这20个数组方法是怎么实现的吗?web前端开发0Web:你知道我这十几年是怎么过来的吗?!前端宇宙0点赞 评论 收藏 分享 手机扫一扫分享分享 举报