[操作系统]:初识操作系统

img

✨✨ 欢迎大家来到贝蒂大讲堂✨✨

🎈🎈养成好习惯,先赞后看哦~🎈🎈

所属专栏:操作系统学习
贝蒂的主页:Betty’s blog

冯•诺依曼体系结构

在计算机发展历程中,核心作用就是解决人类问题。为了实现这一目标,计算机系统需具备特定结构和功能。 首先,计算机要配备输入设备,如键盘、鼠标、扫描仪等,将各种信息转化为计算机可处理的数字信号。 接着,计算机接收数据后进行算术和逻辑运算。最后,计算机处理完问题需输出结果,这要求有输出设备,如显示器、打印机、扬声器等,将结果以直观形式呈现给用户。

画板

但是计算机仅拥有算法运算与逻辑运算是不够的,还需要有控制功能,控制何时从输入设备获取数据,何时输出数据到输出设备等。比如在C语言中,算术运算就对应完成一系列的加减乘除等运算,而逻辑运算就对应于一系列的逻辑与逻辑或等运算,控制功能就对应于C语言当中的判断、循环等。

画板

一般而言,我们就将这个具有算术运算与逻辑运算,控制功能的设备称为中央处理器,也就是CPU。

但是输入设备与输出设备的效率是非常慢的,而中央处理器的效率又是极快的。根据木桶原理,总效率就取决于效率最低的设备,这就大大拖慢了计算机的效率。为了解决这个问题,就引入了内存的概念。

画板

该内存就起到一个缓冲的作用,因为它的效率比输入设备与输出设备快的多,但又比中央处理器慢。并且内存还有一个优点就是:提供预载数据的能力,因为一般内存大小为4g/8g。根据局部性原理,当一个数据正在被访问时,那么下一次有很大可能会访问其周围的数据。所以当CPU需要获取某一行数据时,内存可以将该行数据之后的数据一同加载进来,而CPU处理数据和内存加载数据是可以同时进行的,这样下次CPU就可以直接从内存当中获取数据,大大提升效率。

最后我们将这个结构进行一些调整,就形成了我们熟知的——冯•诺依曼体系结构

画板

在物理层面上,各个硬件单元之间是通过总线连接的,外设与内存之间的总线叫做IO总线,内存与CPU之间的总线叫做系统总线

同样根据冯•诺依曼体系结构我们就能解释为什么程序运行之前要先加载到内存

因为可执行文件是放在磁盘上的,而CPU只能从内存中读取数据,所以可执行程序要先加载到内存中才能被CPU获取。

操作系统

操作系统的概念

**操作系统(Operator System)**就是管理计算机硬件与软件资源的计算机程序,它为用户和应用程序提供了一个接口,使得计算机能够高效、稳定地运行。

其一般包括四个主要功能:

  • 内存管理:内存分配、内存共享、内存保护以及内存扩张等。
  • 驱动管理:对计算机设备驱动驱动程序的分类、更新、删除等操作。
  • 文件管理:文件存储空间的管理、目录管理、文件操作管理以及文件保护等。
  • 进程管理:其工作主要是进程的调度。

操作系统的体系结构

首先我们知道在计算机的底层存在各种硬件设备,这些硬件设备通过冯•诺依曼体系结构联系在一起。

画板

但是仅有这些硬件是不够的,还需要一个软件来对这些硬件进行系统化管理。例如:内存何时从输入设备读取数据?读取多少数据?内存何时刷新缓冲区到输出设备?是按行刷新还是全刷新?这个软件就是我们所谈论的操作系统。

但是这就引发一个问题,如果操作系统是与底层硬件直接联系的话,那么一旦底层硬件发生一点改变,那么操作系统的源代码就需要重新编译。如果进行频繁的编译,就会大大拖慢计算机的效率。所以为了解决这个问题,在操作系统与底层硬件之间需要增加一层结构让操作系统与底层硬件之间实现解耦。这个增加的结构就是我们的驱动程序,其功能一般为访问某个硬件的读写,状态等。一般由我们的硬件厂商提供。

画板

而一般而言,操作系统为了保护自己的内在结构,并不会将源码呈现给用户,而是而是封装出一些接口提供给用户。这些接口一般被称为系统调用接口,但是这些接口对于普通用户来说具有一定的使用成本,因为用户必须要先对操作系统有一定了解,为了方便用户,所以又对系统接口进行封装形成我们的用户操作接口,常见的用户接口有各种库如libc以及部分指令,我们一般在实际编写的过程中调用各种的函数printf,scanf就是来源于这些库。

而最上层还有一层用户层,一般是由我们用户通过指令或图形化界面进行各种操作。

画板

Shell的运行原理

在操作系统中,Windows 采用图形化界面作为交互方式,而Linux则使用命令行界面。尽管两者的交互方式存在差异,但从本质上讲,它们的目的是一致的,即都是为了便于用户进行相关操作。图形化界面和命令行界面都属于“外壳程序”的范畴。无论是Windows的图形化界面还是Linux的命令行界面,它们都是操作系统与用户之间进行交互的接口,通过这些界面,用户能够向操作系统发送指令并获取相应的反馈。因此,尽管WindowsLinux的交互方式有所不同,但它们的核心目标都是为了满足用户的操作需求。

画板

Linux严格意义上说是一个操作系统,我们称之为“核心(kernel)”,但我们一般用户不能直接使用kernel,而是通过kernel的“外壳程序”,也就是所谓的Shell,来与kernel沟通。

Shell最基本的定义为“命令行解释器”,其主要功能包括以下两点:

  1. 它能够将使用者输入的命令翻译为计算机核心(kernel)可以理解的语言,并传递给核心进行处理。
  2. 同时,它也负责将核心的处理结果翻译为使用者能够理解的形式并呈现给使用者。

Windows中的图形化界面(GUI)进行对比,我们在操作Windows时,并非直接与Windows内核进行交互,而是通过图形接口进行点击等操作来完成。同样地,ShellLinux系统中起着类似的作用,它主要对用户的指令进行解析,将解析后的指令传递给Linux内核,然后将内核运行产生的结果反馈回来,并通过自身的解析呈现给用户。

Shell的运行原理如下:

  1. 它会创建子进程,由子进程来负责进行命令行的解释工作。
  2. 重要的是,子进程出现的任何问题,都不会对父进程Shell产生影响。

Windows为例,我们每运行一个程序,就相当于创建了一个子进程,比如打开浏览器、运行办公软件等。即便这些子进程中的某个出现问题,如浏览器卡死(程序异常)或被关闭(程序终止),也不会影响其他子程序的正常运行。同样地,在Linux中,Shell与子进程的关系也是如此,确保了系统的稳定性和可靠性。

并且值得一提的是: Shell只是所有外壳程序的统称,例如在centos 7当中的外壳程序名叫bash

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Betty’s Sweet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值