首页 > 系统相关 >[Linux] 操作系统 入门详解

[Linux] 操作系统 入门详解

时间:2024-09-07 22:21:34浏览次数:12  
标签:冯诺 调用 操作系统 详解 内存 Linux CPU 体系结构

标题:[Linux] 操作系统

@水墨不写bug



目录

一、冯 . 诺依曼体系结构

1.冯诺依曼体系结构简介 

2.对冯诺依曼体系结构的理解 

二、操作系统定位

1.为什么需要操作系统?

2.操作系统是什么?

三、系统调用和库函数 


正文开始:

一、冯 . 诺依曼体系结构

1.冯诺依曼体系结构简介 

        什么是体系结构?体系结构其实就是一套方法,是用来管理某个问题的方法策略。我们常见的计算机,比如我们身边的笔记本电脑;此外还有我们不太常见的计算机,如服务器,大部分都遵循冯诺依曼体系结构。

        什么是冯诺依曼体系结构

        简单来说,冯诺依曼体系结构可以用上面这样的一幅图来表示。到目前为止, 我们所认识的计算机都是由一个一个相对独立的硬件组成的,比如我们常用的鼠标,键盘,显示器,打印机等。

        其中,根据如图的分类举例如下:

        输入设备:比如键盘,鼠标,扫描仪,书写板,硬盘等;

        输出设备:比如显示器,打印机,音响,硬盘等;

        中央处理器(CPU):含有运算器和控制器等;

2.对冯诺依曼体系结构的理解 

        我们由常识可知:CPU的速度非常快(纳秒级),输入输出设备(通常是硬盘)速度相对于CPU非常慢(毫秒级),这就导致了速度的代差,最终导致整机的效率表现为输入输出设备的效率。冯诺依曼体系的存储器的存在就是为了缓解这样的问题,存储器一般就是内存。

        你一定听说过存储金字塔

        根据存储金字塔,我们发现内存就是在硬盘和CPU之间的 “缓解矛盾”的中间人。内存通过预加载硬盘中的数据来为高速的CPU提供运算需要的数据;同时,内存也暂时接收保存CPU运算产生的数据结果,以便提供给慢速存取的硬盘使用。内存类似于CPU和硬盘之间的一个缓冲区,这样一来,整机的速度就可以提升到接近于内存的速度了。 

