操作系统面经-什么是操作系统?

通过以下四点可以概括操作系统到底是什么:

  1. 操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石。
  2. 操作系统本质上是一个运行在计算机上的软件程序 ,主要用于管理计算机硬件和软件资源。 举例:运行在你电脑上的所有应用程序都通过操作系统来调用系统内存以及磁盘等等硬件。
  3. 操作系统存在屏蔽了硬件层的复杂性。 操作系统就像是硬件使用的负责人,统筹着各种相关事项。
  4. 操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。 内核是连接应用程序和硬件的桥梁,决定着系统的性能和稳定性。

很多人容易把操作系统的内核(Kernel)和中央处理器(CPU,Central Processing Unit)弄混。你可以简单从下面两点来区别:

  1. 操作系统的内核(Kernel)属于操作系统层面,而 CPU 属于硬件。
  2. CPU 主要提供运算,处理各种指令的能力。内核(Kernel)主要负责系统管理比如内存管理,它屏蔽了对硬件的操作。

下图清晰说明了应用程序、内核、CPU 这三者的关系。

Kernel_Layout

首先让我们从对操作系统的需求开始讲起。

最早的计算机是没有操作系统的,一切的一切都需要工程师们手动操作,手动调整。大概是种什么感觉呢?Charles Petzold所著的《编码》中有一幅这样的图:

这是作者假想出来的一个对64KB随机存储器的控制面板,第一排的16个开关用来控制地址位,下面一排左边的8个开关用来控制要输入的八比特数据,右边的两个开关分别控制读写操作的执行与否。

看起来很头疼对不对,如果计算机没有操作系统,可能每一个使用计算机的人都要直接面对这种反人类的控制面板。而且这还只是一个假想的简单的原型,实际上以前的计算机是什么样子呢?请看下图:

图中遍布整个房间的大机器就是著名的埃尼阿克(ENIAC),通常被认为是世界上第一台通用计算机。从照片中我们可以看到一名工程师正在手动调整一个旋钮,像这样的旋钮,在他的身前有几百个,在照片中没有拍到的地方,可能还有几千几万个,更不要说还有那么多密密麻麻的线路和插口。

计算机没有操作系统的后果就是,人们要想使用计算机,必须直接面向硬件进行操作。而要想完成这样的操作,什么数字电路、计算机组成原理请您学好先。: )

这就引出了操作系统最主要的功能之一:

对硬件资源进行管理、分配、调度。

有了操作系统之后,这个程序需要占多少内存,今天具体把哪一块内存空间分给它,使用者无需关心,操作系统帮你打理;这个文件存在硬盘的哪个磁道哪个扇区,使用者无需关心,操作系统帮你打理;电脑里只有一个CPU,为什么可以同时运行多个程序,使用者无需关心,操作系统帮你打理。

有了操作系统,普通的使用者就不需要去学习那些艰深晦涩的专业知识,因为相关的工作已经交由操作系统来做了。

接下来我们再来思考一个问题,同样是操作系统,为什么DOS逐渐被淘汰了,而Windows成为了主流呢?

因为大部分人都更愿意使用图形界面(GUI),而不愿意使用命令行界面(CLI),以前的DOS大概长这样:

注意,是整个屏幕都是这样,而不是说某一个对话框里面是这样。

诚然,通过键盘输入命令这样的操作方式已经比我们手动去调整旋钮、连接线路要方便得多,但是对于普通人来说门槛还是有点高,这也是为什么在DOS时代计算机很难大面积地流行开来的一个原因。

相比之下,主要通过鼠标点击进行操作的图形操作系统显然要受欢迎得多。

Windows XP

由此可见,一个操作系统的操作方式、操作界面的好坏在对整个操作系统的评价中要占到很大的比重。

这就引出了操作系统的第二个主要功能:

向用户提供操作界面(专业的叫法是shell。)

这样的界面可能是命令行式的,也可能是图形化的,但是不管怎么说,这个shell需要给用户提供一种可能,使得用户可以通过shell执行所有该操作系统所提供的功能。对于命令行来说,需要提供足够多数量的命令;对于图形界面来说,需要提供足够多数量的按钮。

