操作系统——操作系统用户界面

news2025/1/10 10:37:34

0.关注博主有更多知识

操作系统入门知识合集

目录

3.1操作系统启动过程

3.1.1BIOS和主引导记录MBR

思考题:

 3.1.2操作系统的启动过程

思考题:

3.2用户界面

3.2.1用户界面概念

 思考题:

3.2.2系统调用

3.1操作系统启动过程

3.1.1BIOS和主引导记录MBR

计算机有两种模式:

  1.实模式:当计算机刚开机、刚上电、还没有加载操作系统的时候,计算器处于实模式(实地址模式,REAL MODE),程序将会按照8086的寻址方式方法直接访问物理地址0h-FFFFFh(1MB)的空间(我们说过没有操作系统的计算机也能运行程序)。其寻址并不是直接拿到物理地址,而是需要一定的转换,也就是说,当程序拿到某个地址,需要将其拆分为段地址:偏移地址,计算之后的结果才是物理地址。此时CPU只能支持单任务运行。

  2.保护模式:又称内存保护模式(PROTECT MODE)。当操作系统被加载到内存后,开始接管计算机之后,计算机就处于保护模式了。此时程序的寻址方式相较于实模式会变得更加复杂,在这种模式下程序基本上能够访问完整的内存空间,但并不是直接访问物理地址,而是操作系统通过一种特殊的手段使程序必须通过段页式的寻址机制访问内存。这种特殊手段称为虚拟内存技术。当计算机处于保护模式下时,应用程序和操作系统的运行环境都被保护,且CPU支持多任务运行。

具体分析计算机的实模式:

  1.实模式下,程序只能访问1MB的空间,这1MB的空间又被分成前640K[00000 -> 9FFFF]:基本内存;中间128K[A0000 -> BFFFF]:显卡显存;末尾256K[C0000 -> FFFFF]:BIOS。其中末尾256K的BIOS又分为[C0000 -> C7FFF]:显示卡BOIS;[C8000 -> CBFFF]:IDE控制器BIOS;最后64K[F0000 -> FFFFF]:系统BIOS

  2.系统BIOS:系统BIOS称为基本输入/输出系统,它是一个固件(以硬件形式存在的软件称为固件),它位于BIOS的最后64K。其功能为系统启动配置、基本设备的I/O服务、系统的加电自检和启动。

  3.系统启动配置:其实我们已经跟它见过面了,它就是CMOS设置。它能够让用户设置一些最基本的启动配置,例如是从磁盘启动操作系统还是从U盘启动操作系统。

  4.系统BIOS提供的基本设备的I/O服务:系统BIOS是一个固件,所以被加载到内存后就变成了真正意义上的软件。它提供I/O服务的方式是以中断的形式存在,不同的中断对应不同的功能。

每一种功能还有对应的子功能,例如13号中断信号,它对应软盘的I/O调用,具体怎么调用,就取决了子功能了。

 现在确定了基本I/O的工作,就需要进一步细化工作。例如13号中断信号的2号子功能,读扇区,这时候还需要提供一些参数以便直到读哪个扇区、读多少扇区等等。

   5.系统BIOS提供的加电自检功能:加电自检称为POST,计算机刚上电的时候,CPU执行开机之后的第一条指令跳转到POST进行自检。加电自检的功能是对基本硬件进行初始化工作,例如CPU、内存、显卡等等,如果检查出现错误,将会发出警报声提醒用户。POST加电自检以后,会依次查找显卡BIOS、调用显卡BIOS;然后依次查找其他设备的BIOS;然后显示启动画面,显示一些BIOS信息、芯片组型号、主板信息等等;然后从某种介质当中读取操作系统到内存中,最后操作系统接管计算机。

主引导记录MBR:

  MBR存放于主启动扇区中,主启动扇区位于磁盘的首个扇区(第一个磁面上的第一个磁道的第一个扇区),它的大小有512字节,存放和操作系统有关的相关信息(Main Boot Record)。我们知道操作系统是放在磁盘上的,所以操作系统被放进内存之前一定是由MBR做工作。但MBR并不会直接将操作系统写入内存,而是读取分区引导记录PBR。PBR位于操作系统所处的分区的首个扇区,它可以作为直接引导操作系统加载到内存的直接引导记录。

  由此我们可以推测出BIOS和MBR程序运行的过程大致是这样的:首先用户按下计算机的电源开关->CPU执行第一条指令跳转到POST进行开机自检->检查完成后,读取CMOS设置的操作系统的启动方式->CPU读取MBR到内存中来->MBR读取分区表,找到分区表中的活动分区(通常是操作系统所在的分区),并确认其他的分区都不是活动的(加载的操作系统只能有一个),然后MBR读取分区的PBR到内存中->PBR继续控制后面的操作系统的引导过程。