关于冯诺依曼体系结构,需要强调:

        1.这里的存储器就是指内存;

        2.不考虑缓存情况,CPU能且只能对内存进行读写,不能访问外部设备(输入输出设备)

        3.外设(输入输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。

总结成一句话:所有设备只能直接和内存打交道。


具体情景:

(1)如果你通过QQ给家人发送消息,数据是如何流动的?

        

        其实每一步都是按照上述图片结构体系运行的:

在发送端:

        首先,我们通过输入设备(键盘)输入数据(消息),这些数据被加载到内存中,接下来,QQ信息数据通过CPU的加密,压缩处理后再次被写入内存,最后通过网卡设备发送出去。

在接收端:

        首先通过网卡设备接受到数据,随后被加载到内存中,这些数据需要通过CPU的解压缩,解码处理后再次被加载到内存中,然后存储在输出设备(硬盘)中。(因为接受的聊天消息记录不会因为关机而消失,所以可以确定接受的消息是存储在硬盘中的) 

(2)如果发送的是文件,数据又是如何流动的? 

        首先,我们将文件拖入对话框的过程就是把文件从硬盘加载到内存的过程,接下来,文件数据通过CPU的处理后,重新写入内存,然后通过网卡设备发送出去。

        接受时,通过网卡设备接受,接下来写入内存中,通过CPU的处理后重写入内存,最终存放在硬盘中。 


二、操作系统定位

1.为什么需要操作系统?

        因为用户不善于直接操作硬件设备。你一定见过单片机吧,你能够直接在物理上操作电位的高低来直接控制单片机吗?这不太现实,然而计算机就是一个比单片机复杂的多的冯诺依曼的体系结构,如果仅仅给你几个硬件设备,你几乎无法直接控制操作这些硬件设备,更别说让它们协调起来一起工作了。

        而操作系统就是为了给用户提供一个使用和管理下面的软件和硬件资源的中间层:

        操作系统协助用户,管理好下面的软硬件资源;同时,给用户提供一个良好(稳定,高效,安全)的运行环境。

2.操作系统是什么?

        操作系统是一款进行软硬件管理的软件。

        操作系统内部维护有各种各样的数据,但是操作系统不相信任何用户!但是操作系统还是要帮用户的忙,为用户管理资源,提供服务。所以,操作系统为了保证自己的数据安全,也为了保证给用户能够提供服务,操作系统以接口的方式给用户提供调用的入口,以此来获取操作系统内部的数据。

        操作系统提供的调用接口,就是系统调用。Linux是用C语言实现的,所以系统调用就是一个个的C语言的函数。所有访问操作系统的行为,都是通过系统调用来实现的。

         但是你可能会有疑问,既然有系统调用,那么C语言的库函数又是什么?C语言的库与系统调用的接口又是什么关系?

        接下来,就需要具体分析上面这一副图了:

向下,操作系统管理硬件: 

        操作系统内部进行着内存管理,进程管理,文件管理,驱动管理;驱动管理对接于下层的驱动,操作系统也无法直接管理硬件资源,对硬件资源的直接管理的是各种驱动:操作系统通过管理驱动,间接管理各种硬件资源。

向上,系统调用 封装程度低,门槛高,难以使用:

         所以为了便于专业人员进行软件开发,一些大佬就写出来各种库,于是就有了我们常常使用的stdio.h,string.h的等等的库。比如C语言就有各种各样的函数库,这些库的实现本质就是为了方便后人在C语言的基础上进行软件开发;除此之外,其他计算机语言如:C++也是如此。

        但是系统调用与此又有什么关系?其实,库里面的函数本质上就是通过调用系统调用接口来实现的。各种语言的函数库就是对系统调用接口的封装。

三、系统调用和库函数 

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

        系统调用在使用上,功能比较基础,对用户的要求相对也比较高。所以,有心的开发者可以对部分系统调用进行适度封装,从而形成,有了库,就很有利于更上层用户或者开发者进行二次开发(图片来源于网络)


完~

未经作者同意禁止转载

标签:冯诺,调用,操作系统,详解,内存,Linux,CPU,体系结构
From: https://blog.csdn.net/2301_79465388/article/details/141904379

相关文章

  • linux虚拟机(centos)搭建sqli-labs
    1.开启小皮2.查看文件位置配置文件路径为/usr/local/phpstudy/soft[root@localhostsoft]#cd/www/admin/localhost_80[root@localhostsoft]#pwd/usr/local/phpstudy/soft网站根目录为/www/admin/localhost_80/wwwroot[root@localhostlocalhost_80]#cdwwwroot[roo......
  • [Linux]netstat
    netstat是一个用于显示网络连接、路由表、接口统计等网络相关信息的命令行工具。在Linux系统中,它可以帮助你了解和分析网络状态。虽然netstat已被ss命令取代,但它在某些系统上仍然可用。以下是netstat的一些常用选项:基本用法netstat-a:显示所有连接和监听端口。netst......
  • [Linux]查看网络状态
    在Linux中,有多种工具可以用来查看网络状态。以下是一些常用的方法:使用ss命令ss是查看套接字统计信息的现代工具,功能强大且高效。查看所有连接和监听端口:ss-a查看仅TCP连接:ss-t查看仅UDP连接:ss-u查看监听的套接字:ss-l查看与进程关联的连接:s......
  • 操作符详解
    一,操作符的分类1.算术操作符:+,-,*,/,%2.移位操作符:<<   >>3.位操作符  :&  |   ^  ~4.赋值操作符: = ,+=,-=,*=,/=,%=,<<=,>>=,&=,|=,^=5.单目操作符:!,++,--, - , + ,*, & , ~ ,sizeof(类型)6.关系操作符:> ,< ,......
  • Linux基础操作
    目录1:XShell下的复制粘贴2:全屏3:进入自己的用户4:用root账户,创建普通用户5:输错时可以ctrlc换行 指令可以携带选项 文件属性​编辑​编辑6:文件介绍和类型7:ls指令(ls/home查看自己的创建用户)8:pwd命令9:cd指令10:touch指令11:mkdir指令(重要)12:tree的创......
  • Shopify主题目录结构详解
    Shopify主题控制在线商店的组织、功能和风格。主题代码使用特定于Shopify主题的文件的标准目录结构组成。本文主要是对Shopify主题目录的详细解析:一、主要目录及功能1、layout目录功能:存放主题的布局文件,如theme.liquid。这些文件定义了商店页面的基本结构和布局,包括头部......
  • 【网络安全】服务基础第二阶段——第三节:Linux系统管理基础----Linux用户与组管理
    目录一、用户与组管理命令1.1用户分类与UID范围1.2用户管理命令1.2.1useradd1.2.2groupadd1.2.3usermod1.2.4userdel1.3组管理命令1.3.1groupdel1.3.2查看密码文件/etc/shadow1.3.4passwd1.4Linux密码暴力破解二、权限管理2.1文件与目录权限2.2目......
  • 【网络安全】服务基础第二阶段——第二节:Linux系统管理基础----Linux统计,高阶命令
    目录一、Linux高阶命令1.1管道符的基本原理1.2重定向1.2.1输出重定向1.2.2输入重定向1.2.3wc命令基本用法1.3别名1.3.1which命令基本语法1.3.2alias命令基本语法1.4压缩归档tar1.4.1第一种:gzip压缩1.4.2第二种:bzip压缩1.5tar命令二、VIM编辑器使用2......
  • Vue3技术分享专栏 - Composition API详解
    引言在上一篇文章中,我们通过一个简单的“HelloWorld”示例介绍了如何使用Vue3和CompositionAPI来创建响应式的组件状态。本文将更深入地探讨CompositionAPI,解释其背后的原理,并提供一些实际的应用案例。CompositionAPI概述CompositionAPI是Vue3中的一个新特性,它为开......
  • Windows与linux中docker的安装与使用
    windos中安装使用docker下载Docker_Desktop安装包进入docker官网下载Docker_Desktop:https://www.docker.com/启用wsl我们搜索“启用或关闭Windows功能”,打开后勾选适用于Linux的Windows子系统Docker_Desktop设置出现DockerEnginestopped的解决办法示例:问......