操作系统,揭开钢琴的盖子-1

C++软件与嵌入式软件面经解析大全(蒋豆芽的秋招打怪之旅)


本章讲解点

  • 1.1 操作系统的来历
  • 1.2 操作系统的功能
  • 1.3 操作系统的硬件知识
  • 1.4 linux下编译程序
  • 1.5 Makefile
  • 1.6 linux的常用指令
  • 1.7 进程的概念
  • 1.8 进程的状态转换
  • 1.9 进程的创建
  • 1.10 守护进程
  • 1.11 僵尸进程与孤儿进程
  • 1.12 wait()或waitpid()系统调用
  • 1.13 进程通信——管道
  • 1.14 进程通信——系统IPC
  • 1.15 进程通信——socket套接字
  • 1.16 线程
  • 1.17 线程的创建
  • 1.18 线程通信——互斥锁
  • 1.19 线程通信——信号量
  • 1.20 线程通信——条件变量
  • 1.21 线程通信——读写锁
  • 1.22 线程池
  • 1.23 协程
  • 1.24 虚拟内存
  • 1.25 页表
  • 1.26 缺页中断
  • 1.27 缺页置换算法
  • 1.28 锁
  • 1.29 操作系统资源调度方法
  • 1.30 IO模型类型

受众:本教程适合于C/C++已经入门的学生或人士,有一定的编程基础。

本教程适合于互联网嵌入式软件求职的学生或人士。

img

故事背景

img

蒋 豆 芽:小名豆芽,芳龄十八,蜀中人氏。卑微小硕一枚,科研领域苟延残喘,研究的是如何炒好一盘豆芽。与大多数人一样,学习道路永无止境,间歇性踌躇满志,持续性混吃等死。会点编程,对了,是面对对象的那种。不知不觉研二到找工作的时候了,同时还在忙论文,豆芽都秃了,不过豆芽也没头发啊。

隔壁老李:大名老李,蒋豆芽的好朋友,技术高手,代码女神。给了蒋豆芽不少的人生指导意见。

导 师:蒋豆芽的老板,研究的课题是每天对豆芽嘘寒问暖。

img

故事引入

img

导 师:疫情在家,一定不要到处跑,注意安全知道吗?待在家里就好好写论文。

蒋 豆 芽:好的!(豆芽心里小感动,老师真的很关心我们的好吗)


蒋 豆 芽:(焦急)老李,我最近电脑坏了呀!可怎么办?完了!我论文一大堆东西都在里面!

隔壁老李:(疑惑)豆芽,你作为一个程序员,难道不会修电脑吗?

蒋 豆 芽:(理不直,气也壮)嗯?老李,你怎么能这么说呢?控制工程专业的学生也修不了洗衣机,电气工程专业的他也没法接电线啊!

隔壁老李:(叹气)豆芽,难怪你没有女朋友啊,都不会修电脑的。

蒋 豆 芽:我委屈啊!

隔壁老李:其实修电脑没那么难的,我来帮你看看。


十分钟后。。。。。。


蒋 豆 芽:(惊讶)老李,你也太厉害了吧,太好了,我的论文都在!

隔壁老李:其实不难,只不过涉及一些操作系统的知识。

蒋 豆 芽:我的天,老李,快教教我,学会了,我也去帮妹子修电脑!

隔壁老李:(敲脑袋)我可不是教你怎么修电脑。既然说到操作系统了,看样子我们又可以学习新知识了。无论是嵌入式还是互联网,凡是涉及软件开发的,了解一定的操作系统知识是大有好处的。

蒋 豆 芽:太好了!之前学完C语言、C++,接下来开始学习操作系统方面的基础知识,(摊手)不过老李,我可没那么多时间,我还要找工作呢!

隔壁老李:放心,我们讲的就是面试常问的知识点,我会慢慢给你展开讲清楚的。

蒋 豆 芽:(激动)开始冲!

img

1.1 操作系统的来历

img

隔壁老李:(咳咳)计算的操作系统(Operating System)对于计算机可以说是十分重要的,从使用者角度来说,操作系统可以对计算机系统的各项资源板块开展调度工作,其中包括软硬件设备数据信息等。运用计算机操作系统可以减少人工资源分配的工作强度,使用者对于计算的操作干预程度减少,计算机的智能化工作效率就可以得到很大的提升。

最初的电脑没有操作系统,人们通过各种按钮来控制计算机,后来出现了汇编语言,操作人员通过有孔的纸带将程序输入电脑进行编译。这些将语言内置的电脑只能由制作人员自己编写程序来运行,不利于程序、设备的共用。

为了解决这种问题,就出现了操作系统,这样就很好实现了软件的运行,以及对计算机硬件资源的管理。总而言之,操作系统不仅是为了计算机更好的管理资源和提升资源利用率,同时也是为了更好的人机交互,要是没有操作系统,电脑上没有办法运行任何软件,于是我们就只能在CPU上烤肉了。

img

蒋 豆 芽:(笑容邪魅)哈哈。是的,操作系统是用户程序与计算机硬件的桥梁。而我们电脑端使用的最多的就是Windows和Linux这两个操作系统,而手机端使用的最多的就是Android和IOS这两个操作系统,方便人机交互,那操作系统有哪些功能呢?

img

1.2 操作系统的功能

img

隔壁老李:操作系统主要包括以下几个方面的功能 :

