【Linux杂货铺】操作系统

这篇具有很好参考价值的文章主要介绍了【Linux杂货铺】操作系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Linux杂货铺】操作系统,Linux杂货铺,c++,学习,笔记,linux,服务器,运维,开发语言


目录

🌈前言🌈

📁 冯诺依曼体系结构

📂 拓展问题:程序为什么要被加载到内存?

📂 主机与主机的交互

📁 操作系统的概念

 📂 作用

 📂 理解“管理”

 📂 系统调用 和 库函数的概念

📁 总结

🌈前言🌈

        欢迎收看本期【Linux杂货铺】,本期内容将讲解计算机中操作系统的概念。其中包括了操作系统是什么,有什么作用,以及用户是如何使用操作系统的。

        本文旨在脱离教材晦涩难懂的理念,从零开始理解操作系统及其周边概念。此外本文是以Linux系统进行讲解

        操作系统是计算机中重要组成部分,是我们学习的重点,也是日后学习进程的必备前置知识。所以如果想要学好进程,必须先了解什么是操作系统,以及计算机中底层结构。

【Linux杂货铺】操作系统,Linux杂货铺,c++,学习,笔记,linux,服务器,运维,开发语言

📁 冯诺依曼体系结构

【Linux杂货铺】操作系统,Linux杂货铺,c++,学习,笔记,linux,服务器,运维,开发语言

        我们以简单的输入输出代码为例,当我们当键盘中输入数据,如何输出到显示器呢?

        我们从键盘中输入数据,将数据输入到磁盘中,由磁盘将数据送到内存,CPU与内存进行数据的加工和处理,将结果由内存输出到显示器上。

        因此我们知道,数据是要在计算机的体系结构中进行流动,流动过程中,进行数据的加工处理。从一个设备到另一个设备,本质上是一种拷贝。

        因此,设备之间的拷贝效率,决定了计算机整机的运行效率。

【Linux杂货铺】操作系统,Linux杂货铺,c++,学习,笔记,linux,服务器,运维,开发语言     上图是计算机中存储设备的运行速度示例图。简单理解:寄存器 > 内存 > 硬盘,但价格也是由高到低。

        为什么CPU和硬盘之间要有内存呢?因为CPU的运行速度远远高于硬盘的运行速度。所以当CPU处理完数据后,往往还要等待硬盘就绪,这就导致了整机运行效率降低。

        如果硬盘内部全部采用寄存器的方式,是会大大提高运行效率,但造价会非常昂贵,考虑到普及等问题,就引入了内存的概念,内存与CPU之间的速度差小于硬盘与CPU。

        将硬盘中待处理的数据提前存到内存中,此后,CPU只与内存进行交互,不与外设进行交互,大大提高了整机的运行效率。

        冯诺依曼体系结构对我们计算机发展发挥了重要作用,大大提高了计算机的普及。以上我们就对冯诺依曼体系结构有了一些简单的理解。

📂 拓展问题:程序为什么要被加载到内存?

        在C语言学习过程中,我们的程序是要被加载到内存中才能执行,这是为什么呢?

        这就是因为冯诺依曼体系结构规定了,如果想要被CPU执行必须加载到内存。

        程序在没有被执行之前,是一个二进制文件,存放在硬盘中,想要被CPU执行,需要先调入到内存。

        在数据层面上:1. CPU不和外设直接交互,CPU只和内存交互;2. 外设的数据,不是直接给CPU,而是要先放入到内存中。 

📂 主机与主机的交互

【Linux杂货铺】操作系统,Linux杂货铺,c++,学习,笔记,linux,服务器,运维,开发语言

        例如,一台山东的电脑,想要将硬盘的数据发往北京的一台电脑,其中硬上的数据经过本机流动到网卡,经过网络,传送到另一台电脑的网卡,再由网卡将数据流动到硬盘。

        因此,我们日后就要意识到,两台主机的交互,就是两个冯诺依曼体系结构的交互。