思考题:

1.BIOS中断时INT xxh的形式,例如INT 13H是磁盘读写服务。那么INT 21H与BIOS的中断信号的中断机制是不是一样的呢?

INT 21H是DOS的一个中断信号,DOS称为磁盘操作系统,它是负责直接管理磁盘的软件。而BIOS作为一个软件(因为它被放在内存中,BIOS是内嵌在主板上的),它发送的中断信号与DOS的中断信号是有本质区别的。DOS作为操作系统,它的INT 21H一定是一个系统调用,是为上层 应用程序提供的接口;而BIOS它不是操作系统,所以可以理解为INT 21H这个中断是提供给BIOS使用的。

 3.1.2操作系统的启动过程

操作系统的启动过程的定义是从计算机加电到操作系统加载完成,能够被用户使用的这么一段过程。它分为三个阶段:初始引导、核心初始化、系统初始化。

初始引导:

  1.目的:把操作系统核心装入内存并让操作系统开始接管计算机

  2.过程:计算机开机->加电自检->BIOS的启动程序运行,加载MBR到内存中->MBR加载PBR->加载硬盘上的操作系统内核,并初始化基本参数->内核加载到内存之后,会继续加载操作系统的剩余部分(例如微内核结构的操作系统,会加载核外服务器),最后完全控制计算机。

核心初始化:

  1.目的:操作系统内核初始化操作系统的核心数据

  2.典型工作:初始化各种寄存器、初始化存储系统和页表、构建核心进程......

系统初始化:

  1.目的:为用户使用操作系统做好准备,使操作系统处于待命状态

  2.主要工作:初始化文件系统、初始化网络系统、初始化控制台、初始化图形化界面......

Windows的启动过程:

  1.POST:加电后由BIOS启动主机的自检程序

  2.初始引导:BIOS读入MBR到内存,MBR引导DOS7.0的启动,并调入操作系统内核到内存,然后Windows接管计算机

  3.核心初始化:初始化资源状态、核心数据等

  4.系统初始化:GUI界面生成,用户可以随时使用操作系统,操作系统处于待命、消息接收状态

Linux的启动过程:

  POST->MBR->KERNEL映像->KERNEL映像边解压边执行->内核初始化->内核开始工作,接管计算机->系统初始化,生成控制台界面。

  需要注意的使,Linux的内核映像并不是一个完整的映像,而是一个压缩文件(可能前面的某些部分是解压后的真实代码),这个内核映像被加载到内存后是边解压边工作的。

思考题:

1.操作系统的初始化引导涉及哪些程序模块?存放的介质是什么?

初始化引导中的程序模块涉及到:BIOS的启动程序,它内嵌在主板的BIOS芯片上;硬盘当中的MBR和PBR,存放在硬盘对应分区的首个扇区当中;操作系统的内核,存放在硬盘的某个分区。

3.2用户界面

3.2.1用户界面概念

用户界面的定义:操作系统提供给用户控制计算机的机制,这种机制又称用户接口。

用户界面分为两类:用户可视化操作界面(可视化界面、控制台窗口、批处理程序);系统调用(通常被程序员使用)。

用户可视化操作界面:

  1.图形用户接口(GUI,Graphics User Interface):提供这种用户的接口的典型操作系统为Windows和MAC OS,它们由窗口、图标、菜单、按钮、鼠标等组成。

  2.键盘命令(COMMAND):在控制台环境下接收键盘输入的命令,这些命令分为普通命令、批处理程序、shell脚本等等。

  3.普通命令:以DOS操作系统为例,它的典型命令就有文件管理的命令COPY、COMP、TYPE、DEL、REN,磁盘管理的命令FOMAT、CHKDSK、DISKCOPY、DISKCOMP,目录管理的命令DIR、CD、MD、RD、TREE......以Linux操作系统为例,它的典型命令就有查看命名和帮助的指令man,改变工作路径的命令cd,列出目录信息的指令ls......以上列举的都是操作系统提供的普通命令。

  4.批处理程序:普通命令的集合,这些集合起来的命令按批处理,并且命令与命令之间具有一定的逻辑关系。批处理程序支持变量替换、条件、转移、循环、注释等基本的简单语法,在Windows环境下,批处理程序的后缀为.BAT(.bat)。我们编写一个最简单的批处理程序,它直接输出"Hello Bat"到控制台上。