(1)CPU管理:其工作主要是进程调度,在单用户单任务的情况下,处理器仅为一个用户的一个任务所独占,进程管理的工作十分简单。但在多道程序或多用户的情况下,组织多个作业或任务时,就要解决处理器的调度、分配和回收等问题。(关于进程的概念,我们将在本章的1.7节详细介绍,读者也可以先行学习1.7节)

(2)存储管理,分为几种功能:存储分配、存储共享、存储保护、存储扩张。

(3)设备管理,分为以下功能:设备分配、设备传输控制、设备独立性。

(4)文件管理:文件存储空间的管理、目录管理、文件操作管理、文件保护。

(5)作业管理,是负责处理用户提交的任何要求。

隔壁老李:(会心一笑)操作系统的起源和功能我们就大致讲清楚了。为了后面更好的讲解操作系统更深入的知识,我觉得有必要给你补充一些基本知识。

豆芽你是非科班出身,很多和你一样立志从事互联网或嵌入式的同学大多都是非科班,没学过相关课程,也没看过操作系统方面的书籍,缺乏基本的常识。

蒋 豆 芽:(激动)嗯嗯,这个太赞同了!老李,你真是贴心。

img

1.3 操作系统的硬件知识

img

隔壁老李:(刘海一撩)我们先讲讲计算机硬件,涉及很多概念,必须先讲清楚。

操作系统与运行该操作系统的计算机硬件联系密切,操作系统的任何操作最终都会反映到硬件上,因此有必要了解一些相关硬件知识。一台个人电脑可以抽象为一个简单的模型,如图:

img

CPU存储器以及I/O设备都由一条系统总线连接起来并通过总线与其他设备通信。

隔壁老李:(1)CPU是计算机的“大脑”,它从内存中取出指令并执行。

在每个CPU基本周期中,首先从内存中取出指令解码以确定其类型和操作数,接着执行,然后再取指令、解码并执行。重复这一个过程,直到程序被执行完成。

CPU执行代码是一个类似流水线的过程。

蒋 豆 芽:嗯?有意思,流水线何解?

隔壁老李:你知道工业流水线吗?以汽车装配为例来解释流水线的工作方式,假设装配一辆汽车需要四个步骤:

  1. 第一步冲压:制作车身外壳和底盘等部件。
  2. 第二步焊接:将冲压成形后的各部件焊接成车身。
  3. 第三步涂装:将车身等主要部件清洗、化学处理、打磨、喷漆和烘干。
  4. 第四步总装:将各部件(包括发动机和向外采购的零部件)组装成车。

汽车装配则同时对应需要冲压、焊接、涂装和总装四个工人。

最简单的方法是一辆汽车依次经过上述四个步骤装配完成之后,下一辆汽车才开始进行装配,最早期的工业制造就是采用的这种原始的方式,即同一时刻只有一辆汽车在装配。

不久之后人们发现,某个时段中一辆汽车在进行装配时,其它三个工人都处于闲置状态,显然这是对资源的极大浪费,于是思考出能有效利用资源的新方法,即在第一辆汽车经过冲压进入焊接工序的时候,立刻开始进行第二辆汽车的冲压,而不是等到第一辆汽车经过全部四个工序后才开始,这样在后续生产中就能够保证四个工人一直处于运行状态,不会造成人员的闲置。

这样的生产方式就好似流水川流不息,因此被称为流水线。你看下图是来自电影《摩登时代》里的一个片段,一个机器流水线负责传送物料,三个工人每人负责一个工序,每个人都要一直忙碌起来,这部电影讽刺了资本主义对工人的剥削。

img

蒋 豆 芽:(恍然大悟)哦!我明白了,所以CPU执行一条指令时,也分为几个步骤,CPU并不会等一条指令完全执行完才执行下一条指令,而是像流水一样。没想到CPU也要接受资本的压榨(摊手)。

隔壁老李:没错。经典MIPS五级流水线将执行的声明周期分为五个部分:

  1. 取指:指令取指(InstrucTIon Fetch)是指将指令从存储器中读取出来的过程。

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

<p> - 本专刊适合于C/C++已经入门的学生或人士,有一定的编程基础。 - 本专刊适合于互联网C++软件开发、嵌入式软件求职的学生或人士。 - 本专刊囊括了C语言、C++、操作系统、计算机网络、嵌入式、算法与数据结构等一系列知识点的讲解,并且最后总结出了高频面试考点(附有答案)共近400道,知识点讲解全面。不仅如此,教程还讲解了简历制作、笔试面试准备、面试技巧等内容。 </p> <p> <br /> </p>

全部评论
有些同学没有操作系统的基础,看着似乎有点吃力,我的文章就是帮助没有基础的同学。大家一定要看两遍,有点知识点前面提到了,而后面才有详细解析,所以看两遍非常合适。
5 回复 分享
发布于 2021-03-31 11:10
大家一定要仔细看,我文章没有太多废话,比较精炼,对知识点的领悟往往就藏在这些精炼的语句中。
3 回复 分享
发布于 2021-03-31 11:11
把我的文章看完了,基本就有相应的知识体系大概轮廓了,如果大家心里还意犹未尽的话,就这可以对照我文章的内容再看看书,这样效率就很高,不至于抓瞎。
3 回复 分享
发布于 2021-03-31 11:13
全能女神之——老李
1 回复 分享
发布于 2021-06-09 14:55

相关推荐

要冲外企的祖国花朵很温柔:今年有签约礼盒嘛
点赞 评论 收藏
分享
EEbond:看薪水就好了,还用问牛油吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务