【Linux】初步识操作系统

linux专栏:《Linux入门系列》

系列文章:gdb-调试器初入门(简单版使用)

                   编辑器vim入门(概念+模式转换+技巧)


目录

1. 概念

2. 设计操作系统的目的

3. 定位:操作系统负责管理

4. 如何理解管理

1)管理的本质:对数据做管理。

2)理解管理:

①操作系统是什么角色呢?

②操作系统如何对硬件进行管理?

③数据量大的时候,我们操作系统如 何管理呢?

5. 操作系统

1)硬件部分

2)操作系统

3)驱动程序

4)用户部分

5)系统调用接口

为什么用户程序不能直接访问系统内核提供的服务呢?

6)用户接口操作


1. 概念

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

操作系统(Operation System, OS) 是指控制和管理整个计算机系统的硬件和软件资源,并合理的组织和调度计算机的工作和资源的分配,以提供给用户和其它软件方便的接口和环境,它是计算机系统中最基本的系统软件。

笼统的理解,操作系统包括:
1.内核(进程管理,内存管理,文件管理,驱动管理)
2.其他程序(例如函数库,shell 程序等等)

注意:
操作系统是第一个被加载的软件。
电脑开机的时候所等待的那几十秒,其实就是在加载操作系统。

2. 设计操作系统的目的

对下:与硬件进行交互,管理所有的软硬件资源。
对上:为用户程序(应用程序)提供一个良好的执行环境。

3. 定位:操作系统负责管理

简单来说,操作系统是一款搞管理的软件:

  • 它对下要管理好软硬件资源,
  • 对上要提供良好的、稳定的、完全的,软件服务。

进言之,在整个计算机软硬件架构中,操作系统的定位是:一款纯正的 “搞管理” 的软件。

4. 如何理解管理

1)管理的本质:对数据做管理。

不是对 被管理对象 进行直接管理,而是只要拿到 被管理对象的所有的相关数据

2)理解管理:

在学校里,有这样的三种角色:校长、辅导员、学生。

我们把这些角色映射到操作系统,驱动程序、硬件。

①操作系统是什么角色呢?


校长是管理者,而学生是被管理的对象,那么辅导员是什么角色呢?


校长(操作系统)作为管理者来管理学生(硬件),校长实际上就是那个做决策的人,但是校长作出决策后并不需要自己来执行,而是让辅导员去执行,所以辅导员的主要任务就是执行管理者的决策,我们通常将其称为执行者。

操作系统(校长)是管理者,负责管理 硬件(学生)。这管理的实施过程就由驱动程序(辅导员)负责。

②操作系统如何对硬件进行管理?


但是,校长连我的面都见不到,他如何来管理我呢?


那么仔细想一下,管理你需要做到和你见面吗?你在学校除了开学典礼和毕业典礼,平时会见到校长来你班级对你进行管理吗?

其实很简单,假设现在校长要求某辅导员将该专业综合成绩靠前 10 名同学的资料拿给他,他从这 10 名同学中选出最优秀的 3 名学生去参加比赛,当辅导员将资料拿来后,校长选出 3 名学生说:“就这三个了,你找个老师对这三名学生进行一下强化训练,然后参加本次的比赛”。然后校长就什么也不管了。

你可以发现,在整个过程中,校长根本没见过这 3 名同学,就对其进行了管理,他根据的是什么?没错,他根据的是数据。

实际上,学校将我们每个学生的各种信息都进行了管理,基本信息、成绩信息以及健康信息等等。

像这样抽取所有同学的属性,描述对应的同学。在 C++ 当中又叫做面向对象。

操作系统根据驱动程序存储着硬件的各种实施方式,进行选择。

③数据量大的时候,我们操作系统如 何管理呢?

当学生的数量多起来了,校长(操作系统)就可以将全部学生的信息组织起来,当然组织的方式有很多种(链表、顺序表、树),而每种组织方式都有其自己的优势,这里我们假设校长(操作系统)以双链表的形式将学生的信息组织起来。