打个比方,对于一家银行来说,业务窗口以及窗口里的业务员就共同组成了一个shell,顾客通过走到窗口前,与业务员进行交流,进行业务的办理。至于业务员在电脑上进行了什么操作,业务员从哪里取钱给用户,业务员将用户存进去的钱放到哪里,这就不是用户应该关心的了。如果这个银行今天所有的业务员都请假了,那么进去的顾客就无法办理任何业务。

所以,最后总结一下,操作系统的所有功能大致可以分为两部分,一部分是管理其下层的硬件资源,一部分是向其上层的用户提供操作接口,即

操作系统是一种介于硬件和用户之间的特殊的软件。

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

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

相关文章

【Unity】获取游戏对象或组件的常用方法

前言 在Unity开发过程中,我们经常需要获取组件,那么在Unity里如何获取组件呢? 一、获取游戏对象 1.GameObject.Find GameObject.Find 是通过物体的名称获取对象的 所以会遍历当前整个场景,效率较低 而且只能获取激活状态的物体…

P2799 国王的魔镜

题目链接&#xff1a;国王的魔镜 - 洛谷 题目难度&#xff1a;普及- 涉及知识点&#xff1a;判断回文 题意&#xff1a; 分析&#xff1a;先判断是否是2的倍数&#xff0c;再判断回文 AC代码&#xff1a; #include<bits/stdc.h> using namespace std; char a[10000…

VMWare虚拟机使用openmediavault搭建NAS服务器完整步聚

下载: gopenmediavault - The open network attached storage solution 下载好openmediavault的ISO镜像后,打开虚拟机并安装 系统类型选择Debian 启动虚拟机并安装openmediavault 选择中文 地区选中国 键盘配置选汉语 开始安装 配置网络信息 配置root密码 确认密码 系统安装中…

汽车功能安全整体方法

摘 要 ISO26262道路车辆功能安全标准已经制定实践了多年&#xff0c;主要目标是应对车辆的电子和电气&#xff08;E/E&#xff09;系统失效。该方法践行至今&#xff0c;有些系统功能安全方法已经成熟&#xff0c;例如电池管理系统&#xff08;BMS&#xff09;&#xff0c;并且…

掌握C语言结构体,开启编程新世界

✨✨欢迎&#x1f44d;&#x1f44d;点赞☕️☕️收藏✍✍评论 个人主页&#xff1a;秋邱博客 所属栏目&#xff1a;C语言 &#xff08;感谢您的光临&#xff0c;您的光临蓬荜生辉&#xff09; 前言 前面我们也涉及到了结构体的讲解&#xff0c;但是只是粗略的讲了一下。 接下…

SpringBoot+Vue项目(后端项目搭建 + 添加家居)

文章目录 1.使用版本控制管理该项目1.创建远程仓库2.克隆到本地 2.后端项目环境搭建1.创建一个maven项目2.删除不必要的文件夹3.pom.xml文件引入依赖4.application.yml 配置数据源&#xff08;注意&#xff0c;数据库名还没写&#xff09;5.com/sun/furn/Application.java 编写…

python中医学习服务管理系统flask-django-php-nodejs

随着世界经济信息化、全球化的到来和互联网的飞速发展&#xff0c;推动了各行业的改革。若想达到安全&#xff0c;快捷的目的&#xff0c;就需要拥有信息化的组织和管理模式&#xff0c;建立一套合理、动态的、交互友好的、高效的中医学习服务管理系统。当前的信息管理存在工作…

JAVA后端调用OpenAI接口 实现打字机效果(SSE)

SSE SSE&#xff08;Server-Sent Events&#xff0c;服务器发送事件&#xff09;是一种基于HTTP协议的通信技术&#xff0c;它允许服务器持续地将数据推送给客户端&#xff0c;而无需客户端发起请求。这种通信方式通常用于实时性要求较高的场景&#xff0c;如实时更新、通知、或…

Python Flask框架 -- 模版继承

一个网站中&#xff0c;大部分网页的模块是重复的&#xff0c;比如顶部的导航栏&#xff0c;底部的备案信息。如果在每个页面中都重复的去写这些代码&#xff0c;会让项目变得臃肿&#xff0c;提高后期维护成本。比较好的做法是&#xff0c;通过模板继承&#xff0c;把一些重复…

STM32-Flash闪存

