操作系统里的秘密生活:为什么你的电脑能同时“打游戏”和“听音乐“

目录

一、操作系统

二、进程:一个独立的小工厂

三、线程:工厂里的工人小队

四、进程与线程的区别和联系

五、多任务/多线程

六、总结

补充:操作系统和CPU的关系


你有没有想过为什么,你的电脑可以一边放音乐,一边让你打字,还能后台下载文件?它真的在同时做这么多事吗?

把电脑比作一个大工厂,操作系统是厂长,而“进程”和“线程”就是工厂里的工人,分工协作完成任务。

那么,操作系统,线程,进程分别是什么呢?接着走下去吧。


一、操作系统

操作系统(Operation System,简称OS)是计算机系统的核心软件,它管理计算机硬件和资源资源,并为用户和应用程序提供一个统一的接口和服务。

简单来说,操作系统是一个大管家,负责管理电脑的硬件(CPU、内存、硬盘等)和协调所有软件的工作

补充一下软件和硬件的定义,也算是给自己一些拓展:

  1. 软件,是计算机系统的逻辑部分,由一系列指令和数据组成,用于指导硬件执行特定的任务。软件是”看不见、摸不着“的,但是可以通过硬件来执行
  2. 硬件,是计算机系统的物理部分,由电子和机械设备组成。它是计算机的基础设施,负责执行软件指令并处理数据。硬件是”看得见、摸得着“的物理设备

操作系统通过驱动程序,间接地管理硬件设备。而对于所有的硬件设备都是这样,系统通常会内置一些通用的驱动程序。同时,操作系统也给各种应用,提供一个稳定的运行程序,这些应用程序,工作过程中,互不干扰。

还是以厂长为例,操作系统就像是厂长,指挥工人如何分配机器资源,调节生产速度,避免工人打架抢工具。

一句话总结:没有操作系统,电脑就像是一堆废铁,啥也干不了!


二、进程:一个独立的小工厂

一个运行起来的程序,就可以称为进程(Process)

  • 每个进程就像是一个独立的小工厂,负责完成一个任务(比如运行微信,打开浏览器)。
  • 每个小工厂都有自己的车间(内存空间),互不干扰

现在的计算机同时跑个百来十个进程,很常见。而操作系统就需要能够很好地管理上述进程。

生活中的例子:比如现在是在一边听音乐一边看着博客,播放音乐的工厂和看博客的工厂,他们的工具(资源)分开存放,避免冲突

管理进程

站在操作系统的视角,如何管理进程

1.先描述一个进程是什么样的

  • 使用结构体,描述进程的核心属性
  • 同时也会使用进程控制块(PCB),非常大的结构体,有很多属性

2.再把多个进程组织起来

比如,像是Linux这样的操作系统,使用链表(不一定是一个链表)这样的形式,把多个PCB串到一起。


三、线程:工厂里的工人小队

通过多进程编程的方式,可以实现“并发编程”效果。但进程是一个比较“重”的概念,创建进程、销毁进程的开销比较大,尤其是频繁的进程销毁。

为了应对上面的问题,引入了线程(Thread),轻量级进程。

  • 一个进程里(小工厂)里有多个线程(工人小队),共同完成更高效的任务。
  • 工人小队共享车间资源(同一个进程的内存),能够快速协作。

进程包含线程,每个进程重,都会包含一个或多个线程。不过下面这张图里看不到线程,只是正在运行的程序和系统进程。

进程是操作系统资源分配的基本单位:

  1. 对于线程来说,只要第一个线程创建的时候(和进程一起创建的时候)申请资源,后续在创建线程,不涉及资源申请操作(干的事更少,就更快)。
  2. 只有所有的线程都销毁(进程销毁)才真正释放资源,运行过程重销毁某个线程,也不会释放资源。
  3. 进程和线程之间,所涉及到的资源则是各自独立的,彼此之间互不干扰。

生活中的例子

  • 浏览器开多个标签页:一个工厂(浏览器进程)里,工人1加载网页,工人2播放视频。
  • 游戏运行时:一个线程负责画面渲染,另一个线程处理键盘操作。

小问题:电脑死机时,厂长(操作系统)最可能让哪个工人背锅?

A、最安静的工人(比如系统后台的“空闲进程”)

B. 穿得最花哨的工人(比如桌面壁纸软件)

C. 最贪吃的工人(疯狂占用CPU和内存的进程)

答案在博客最后。


四、进程与线程的区别和联系

特点进程线程
资源占用独立内存,占用多资源共享内存,资源消耗小
切换速度慢(搬家效率低)快(同一车间协作快)
容错性崩溃不影响其他进程崩溃会搞垮整个工厂

五、多任务/多线程

单任务的痛苦

早年电脑(如DOS系统)”单任务“操作系统,同一时刻,只能进行一个进程,想要进行下一个进程,就得结束上一个进程。

试想一下,我要和女朋友聊天,就不能跳转到其他页面(像是去Word里打字),否则就收不到消息。效率低下,无法满足人类多任务操作的自然需求。

多任务的技巧

CPU时间片是电脑唯一的“双手”,无法真正同时做两件事。

CPU时间片的定义:

CPU时间片是操作系统分配给进程/线程使用CPU的时间段,用来在多个任务之间公平分配合法抢答权。

它像是食堂排队时每个人只能打饭10s,轮到你时才能用CPU,超时就被强制换人 。

其实也引出了实现多任务的关键技巧:分时复用。

  1. 把一个单位时间分成很多份,第一份运行进程1的指令,第二份进行进程2的指令……
  2. CPU运行的速度足够快,上述的切换过程,也会非常快,超出人类的反应时间,让人感觉起来好像这些进程像是在“同时执行”一样。
  3. 在一个CPU核心上,按照分时复用,执行多个进程这样的方式,称为“并发执行”。
  4. 多个CPU核心上,同时执行多个进程这样的方式,称为“并行执行”,也确实是“同时执行”。
  5. 现代CPU在运行这些进程的时候,并行和并发是同时存在的。

多线程的意义

如果一个工厂只能一个工人干活(单线程),下载文件时就会卡住不懂,能把我急得没脾气。

像是客户端 b站 视频播放 弹幕滚动就是使用了多线程。


六、总结

本文中,通过工厂的类比了解操作系统,进程和线程以及它们之间的关系。理解了线程和进程,我们能够指导电脑卡顿的元凶——可能时某个小工厂(进程)在疯狂加班。

小问题的答案是:C. 最贪吃的工人(疯狂占用CPU和内存的进程)

死机通常是因为某个进程(贪吃的工人)过度消耗资源(CPU爆满或内存不足),导致操作系统无法调度其他任务。

A(最安静的工人)
空闲进程其实不会占用资源,厂长反而会优先让其他工人使用资源

B(穿得最花哨的工人)

桌面美化工具虽然外观“花哨”,但如果占用资源合理,并不会导致死机。


补充:操作系统和CPU的关系

核心组件操作系统(OS)CPU
身份定位资源经理:管理硬件、调度任务的软件执行者:执行指令和计算的硬件芯片
核心功能分配内存、硬盘、CPU时间片,防止程序“打架”快速运算(加法、逻辑判断、数据移动)
协作核心指挥CPU干活只听OS指挥

评论 47
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值