@echo off
echo Hello Bat!
pause

   5.Shell:Shell是操作系统与用户交互的界面,它表现为通过控制台执行用户的命令,但实际上Shell本身不执行命令,而是组织和管理命令,将命令交给操作系统执行,然后执行的结果通过Shell返回给用户,所以我们说它是表现为执行用户的命令

   6.Shell的发展与分类:第一个Shell便是1970年诞生的Bsh,具有较强的脚本编程功能,随后便是1980年出现的Csh,使用C语言,用户命令交互方便;在此基础上,又诞生出了Ksh,Ksh结合了Bsh和Csh的优势;最后,现在主流的Shell便是Bash,Bash是对Bsh的升级,并且吸收了Ksh的特性,是一个开源的Shell。

   7.Bash的主要功能:Bash提供命令行编辑功能、命令和文件名补全功能、命令历史功能、命令别名功能、作业控制功能、管道与重定向、将命令序列定义为功能键的功能、Shell脚本编程。命令行编辑功能可以操作左右方向键,使得光标在当前命令行中以后字符间进行任意移动;退格键能够删除命令行中光标左边的字符;Del键能够删除当前光标处的字符......可以使用Tab键在命令查找路径中查找匹配的命令,并进行命令拼写的补全;使用Tab键可对文件和目录名进行补全......可以使用上下方向键浏览已输入的命令(历史命令)......在Linux的Bash上,可以使用'<'操作符将命令输入由默认的键盘更改(重定向)为指定的文件;操作符'>'将命令输出由默认的显示器更改(重定向)为指定的文件;操作符'>>'将命令输出重定向并追加到指定文件的末尾......

  8.Bash功能实例(以Linux为例):

    1.将命令输出重定向到文件:

     2.管道:管道是一种特殊的重定向操作,其操作符为'|',用于连接左右两个命令,将'|'左边命令的执行结果作为'|'右边命令的输入。并且在同一条命令中可以使用多个'|'连接多个命令。

 思考题:

1.比较Windows7与Linux早期版本都有哪些典型的操作界面?操作界面对普通用户选择操作系统有何影响?

Windows的GUI界面、Linux的Shell界面;对应用户来说,肯定会选择互动性高、方便、快捷、直观、易操作的操作系统;不过在不同的需求、环境下,选择的操作系统也有所差别,例如在公司企业当中不适合将Windows作为第一生产力操作系统,更加适合选择Linux。

3.2.2系统调用

操作系统提供的用户接口分为操作界面和系统调用,它们都是操作系统提供给用户与计算机互动的接口。操作界面通常被普通用户使用,系统调用通常被程序员使用。

系统调用的定义:

  操作系统内核为应用程序提供的服务/函数。例如DOS操作系统提供的21h(09)(21号中断9号功能),C语言库提供的printf函数(里面封装了向显示器输出的系统调用)、exit函数(里面封装了操作系统控制进程的函数)。

 系统调用的特点:

  1.系统调用一般都涉及核心资源或硬件的操作,所以系统调用的具体代码属于内核,运行于内核态

  2.每个系统调用具有唯一的编号(ID)

  3.调用系统调用会产生中断,这种中断属于自愿中断,因为是程序员安排中断在这里的

系统调用的中断过程:

  实际上与普通中断一样,都是令CPU暂定当前任务的执行,转向执行中断处理程序。

调用系统调用后,CPU如何发生态的转换? 

  1.DOS操作系统利用INT 21h中断发生态的转换。以一段汇编代码为例:

string DB 'Hello!'  ;定义要显示的字符串
  ......
MOV DX, string  ;DX字符串地址
MOV AH, 09h  ; AH-09h号子功能
INT 21h

指令"MOV AH,09h"将中断程序的入口地址填入AH寄存器,然后执行"INT 21h"指令,这条指令能够将CPU的态从用户态修改为内核态。

  2.Linux操作系统利用INT 80h中断发生态的转换。以一段汇编代码为例:

;输出字符串︰Hello World !
MOV EBX, 1   ;EBX送1表示stdout
MOV ECX, MSG ;字符串的首地址送入ecx
MOV EDX, 14 ;字符串的长度送入edx
MOV EAX 4   ;指定系统调用的编号
INT 80h     ;中断︰输出字串
MSG: DB "Hello World!"