📁 操作系统的概念

        我们了解了冯诺依曼体系结构,知道硬盘的数据是要先放到内存的,那么谁去控制硬盘这些底层硬件到内存中呢?就是操作系统。

        任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。操作系统包括:

内核(进程管理,内存管理,文件管理,驱动管理)

其他程序(例如函数库,shell程序等)

        操作系统的定位就是,进行管理的的关键

 📂 作用

        1. 进行软硬件资源管理。

        2. 为上层提供良好(稳定,高效,安全)的运行环境。

 📂 理解“管理”

        管理 = 先描述,在组织。

【Linux杂货铺】操作系统,Linux杂货铺,c++,学习,笔记,linux,服务器,运维,开发语言

        操作系统使用C语言写出来的,如何去管理底层硬件呢,先描述,在组织。通过结构体struct 将硬件抽象成一个结构体,内部具有相同的属性,不会因为硬件厂商的不同而改变。

        即厂商根据操作系统写出硬件的驱动程序,操作系统就会通过驱动程序将硬件信息保存到结构体中,这样就将底层硬件描述起来了。

        操作系统在通过链表等一系列数据结构,将结构体组织起来。

        这样,操作系统对底层硬件的管理,就变为了对数据结构的增删查改。

        通过结构体进行描述,再通过数据结构进行组织,最终演变为对数据结构的增删查改,这就是管理的本质。

 📂 系统调用 和 库函数的概念

        以上,了解了用户通过操作系统去操作底层硬件,操作系统通过结构体描述硬件,通过数据结构将结构体组织起来,来进行管理。

        这里我们必须有一个认知:用户不能越过操作系统,去操作底层硬件

        此外,用户也不能直接操作 操作系统,因为操作系统内部有需要重要信息,不能轻易修改。

而是通过调用系统调用接口,也就是提供一些接口函数,供用户使用,通过函数去操作OS。

        但是系统调用接口有部分内容是比较晦涩难以使用,有些人就讲这些接口封装了起来,转为轻松易懂的用户操作接口,供用户使用。

系统调用 和 库函数的区别:

    1. 在开发角度,操作系统对外表现为一个整体,但是会暴露自己的部分接口,供上层使用,这部分有操作系统提供的接口,叫做系统调用。

    2. 系统调用接口,功能较为基础,对用户的要求相对比较高,所以,有心的开发者对部分系统调用进行适度封装,从而形成了库,有了库,这便更有利于上层用户或者开发者进行二次开发。

  1. 用户不能越过操作系统,去操作底层硬件。
  2. 用户也不能直接访问操作系统,而是通过调用系统调用接口/用户操作接口。
  3. 用户操作接口lib是对系统调用接口的封装,旨在将复杂的系统调用使用起来较为简单。若有能力,可以直接使用系统调用。
  4.  但要注意,使用系统调用直接写出的代码,不具备跨平台性。因为不同操作系统有不同的统调用接口。而lib做了封装,隐藏了系统调用接口的差异

📁 总结

        以上,我们就对计算机的底层结构——冯诺依曼体系结构有了一定理解;了解了什么是操作系统,即进行管理的软件;初识了计算机的层状结构,知道了通过操作系统去操作底层硬件用户不能直接使用硬件,也不能直接访问操作系统;认知了系统调用接口和库函数,库函数就是对系统调用接口的封装。

        如果感觉本期内容对你学习操作系统有作用,欢迎点赞,收藏,关注。Thanks♪(・ω・)ノ

【Linux杂货铺】操作系统,Linux杂货铺,c++,学习,笔记,linux,服务器,运维,开发语言文章来源地址https://www.toymoban.com/news/detail-839206.html