简介 STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&#xff0c;通过闪存存储器接口&#xff08;外设&#xff09;可以对程序存储器和选项字节进行擦除和编程。 读写Flash的用途 1.利用程序存储器的剩余空间来保存掉电不丢失的用户数据。 2.通过在程序中…

CVE-2024-24112 XMall后台管理系统 SQL 注入漏洞分析

------作者本科毕业设计项目 基于 Spring Boot Vue 开发而成...... [Affected Component] /item/list /item/listSearch /sys/log /order/list /member/list (need time-based blind injection) /member/list/remove 项目下载地址 Exrick/xmall: 基于SOA架构的分布式…

Django日志(一)

一、概念与配置 1.1、概述 日志是程序员经常在代码中使用快速和方便的调试工具。它在调试方面比print更加的优雅和灵活 而且日志记录对于调试很有用,可以提供更多,更好的结构化,有关应用程序的状态和运行状况的信息 Django框架的日志通过python内置的logging模块实现的,可…

Elasticsearch:让你的 Elasticsearch 索引与 Python 和 Google Cloud Platform 功能保持同步

作者&#xff1a;来自 Elastic Garson Elasticsearch 内的索引 (index) 是你可以将数据存储在文档中的位置。 在使用索引时&#xff0c;如果你使用的是动态数据集&#xff0c;数据可能会很快变旧。 为了避免此问题&#xff0c;你可以创建一个 Python 脚本来更新索引&#xff0…

每日OJ题_牛客WY3 小易的升级之路(IO型OJ)

目录 牛客WY3 小易的升级之路 解析代码 牛客WY3 小易的升级之路 小易的升级之路_牛客题霸_牛客网 解析代码 #include <iostream> #include <vector> using namespace std;int getVal(int a, int b) {if (a > b)swap(a, b);for (int i a; i > 1; --i){if…

科研绘图一:箱线图(添加贝赛尔曲线)

R语言绘图系列—箱线图贝赛尔曲线 &#xff08;一&#xff09;: 科研绘图一&#xff1a;箱线图&#xff08;添加贝赛尔曲线&#xff09; 文章目录 R语言绘图系列---箱线图贝赛尔曲线&#xff08;一&#xff09;: 科研绘图一&#xff1a;箱线图&#xff08;添加贝赛尔曲线&…

【MySQL】MySQL用户管理

文章目录 一、用户1.用户信息2.创建用户3.删除用户4.修改用户密码 二、数据库的权限1.给用户授权2.回收权限 一、用户 如果我们只能使用root用户&#xff0c;这样存在安全隐患。这时&#xff0c;就需要使用MySQL的用户管理。 1.用户信息 我们安装mysql之后&#xff0c;会自动…

DC-1靶场

一.环境搭建 下载地址 http://www.five86.com/downloads/DC-1.zip 把桥接设置为nat模式&#xff0c;打开靶机的时候会提示几个错误&#xff0c;点击重试即可 启动靶机&#xff0c;如下图所示即可 二.开始打靶 1.信息收集 arp-scan -l 扫描跟kali&#xff08;攻击机&…

MySQL基础(DDL,DML,DQL)

目录 一DDL 1.1数据库操作 1.1.1查询所有数据库&#xff1a; 1.1.2创建数据库 1.1.3 使用数据库 1.1.4 删除数据库 1.2表操作 1.2.1表操作 1.2.1.1创建表 1.2.1.1.1约束 1.2.1.1.2 数据类型 1.2.1.1.2.1 数值类型 1.2.1.1.2.2 字符串类型 1.2.1.1.2.3日期类型 1.…

Linux:执行命令的命令eval与Bash解析命令的方式

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 eval命令用于接收参数&#xff0c;并将这些参数作为一行命令执行&#xff0c;这也许会使人困惑&#xff0c;为什么我不能直接执行命令而需要使用eval命令间接执行呢&…

【应用笔记】LAT1305+使用STM32+TT类型IO的注意事项

1. 概述 在 STM32 系列 MCU 中&#xff0c; 除了一些特殊管脚外&#xff0c;绝大多数管脚都可以分类为 FT (兼容5V 信号)或 TT&#xff08;兼容 3V3 信号&#xff09;类型的 IO&#xff0c;由于 MCU 内部设计的不同&#xff0c; TT IO 相比 5V IO 有更多的限制&#xff0c;下面…