此时校长对各个学生的管理,实际上就变成了对这个双链表的增删查改。当有新生(新设备)时直接向该双链表加入一个结点,当学生毕业后直接将学生信息从该双链表当中移除即可。

所以,管理的本质就是对数据做管理,那么对数据的管理就是对某种数据结构的管理!(先把对象的属性描述出来,然后利用数据结构组织。------> 先组织,在描述)

将具体问题,进行计算机级别的 建模的过程! 转成计算机能够认识的问题!!

5. 操作系统


我们主要分为硬件部分、系统软件部分、用户部分。

1)硬件部分

我们看得见的,就是计算机底层的硬件。

网卡、硬盘等等

2)操作系统

如果只有这些硬件是不够的,还需要有一个软件来对这些硬件进行管理。

例如,内存何时从输入设备读取数据?读取多少数据?内存何时刷新缓冲区到输出设备?是按行刷新还是全刷新?这些都是由软件进行管理的,而这个软件就是操作系统(Operator System)。

操作系统主要进行以下四项管理:

内存管理:内存分配、内存共享、内存保护以及内存扩张等等。
驱动管理:对计算机设备驱动驱动程序的分类、更新、删除等操作。
文件管理:文件存储空间的管理、目录管理、文件操作管理以及文件保护等等。
进程管理:其工作主要是进程的调度。
操作系统的核心工作就是去做管理,管理的重要理念就是:先描述,再组织!

3)驱动程序

驱动程序,全称为“设备驱动程序”,它是一种特殊的程序。

首先其作用是将硬件本身的功能告诉操作系统,
接下来的主要功能就是完成硬件设备电子信号与操作系统及软件的高级编程语言之间的互相翻译。当操作系统需要使用某个硬件时,比如:让声卡播放音乐,它会先发送相应指令到声卡驱动程序,声卡驱动程序接收到后,马上将其翻译成声卡才能听懂的电子信号命令,从而让声卡播放音乐。

所以简单的说驱动程序提供了硬件到操作系统的一个接口以及协调二者之间的关系。

4)用户部分

操作系统再往上就是我们所处的位置,在这里我们就可以用命令行或是图形化界面进行各种操作,这一层被称为用户部分。

5)系统调用接口

为了更好地服务于应用程序,操作系统提供了一组特殊接口———系统调用。用户程序可以通过这组特殊的接口来获取操作系统内核提供的各种功能,如分配内存、创建进程、实现进程之间的通信等。

那么为什么要提供这些系统接口呢?

举个例子:

相信大家都去过银行吧。

对于银行(操作系统)来说,任何人都是不可靠的,但是又不得不提供服务。

所以把银行的整个系统是用对应的玻璃全部隔开,只给大家开个小窗口(接口),用来办理业务!

操作系统是负责管理软硬件资源。其内部保存着非常多的资源,一旦发生改变就会造成影响。因此操作系统采用类似银行的做法,只提供系统调用函数,提供一个接口供用户使用。不让用户随意操作、误触。

为什么用户程序不能直接访问系统内核提供的服务呢?