指令"MOV EAX 4"将4号系统调用的入口地址填入EAX寄存器,然后执行"INT 80h"指令,使得该程序陷入内核,CPU工作在内核态。

隐式系统调用:

  类似于API函数,通常在高级语言中使用,其中包含有"INT 80h"中断指令,执行相应的系统调用。例如C语言程序:

#include <stdio.h>
int main()
{
  printf("Hello World!\n");
  exit(0);          
}

我们虽然看不到任何汇编指令,但熟悉C程序编译过程的朋友一定知道在编译阶段检查完语法之后生成汇编语句。对应的汇编语句就有"INT 80h"这条指令。

Linux系统调用的工作原理:

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

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

相关文章

【五一创作】使用Resnet残差网络对图像进行分类(猫十二分类,模型定义、训练、保存、预测)(一)

使用Resnet残差网络对图像进行分类 &#xff08;猫十二分类&#xff0c;模型定义、训练、保存、预测&#xff09;(一&#xff09; 目录 一、项目简介 二、环境说明 1、安装库 2、导入需要的库 三、分类过程 &#xff08;1&#xff09;、解压数据集 &#xff08;2&#xf…

Spring中的Bean

1. Bean的配置 Spring 可以被看作是一个大型工厂&#xff0c;这个工厂的作用就是生产和管理 Spring 容器中的Bean。如果想要在项目中使用这个工厂&#xff0c;就需要开发者对Spring 的配置文件进行配置。 Spring 容器支持XML 和 Properties 两种格式的配置文件&#xff0c;在实…

【Python Web】Flask超实用基础知识总结(内附代码)

Flask是一种轻量级Web应用框架&#xff0c;使用Python编写。它是一个简单易用的框架&#xff0c;适合构建小型到中型的Web应用程序。Flask提供了基本的Web开发功能&#xff0c;如路由、请求处理、模板渲染、文件上传等。 下面是Flask的一些基础语法 文章目录 1.静态文件处理2.…

【建议收藏】计算机视觉是什么?这几个计算机视觉的核心任务你真的了解吗?

文章目录 &#x1f4da;引言&#x1f4d6;计算机视觉的核心任务&#x1f4d1;图像分类和对象识别&#x1f4d1;目标检测&#x1f4d1;语义分割&#x1f4d1;实例分割&#x1f4d1;图像生成 &#x1f4d6;计算机视觉的应用领域&#x1f4d1;人脸识别&#x1f4d1;自动驾驶&#…

【论文阅读】LORA: LOW-RANK ADAPTATION OF LARGE LAN- GUAGE MODELS

3.最近很多工作好像都绕不开lora&#xff0c;无论是sd还是llm.... 1. 背景 问题&#xff1a;大模型重新训练所有模型参数的完全微调变得不太可行。lora在做什么 我们提出了低秩自适应&#xff0c;即LoRA&#xff0c;它冻结预先训练的模型权重&#xff0c;并将可训练的秩分解矩…

高级数据结构 Trie树(字典树)

高级数据结构 Trie树&#xff08;字典树&#xff09; &#xff08;Trie Tree&#xff09;字典树_Rkun18的博客-CSDN博客 字典树节点表示 #define TRIE_MAX_CHAR_NUM 26 //这里你可以自由设置 根据不同需求设置 如果有大小或者其他符号你就需要增大这个数字struct TrieNode{T…

在amd64与arm上用paddlelite部署paddelOCR(Ascend硬件)

由于部署的硬件是华为昇腾 NPU&#xff08;Ascend310&#xff09;&#xff0c;参考网址https://www.paddlepaddle.org.cn/lite/v2.10/demo_guides/huawei_ascend_npu.html#npu-paddle-lite 先拉取paddlelite用来编译库 git clone https://github.com/PaddlePaddle/Paddle-Lit…

2. Java 异常体系

2.1 Throwable java.lang.Throwable 类是 Java 程序执行过程中发生的异常事件对应的类的根父类。 Throwable 中的常用方法&#xff1a; public void printStackTrace()&#xff1a;打印异常的详细信息。 包含了异常的类型、异常的原因、异常出现的位置、在开发和调试阶段都得…

倾斜摄影超大场景的三维模型轻量化纹理压缩的关键技术

