【Linux杂货铺】操作系统

2024-03-12 07:36

本文主要是介绍【Linux杂货铺】操作系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


目录

🌈前言🌈

📁 冯诺依曼体系结构

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

📂 主机与主机的交互

📁 操作系统的概念

 📂 作用

 📂 理解“管理”

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

📁 总结

🌈前言🌈

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

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

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

📁 冯诺依曼体系结构

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

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

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

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

     上图是计算机中存储设备的运行速度示例图。简单理解:寄存器 > 内存 > 硬盘,但价格也是由高到低。

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

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

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

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

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

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

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

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

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

📂 主机与主机的交互

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

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

📁 操作系统的概念

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

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

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

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

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

 📂 作用

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

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

 📂 理解“管理”

        管理 = 先描述,在组织。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

📁 总结

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

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

这篇关于【Linux杂货铺】操作系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/800543

相关文章

Linux磁盘分区、格式化和挂载方式

《Linux磁盘分区、格式化和挂载方式》本文详细介绍了Linux系统中磁盘分区、格式化和挂载的基本操作步骤和命令,包括MBR和GPT分区表的区别、fdisk和gdisk命令的使用、常见的文件系统格式以... 目录一、磁盘分区表分类二、fdisk命令创建分区1、交互式的命令2、分区主分区3、创建扩展分区,然后

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

Linux下MySQL8.0.26安装教程

《Linux下MySQL8.0.26安装教程》文章详细介绍了如何在Linux系统上安装和配置MySQL,包括下载、解压、安装依赖、启动服务、获取默认密码、设置密码、支持远程登录以及创建表,感兴趣的朋友... 目录1.找到官网下载位置1.访问mysql存档2.下载社区版3.百度网盘中2.linux安装配置1.

Linux使用粘滞位 (t-bit)共享文件的方法教程

《Linux使用粘滞位(t-bit)共享文件的方法教程》在Linux系统中,共享文件是日常管理和协作中的常见任务,而粘滞位(StickyBit或t-bit)是实现共享目录安全性的重要工具之一,本文将... 目录文件共享的常见场景基础概念linux 文件权限粘滞位 (Sticky Bit)设置共享目录并配置粘

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip