【Linux】初步识操作系统

news2024/11/14 15:10:08

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.coloradmin.cn/o/2082144.html

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

相关文章

Linux 数据结构 链表

1.段错误调试方法: 1.按照网上的方法配置Ubuntu,允许生成core文件 2.重新编译代码并加入-g选项(允许进行GDB调试) 3.ulimit -c unlimited 不限制core文件的生成的大小 4.执行代码,复现段错误,产生包含出错信息的core文件(检查cor…

呼叫系统怎么使用提高安全性

呼叫中心提高使用的安全性是一个综合性的任务,涉及技术、管理、人员等多个方面。以下是一些关键措施,旨在提升呼叫中心的安全性: 一、加强技术防护 1.数据加密:采用先进的加密技术对通话内容和数据传输进行加密,如使用…

浙大联合港中深发布AI医疗最新报告,全面审视「虚拟现实+人工智能」

想象一下,医生在手术前,通过虚拟现实技术,能够身临其境地预演手术过程,精确到每一个细节;患者则可以在VR环境中进行心理治疗,减轻焦虑与恐惧。 这一切,都得益于AI与VR的强强联手。 医学视觉增强…

今日分享丨微服务架构下查询数据缓存策略

引言 随着企业业务规模的扩大和复杂度的提升,微服务架构因其高可用性、可扩展性和易于维护的特性,逐渐成为现代软件开发的首选架构模式。然而,微服务架构带来的分布式特性也增加了数据访问的复杂性和延迟。特别是业务查询领域,一…

HIS系统成品|HIS系统搭建|医院HIS系统开发

在医疗信息化的浪潮中,医院信息系统(HIS)的开发功能分析成为关键。本文将探讨如何通过功能分析构建一个高效、智能的HIS系统,以满足现代医院的需求,并提升医疗服务质量。 1、HIS系统功能分析的必要性 在医疗行业中&am…

基于java的进销存管理系统设计与实现

需求分析 进销存主要是帮助商业企业全面有效管理采购、销售和库存,软件适用于需要进行采购管理,销售管理以及库存管理的所有商业企业。 进销存系统的产生和发展情况 进销存软件是一款通用性极强的商业企业进销存管理系统,软件囊括了商业企业…

第六届机器人与智能制造技术国际会议 (ISRIMT 2024)

重要信息 大会官网:www.isrimt.org(点击了解大会,参会,投稿等信息) 大会时间:2024年9月20-22日 大会地点:中国-江苏常州 收录检索:IEEE Xplore, EI Compendex, Scopus 大会简介…

航空公司名字趣史:看看有趣又有意义的命名背后有什么玄机

上周“东海航空”事件引发了东方航空在社交媒体上的一系列被迫营业,因为媒体的乌龙报道误将“东海航空”简称为“东航”,甚至直接用错了图片。众号:标猿公司起名 给公司起个好名字 其实除了大部分以地域、国家命名的航空公司,还…

Java 8 Optional用法【总结记录】

一、前言 这里引用书中描述来介绍Optional类: Optional是为核心类库设计的一个数据类型,用来替换null值。人们对原有的null值有很多抱怨,甚至连发明这一概念的Tony Hoare也是如此,他曾说这是自己的一个“价值连城的错误”。作为一…

cad导出图片格式怎么导出?5个软件帮助你快速转换文件格式

cad导出图片格式怎么导出?5个软件帮助你快速转换文件格式 将CAD文件导出为图片格式可以帮助你更方便地展示、分享或打印设计图纸。CAD(Computer-Aided Design)文件通常以DWG或DXF格式保存,而要将它们转换为常见的图片格式&#x…

NodeJS “次元高校”社团管理系统 ---附源码94897

摘要 计算机科学技术的飞速发展也更好地促进了高校信息化建设。为了适应新形势下更好地培养人才,高校在发展的过程中开始推进信息系统的建设。随着我国教育模式的不断改革和发展,越来越多的高校正在开展校园信息工程建设,以更好地提高高校的各…

C / C++内存管理

内存分布 1. 栈又叫堆栈--非静态局部变量/函数参数/返回值等等,栈是向下增长的。 2. 内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共 享内存,做进程间通信,子进程堆区的开辟。 3. …

文心快码帮你解大厂面试题:TCP关闭连接的过程,为什么要4次挥手,为什么最大等待时间是2*MSL?

🔍【大厂面试真题】系列,带你攻克大厂面试真题,秒变offer收割机! ❓今日问题:在8g内存的机器,能否启动一个7G堆大小的java进程? ❤️一起看看文心快码Baidu Comate给出的答案吧!如…

Oracle RAC 修改系统时区避坑指南(深挖篇)

大家好,这里是 Lucifer三思而后行,专注于提升数据库运维效率。 目录 前言环境安装问题重现时区检查修改时区问题分析问题解决 深究根源问题一问题二问题三 写在最后往期精彩文章推荐 前言 昨天遇到一个问题,Oracle RAC 安装完之后&#xff0…

bitsandbytes使用错误:CUDA Setup failed despite GPU being available

参考:https://huggingface.co/docs/bitsandbytes/main/en/installation 报错信息 ======================

【JavaEE精炼宝库】网络原理基础——网络层 | IP协议

文章目录 一、IP 协议的格式二、IP 地址的数量限制三、私有 IP 地址和公网 IP 地址3.1 私有 IP 地址和公网 IP 地址的基本知识:3.2 内网 IP 设备访问外网 IP 设备的过程(NAT 机制): 四、地址管理4.1 网段划分:4.1.1 网…

npm、cnpm、pnpm、yarn包管理工具别傻傻分不清楚了

干啥的: nodejs的包管理工具。 用于自动化处理包的安装、更新、配置和管理。它们之间的主要区别在于它们各自的实现方式、性能优化、以及一些特有的功能。 怎么用: 1、npm 1.1、描述 Node Package Manager默认包管理器从 npm 公共仓库中安装、共享…

.net framework 4.8 开发windows系统服务

ps:旧技术了,有一点局限性,但好像网上记录并不多,或是很零散,比较坑人。故自己记录一下。 项目环境: win 10、.Net framework 4.8,Visual Studio 2019,oracle 12G,ORM是SqlSugar5.…

uniapp video标签无法播放视频

当video标签路径含有中文以及特殊字符视频就会无法播放 解决方法使用encodeURIComponent对路径进行加密处理 videoSrc data.coursewareFile? ${appConfig.apiUrl encodeURIComponent(data.coursewareFile)}: "";最后效果

GHA高质量seo文章怎么写?

撰写高质量SEO文章不仅仅是文字的堆砌,更是对内容的精心打磨,而GHA文章更是如此,想写出一篇GHA文章,首先就要保证以下几点,一定要原创,谷歌对于原创内容是极其看重的,哪怕是伪原创,在…