到了这里,关于【Linux杂货铺】操作系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【算法杂货铺】二分算法

    目录 🌈前言🌈 📁 朴素二分查找  📂 朴素二分模板 📁 查找区间端点处 细节(重要)  📂 区间左端点处模板  📂 区间右端点处模板 📁 习题 1. 35. 搜索插入位置 - 力扣(LeetCode) 2. 69. x 的平方根 - 力扣(LeetCode) 3.153. 寻找旋转排序数组中的最小值 - 力扣(LeetCode)

    2024年04月13日
    浏览(33)
  • 【C++杂货铺】内存管理

    从用途和存储的角度来看,在C/C++程序中有 局部数据、静态数据、全局数据、常量数据、动态申请的数据 五种主要的数据,各种数据的特点如下: 局部数据 :随用随创建,存储在栈区,作用域只在局部,生命周期在局部,出了作用域就销毁。 静态数据 :存储在数据段,作

    2024年02月16日
    浏览(29)
  • 【C++杂货铺】详解string

    目录  🌈前言🌈 📁 为什么学习string 📁 认识string(了解) 📁 string的常用接口  📂 构造函数  📂 string类对象的容量操作  📂 string类对象的访问以及遍历操作​编辑  📂 string类对象的修改操作 📁 模拟实现string 📁 总结         欢迎观看本期【C++杂货铺】,本期内容

    2024年03月20日
    浏览(34)
  • 【C++杂货铺】拷贝构造函数

    📖 定义 拷贝构造函数 是构造函数的一个重载 ,它的本质还是 构造函数 ,那就意味着,只有在创建对象的时候,编译器才会自动调用它,那他和普通的构造函数有什么区别呢? 拷贝构造函数,是创建对象的时候,用一个已存在的对象,去初始化待创建的对象 。简单来说,

    2024年02月16日
    浏览(40)
  • 【C++杂货铺】内管管理

    目录 🌈前言🌈 📁 C/C++中内存分布 📁 new 和 delete的使用 📁 new 和 delete的优点 📁 new 和 delete的原理  📂 operator new 和 operator delete函数  📂 内置类型  📂 自定义类型 📁 内存泄漏 📁 总结         欢迎收看本期【C++杂货铺】,本期内容讲解C++内存管理。包含了C++中内存

    2024年04月14日
    浏览(34)
  • 【C++杂货铺】缺省参数、函数重载

     缺省参数是 声明或定义函数时为函数的参数指定一个缺省值 。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。  上面代码在 fun 函数的形参部分给了缺省值10,这意味着在调用 fun 函数的时候可以传参,也可以不传参,如果传参了那形参

    2024年02月16日
    浏览(27)
  • 【C++杂货铺】详解list容器

    目录 🌈前言🌈 📁 介绍 📁 使用  📂 构造  📂 迭代器iterator  📂 capacity  📂 modifiers  📂 迭代器失效 📁 模拟实现  📂 迭代器的实现 📂 代码展示 📁 和vector的区别 📁 总结         欢迎收看本期【C++杂货铺】,本期内容将讲解STL中关于list的内容,会分为一下几个方

    2024年04月14日
    浏览(36)
  • 【C++杂货铺】运算符重载

    本文将以日期类为基础,去探寻运算符重载的特性与使用方法,下面先给出日期类的基础定义: 备注 :拷贝构造函数和析构函数,均可以不写,因为当前日期类的三个成员变量都是内置类型,没有动态申请空间,使用浅拷贝就可以。 📖 如何比较两个日期的大小? 现如今,

    2024年02月16日
    浏览(58)
  • 【C++杂货铺】再谈类和对象

    在创建对象的时候,编译器通过调用构造函数,在构造函数体中,给对象中的各个成员变量一个合适的初值。 虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化, 构造函数体中的语句只能将其称为赋初值,而不能称作初

    2024年02月16日
    浏览(28)
  • 【C++杂货铺】初识类和对象

    📖 面向过程 C语言是 面向过程的 ,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。以洗衣服这件事为例,下图是C语言完成洗衣服这件事的过程。 📖 面向对象 C++是 基于面向对象的 ,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包