答案是不安全。

  单片机开发中,由于不需要操作系统,只需要知道寄存器的地址,代码通过指针直接操作硬件,所以开发人员可以编写代码直接访问硬件。硬件>>>>>>代码直接在内存中运行操作硬件。

  而在嵌入式系统中通常都要运行操作系统,程序访问资源的方式就发生了改变。操作系统基本上都支持多任务,即同时可以运行多个程序。如果允许程序直接访问系统资源,肯定会带来很多问题。因此,所有软硬件资源的管理和分配都由操作系统负责。程序要获取资源(如分配内存、读写串口)必须通过操作系统来完成,即用户程序向操作系统发出服务请求,操作系统收到请求后执行相关的代码来处理。硬件>>>>>>>操作系统>>>>>>>代码

  还有更重要的一点是,在Linux中,为了更好地保护内核空间,将程序的运行空间分为用户空间和内核空间(也就是常称的用户态和内核态),它们分别运行在不同的级别上,逻辑上是相互分离的。因此,用户进程通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间的函数。但是,在有些情况下,用户空间的进程需要获得内核的系统服务(调用内核空间程序),这时操作系统就必须利用系统提供用户的特殊接口———”系统调用”规定用户进程进入内核空间的具体位置。在进行系统调用时,程序运行空间需要从用户空间进入内核空间,处理完成后再返回用户空间。

  用户程序向操作系统提出请求的接口就是系统调用。所有的操作系统都会提供系统调用接口,只不过不同的操作系统提供的系统调用接口各不相同。Linux系统调用接口非常精简(只有250个左右),它继承了UNIX系统调用中最基本和最有用的部分。这些系统调用按照功能大致可分为进程控制、进程间通信、文件系统控制、存储管理、网络管理、套接字控制、用户管理等。

总结:

用户也不能跨越操作系统进行对软件、硬件的资源访问!!因为这样的事情将导致极不安全的系统。

6)用户接口操作

系统调用在使用上,功能比较基础,对用户的要求相对也比较高.

所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。


系统调用 和 库函数的关系?


系统调用:操作系统提供的接口,可以实现操作系统的各种功能。

库函数:用户层提供,部分库函数会进行系统调用。

部分库函数会进行系统调用。这时是上下层的关系。上层是库函数,下层是系统调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/51501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用IntelliJ IDEA将本地项目推送到远程Git

1,安装Git 打开 下载地址,下载Git安装包。根据引导程序,完成安装。 2,IntelliJ IDEA配置Git 打开IntelliJ IDEA,依次点击File>>Settings…>>Git,然后配置自己的Git的路径,然后点…

mysql 死锁 锁表的解决方法

查看那个表锁了 SHOW OPEN TABLES where In_use > 0; show processlist SELECT * FROM information_schema.INNODB_TRX; 查看锁的进程 kill 掉进程id (trx_mysql_thread_id)

PCIE-Precode

Transmitter Precode Request: Precoding可以有效的降低Burst errors(突发连续)的影响,但是Bit Error Rate(BER)将上升为之前的两倍. ​​​​​​[FPGA 实现及PCIe IP 核知识点] PCIe为什么要增加Precoding&#xff…

趣味算法------拯救阿拉德大陆

目录 ​编辑 题目描述: 思路解析: 具体代码: 总结: 题目描述: 此时一批勇士也随之而来,但其能力也是参差不齐,我们需要挑选出最优秀的勇士来守护这片大陆。每位勇士都有属于自己的编号&am…

网络安全售前入门04——审计类产品了解

目录 1.前言 2.数据库审计介绍 2.1产品架构功能 2.2应用场景 2.3部署形式 2.4产品价值 2.5选型依据 1.前言 为方便初接触网络安全售前工作的小伙伴了解网安行业情况,我制作一系统售前入门(安全产品,安全服务,法律法规等)文章介绍,希望能给初进网安职场的小伙伴提供…

上书房信息咨询:医疗满意度调研

随着人们生活水平的不断提高,医疗服务的需求日益增长。近期,上书房信息咨询受托完成了某市医疗市场的满意度调研,旨在深入了解市民对医疗服务的评价和需求,为提升医疗服务质量提供有力支持。 近年来,某市致力于推进医…

国产游戏技术能否引领全球

目录 1.概述 1.1.面临的挑战 1.2.机遇 1.3.IT技术创新如何推动行业发展 2.技术解析 2.1.图形渲染技术 2.2.物理引擎 2.3.人工智能 (AI) 3.行业影响 3.1.对国内游戏开发行业的影响 3.2.IT人才需求变化 3.3.技术发展方向 4.未来展望 4.1. 发展前景 4.2. IT技术人员…

分布式基础理论——CAP理论和BASE理论

