浅析操作系统----2、操作系统概述

一、参考书籍

        《Modern Operating Systems》----Third Edition。为什么是它?理由很简单,博主手上就只有这一本介绍操作系统原理的书,当然博主也百度、知乎了一番,发现还是很多大牛推荐的,而且本人也预先看了两个章节,觉得讲的挺详细,就决定以这一本为主要教材吧。

二、操作系统概述

        对于怎么才能高效地学习这一门课,博主思考了很久,最后决定采用“问题引导学习”的方法,即先发出博主关于操作系统某个知识点的问题,然后再查阅相关书籍进行自我解答。

        1、操作系统是什么?

        对于操作系统是什么,我相信是任何一个刚开始学习这门课的学生的第一个问题,起码博主刚开始听到这门课,第一个想到的问题就是它。那对于这个问题,到底有没有一个比较权威的答案呢?换句话说到底能不能给操作系统下一个比较完整的定义呢?

        很遗憾,从博主读过的书里,并没有一个作者能够或者敢于给操作系统下一个很完整的定义。当然也有可能是读者见识太少。不过很多书里都一致认为操作系统虽然不能够准确定义,但是有很多关于操作系统的共同的特性。这里笔者就将这些共通的描述总结一下:

       1)、管理计算机硬件的软件

              这个解释性的描述说明操作系统的本质就是系统软件,它的其中一项功能就是管理计算机系统的软件。事实上,在操作系统还没有出现之前,对于计算机硬件的管理是管理员的工作,而操作计算机的每一具体步骤都需要程序员详细的思考,这就给开发复杂的程序带来了很大的不便,想想:一个很简单的读写磁盘的应用程序里涉及到了磁盘的磁柱的移动,磁盘信号的处理等等很基本的操作,这简直就是程序员的噩梦,开发的周期得多大,并且不同的磁盘信号也不同,今天给这个磁盘写了程序,明天换了另一个牌子的磁盘,代码还得重写。(这个例子在哪见过了?忘了~~~囧~~~)但是这在早期的计算机系统里就确实存在过。

              关于硬件的管理,如果没有操作系统,所有的硬件都要程序员考虑的话我想没有谁会来当程序员了~~~。随着技术的发展,人们想到了一个偷懒的办法:既然这些管理硬件的代码都很像甚至一样,那我们能不能把这些代码写封装起来,让程序员们随时随地的调用?答案是肯定的,于是操作系统的雏形出现了-----把硬件相关的操作细节抽象化。

              发展到现在,操作系统对于硬件的管理可以说是其最大的特点,当然还有其他特点,待我慢慢描述。

        2)、为应用程序提供服务

               前面说了操作系统已经把硬件的具体操作封装了起来,程序员只要需要,可以随时使用这些封装好的代码来完成对硬件的操作。当然,操作系统管理了这么多的硬件,使用这些硬件的软件又不止一个,如何能够让软件更有效、更有序地使用计算机硬件资源,也是操作系统要完成的工作。我们把这项工作叫做为应用程序提供服务。

        到这里,博主理解到的计算机操作系统无非完成了两项功能:管理硬件和为应用程序提供服务。在操作系统的所有工作中,都体现了这两点,因此这两点只是操作系统功能的一个概述,并不是真正的定义。

       2、操作系统是如何管理计算机硬件的?

        在第一个问题里,博主讲到了计算机操作系统的基本工作就是管理硬件,那么操作系统是如何完成这一工作的?

        首先要明白计算机都有哪些硬件?这些硬件都完成哪些功能?只有先回答了这些问题,才能完整地回答这个问题。

        1)、计算机硬件系统介绍

               计算机的硬件系统包括:中央处理器(也叫CPU)、内存、外存(也叫硬盘)、I/O设备、系统总线。(额,其实作者是根据自己的理解列出来的,正确与否仁者见仁,智者见智。)

              相信我们都对这些硬件很熟悉吧,起码知道它们都有啥功能。

        2)、 操作系统为管理硬件提供的抽象概念

              A、操作系统为CPU 这一硬件提供的抽象是进程/线程的概念。操作系统提供这一概念以后,就将CPU 的时间分成“片状”,每个程序开始运行以后就是一个进程,每个进程都拥有自己的时间片,在一个时间片里只有一个进程在运行。多个时间片交叉进行,也就形成了宏观上的并行运行的“错觉”。

              B、存储管理:在现代的计算机系统里,一个进程能够使用的内存理论上是非常大的(32位系统里就能够用到4G的内存),这得益于一项叫虚拟内存的技术。在CPU里有一个叫“内存管理单元”(MMU)的模块。他能够管理实际的内存单元,并将一个程序里出现的地址对应到实际的物理内存单元。这样用户操作的只是虚拟内存,物理内存是由操作系统操作的。

              C、对于硬盘的管理,操作系统提供了一个叫文件系统的概念。操作系统实际实现一个硬盘的分区、读取的操作,用户不必了解硬盘的读写时序、数据的存取位置,仅仅使用read、write等操作系统提供的命令就能完成读写。

              D、对I/O设备的管理,操作系统提供了一个叫设备驱动的概念,设备驱动就是实际操作硬件的函数,对于硬件的操作时序,全是由驱动完成的。不同的设备操作的时序一般不同,因此不同的设备其驱动也不尽相同。

        以上简单说到了操作系统提供的几个抽象概念,关于操作系统的学习其实就是按照这些抽象概念进行的。即:进程管理-->>内存管理-->>文件系统介绍与实现-->>设备驱动简介


              













深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值