倾斜摄影超大场景的三维模型轻量化纹理压缩的关键技术 倾斜摄影超大场景的三维模型轻量化处理中纹理压缩是轻量化处理的重要手段之一&#xff0c;可以在保证模型真实感的前提下&#xff0c;减小数据体积、降低传输带宽和提高渲染性能。以下是几个关键的纹理压缩技术&#xff1a…

自然语言处理知识抽取(pkuseg、DDParser安装及使用)

一、分词简介 1.基本概念 分词是自然语言处理中的一个重要步骤&#xff0c;它可以帮助我们将文本分成一个个词语&#xff0c;以便更好地理解和分析文本。在计算机视觉、语音识别、机器翻译等领域&#xff0c;分词都扮演着重要的角色。 目前&#xff0c;常用的分词库包括 jie…

搭建Redis主从集群+哨兵+代理predixy

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Redis是什么&#xff1f;二、搭建Redis集群步骤1.环境和版本2.Redis 安装部署3.主从同步配置4.哨兵模式配置5.代理predixy配置 总结 前言 提示&#xff1a…

深度学习 -- Dataset与DataLoader

前言 在模型训练的步骤中&#xff0c;数据的部分非常重要&#xff0c;它的过程主要分为数据收集、数据划分、数据读取、数据预处理。 数据收集的有原始样本和标签(Img&#xff0c;label) 数据集的划分需要分为训练集、验证集、测试集。 训练集负责训练模型&#xff0c;验证集…

【C++】C++11常用特性总结

哥们哥们&#xff0c;把书读烂&#xff0c;困在爱里是笨蛋&#xff01; 文章目录 一、统一的列表初始化1.统一的{}初始化2.std::initializer_list类型的初始化 二、简化声明的关键字1.decltype2.auto && nullptr 三、STL中的一些变化1.新增容器&#xff1a;array &…

趣说数据结构(练习2) —— 顺序表/链表力扣刷题(中等难度)

练习 2 —— 顺序表/链表力扣刷题&#xff08;中等难度&#xff09; 1. 反转链表 II 力扣原题&#xff1a;https://leetcode.cn/problems/reverse-linked-list-ii/ 题目描述 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从…

数据可视化大屏的页面布局以及自适应

在做数据可视化大屏之前&#xff0c;我们需要考虑到页面的布局问题以及页面缩放自适应问题&#xff0c;下面分别就这两个方面讲解。 页面布局 类似这种页面区块的明显划分&#xff0c;常用的布局方式有两种&#xff1a; 1、flex布局 2、grid布局 grid布局 grid布局可以按区块…

山东专升本计算机第二章-Windows7操作系统

Windows7操作系统 2.3Windows7的文件和文件夹管理 考点7 Windows7的基础知识 文件&#xff0c;是指存放在外存储器上的一组相关信息的•集合 文件名是操作系统中区分不同文件的唯一标志 文件名是由主文件名和扩展名两部分组成不能使用 ▏ < > * ? \ / &#xff1a; …

单向带头链表的添加修改删除操作

public class HeroNodeDemo {public static void main(String[] args) {HeroNode hero1 new HeroNode(1, "松江");HeroNode hero2 new HeroNode(2, "武松");HeroNode hero3 new HeroNode(3, "及时雨");HeroNode hero4 new HeroNode(4, "…

prometheus实战之一:用ansible部署

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 关于《prometheus实战》 《prometheus实战》是欣宸原创的系列文章&#xff0c;旨在通过实战操作来熟悉和掌握prometheus常规技能 本篇概览 本文是《promet…

spring 容器结构/机制debug分析--Spring 学习的核心内容和几个重要概念--IOC 的开发模式--综合解图

目录 Spring Spring 学习的核心内容 解读上图: Spring 几个重要概念 ● 传统的开发模式 解读上图 ● IOC 的开发模式 解读上图 代码示例—入门 xml代码 注意事项和细节 1、说明 2、解释一下类加载路径 3、debug 看看 spring 容器结构/机制 综合解图 Spring Spr…

使用SPY++查看窗口信息去分析C++客户端UI软件问题

目录 1、使用SPY查看窗口的信息 2、使用SPY查看某些软件UI窗口用什么UI组件实现的 2.1、查看海康视频监控客户端安装包程序 2.2、查看华为协同办公软件WeLink 2.3、查看字节协同办公软件飞书 2.4、查看最新版本的Chrome浏览器 2.5、查看小鱼易连视频会议客户端软件 2.6…