文章目录 CAP 理论BASE 理论参考资料 CAP 理论 CAP定理(CAP theorem)指出,在分布式系统中,设计读写操作时只能同时满足以下三个特性中的两个: 一致性(Consistency) : 所有节点访问同一份最新的…

用于目标说话人提取的统一视听线索

第二章 目标说话人提取之《Unified Audio Visual Cues for Target Speaker Extraction 》 文章目录 前言一、任务二、动机三、挑战四、方法1.总体架构2.tes网络3. 融合网络4.损失函数 五、实验评价1.数据集2.消融实验3.客观评价4.主观评价 六、结论七、知识小结 前言 语音新手…

93.WEB渗透测试-信息收集-Google语法(7)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:92.WEB渗透测试-信息收集-Google语法(6) • intext • intext 的作…

[数据集][目标检测]电力场景输电线导线散股检测数据集VOC+YOLO格式3890张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3890 标注数量(xml文件个数):3890 标注数量(txt文件个数):3890 标注…

亲测好用,吐血整理 ChatGPT 3.5/4.0 新手使用手册~ 【2024年9月 更新】

废话不多说,直接分享正文~ 以下是小编为大家搜集到的最新的ChatGPT国内站,各有优缺点。 1、AI Plus(稳定使用) 推荐指数:⭐⭐⭐⭐⭐ yixiaai.com 该网站已经稳定运营了1年多了。2023年3月份第一批上线的网…

网络udp及ipc内存共享

大字符串找小字符串 调试 1. 信号处理函数注册:•一旦使用 signal 函数注册了信号处理函数,该函数就会一直有效,直到程序结束或者显式地取消注册。2. 注册多次的影响:•如果多次注册同一信号的处理函数,最后一次注册的…

PHP软件下载-安装-环境配置

.1.下载 下载地址如下 windows.php.net - /downloads/releases/ 安装包如下. .2.安装 可以在D盘或者E盘的根目录创建一个自定义目录。注意文件夹目录中不能包含中文,不能包含空格等特殊字符。 版本说明: (1)ts表示非线程安全版本。这个安装包还指明了…

Spring security 密码加密使用

一、密码加密 2011年12月21日,有人在网络上公开了一个包含600万个CSDN 用户资料的数据库,数据全部为明文储存,包含用户名、密码以及注册邮箱。事件发生后CSDN 在微博、官方网站等渠道发出了声明、解释说此数据库系2009 年备份所用&#xff0c…

Adobe After Effects的插件--------CC Ball Action

CC Ball Action是粒子效果器,其将2D图层变为一个个由3D小球构成的图层。它是AE内置的3D插件。 使用条件 使用该插件的图层需是2D图层。 我们以一张图片素材为例: 给图片图层添加CC Ball Action效果控件,然后新建一个摄像机(利用摄像机旋转、平移、推拉工具,方便在各个角…

OpenCV几何图像变换(6)计算反转仿射变换函数invertAffineTransform()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 反转一个仿射变换。 该函数计算由 23 矩阵 M 表示的逆仿射变换: [ a 11 a 12 b 1 a 21 a 22 b 2 ] \begin{bmatrix} a_{11} & a…

OpenCV绘图函数(2)绘制圆形函数circle()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 绘制一个圆。 cv::circle 函数用于绘制一个给定中心和半径的简单圆或填充圆。 函数原型 void cv::circle (InputOutputArray img,Point cen…

【JVM】垃圾回收算法(一)

垃圾回收算法 Java程序在运行过程中会产生大量的对象,但是内存大小是有限的,如果光用而不释放,那内存迟早被耗尽。如C/C程序,需要程序员手动释放内存,Java则不需要,是由垃圾回收期去自动回收。垃圾回收器回…

基于x86 平台opencv的图像采集和seetaface6的眼睛状态检测(睁眼,闭眼)功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.3 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的眼睛状态检测(睁眼,闭眼)功能,opencv通过摄像头采集视频图像,将采集的视频图像送给seetaface6的眼睛…