【操作系统OS】学习笔记:第一章 操作系统基础【哈工大李治军老师】

基于本人观看学习 哈工大李治军老师主讲的操作系统课程 所做的笔记,仅进行交流分享。

特此鸣谢李治军老师,操作系统的神作!

如果本篇笔记帮助到了你,还请点赞 关注 支持一下 ♡>𖥦<)!!

主页专栏有更多,如有疑问欢迎大家指正讨论,共同进步!

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ  

第一章    操作系统基础 

更多操作系统笔记:【哈工大李治军老师】操作系统笔记专栏汇总

目录

课程链接:

一、什么是操作系统

 1.操作系统的引入

 2.什么是操作系统?

 3.操作系统课 我们要学什么?

二、开始揭开钢琴的盖子

1.从打开电源开始...

2.计算机怎么工作?

计算机核心结构: 

3.打开电源,计算机执行的第一句指令什么?

引导扇区BootSect.s

三、操作系统启动

1.set up模块

2.进入保护模式

3.GDT

4.jmpi 0,8

5.system模块

head.s

四、操作系统接口

1.什么是操作系统接口?

2.命令行:

3.图形按钮

4.接口表现:函数调用 

        操作系统接口——系统调用

五、系统调用的实现 

区分内核态和用户态

特权级检查: 

中断指令int

系统调用的实现

中断处理程序:system_call 

六、操作系统历史

操作系统的核心图像:多进程切换、文件操作 

​         操作系统学习任务


课程链接:

b站:

【哈工大】操作系统 李治军(全32讲)icon-default.png?t=N3I4https://www.bilibili.com/video/BV19r4y1b7Aw/?share_source=copy_web&vd_source=6605d3cd5f58ef0c4e5ae59875ef0dda

 中国大学MOOC:

大学慕课—操作系统—主讲:哈工大李治军icon-default.png?t=N3I4https://www.icourse163.org/course/HIT-1002531008?from=searchPage&outVendor=zw_mooc_pcssjg_

 

一、什么是操作系统

1.操作系统的引入

用一句话说一说计算机专业要干什么?

用计算机帮助人们解决一些实际问题

通过内存地址输出到现存地址,通过控制器等过程才能输出“hello”

这种使用计算机的方式太麻烦!利用操作系统就可以跳过计算机硬件,更直接、更简单、高效地通过应用软件操作计算机。

直接使用  printf 就可以输出hello:

 2.什么是操作系统?

是计算机硬件和应用之间的一层软件

方便我们使用硬件,如使用显存..
高效的使用硬件,如开多个终端(窗口)

管理哪些硬件

3.操作系统课 我们要学什么?

学习操作系统可以有很多层次

从应用软件出发“探到操作系统”

集中在使用计算机的接口上
使用显示器:printf;    使用CPU:fork,   使用文件:open、read...

 从应用软件出发“进入操作系统”

一段文字是如何写到磁盘上的...

从硬件出发“设计并实现操作系统”

给你一个板子,配一个操作系统...

课程目标:

 

 动手实践一个真实的操作系统

二、开始揭开钢琴的盖子

1.从打开电源开始...

这神秘的黑色背后发生着什么?..

不要总等着别人告诉你答案,尽量自己去寻找...

从知识和常识出发进行思索...
打开电源--->计算机要开始工作了
计算机怎么工作? 这是我们最最基本,也最最重要的常识....

  

2.计算机怎么工作?

说到底就是一个计算模型。

核心:设置控制器动作

从通用图灵机到计算机

又一个伟大的发明:冯·诺依曼存储程序思想  1946年提出
存储程序的主要思想:将程序和数据存放到计算机内部的存储器中,计算机在程序的控制下一步一步进行处理
计算机由五大部件组成:输入设备、输出设备、存储器、运算器、控制器

计算机核心结构: 

首先把程序放到存储器(内存)中,然后用一个指针(IP)指向它,进行自动取址执行,产生结果。

 

取址执行!!!

3.打开电源,计算机执行的第一句指令什么?

引导扇区BootSect.s

0x7c00处存放的代码就是从磁盘引导扇区读入的那512个字节。

引导扇区就是启动设备的第一个扇区。

硬盘的第一个扇区上存放着开机后执行的第一段我们可以控制的程序。

注:需要汇编语言基础,C语言内存不可控,汇编直接对应机器码,是完全可控的。操作系统正需要完全可控的汇编语言。

将内存中 0x7C00 处的 512 个字节(正好就是全部 bootsect.s)移动到内存地址 0x90000 开始的一段内存中

这段汇编文件将来就会编译成机器指令,然后机器指令放在引导扇区上。

bootsect.s 的最后,PC指针被设置为 0x90200,执行指令 “int 0x13”,跳转到setup程序开始处(即0x90200)执行setup程序。

读入setup模块后:ok_load_setup

读入system模块,Loading system将会被显示出来

三、操作系统启动

引导扇区BootSect.s 分段读入操作系统的代码,首先读入set up,然后在屏幕上打出了一个 logo:Loading system...

调用13号中断,读入后面的system部分,然后进行set up

根据名字就可以想到:setup将完成OS启动前的设置

1.set up模块

关键:int 0x15

获得物理内存大小:将获取到的值放在ax中,ax再赋给[ 2 ] 

段寄存器9000左移4位再加2:0x90002扩展内存数        读入内存大小并保存(因为操作系统要管理内存)

do move:将整个操作系统system模块,移动到0地址处。  从0地址开始一直是操作系统

2.进入保护模式

jmpi 0,8 :把0赋给IP 8赋给CS

通过段基址+段内偏移的方式完成寻址:PC=CS<<4+IP 跳转到80地址,这个地址是非法的,在这里寻址方式发生了改变!

新的寻址方式:      (从16位机切换到32位机扩大内存)32位模式也叫保护模式

寄存器:cr0

cr0寄存器的最后一位如果是0就是16位模式,如果是1就是保护模式。

  

setup.s 寄存器cr0最后一位设置为1,cpu会执行另外一条的解释执行指令的电路,内存寻址方式会改变为保护模式。

3.GDT

CS不再是左移四位产生一个地址,而是CS(选择子),里面存放的是查表的下标(索引),真正的地址放在表项中。

jmpi 0,8 是选择表中的基址,再和IP偏移加在一起产生32位地址。

set up初始化GDT表(全局描述符):

4.jmpi 0,8

PC=GDT[8]+0=0,PC指针跳转到 0x0地址处

 

setup.s 到此执行完成,然后开始执行 system 模块

5.system模块

system模块(目标代码)中的第一部分代码?         head.s

system由许多文件编译而成,为什么是head.s?

编写操作系统:Makefile  编译后的操作系统镜像:Image

head.s

head.s的汇编语法:

进入main函数:

main的工作就是xx_init: 内存、中断、设备时钟、CPU等内容的初始化....

三个参数分别是envp,argv,argc

但此处main并没使用此处的main只保留传统main的形式和命名

四、操作系统接口

1.什么是操作系统接口?

        接口:连接两个东西、信号转换、屏蔽细节...

操作系统接口:连接上层用户和操作系统软件

2.命令行:

命令对应程序!!!        通过它输入相应的指令来完成一些特定的操作。

3.图形按钮

在图形用户界面(GUI)中,通常使用各种图形按钮来实现不同的操作。

4.接口表现:函数调用 

 

操作系统接口——系统调用

由于程序无法直接访问硬件资源和操作系统内核,因此需要通过系统调用来请求操作系统完成相关任务。这些函数允许应用程序请求操作系统完成特定的任务,例如读取文件、向设备发送数据、创建进程等,通常被封装在系统库中。

系统调用举例: 

文件操作:打开、读取、写入文件
进程控制:创建、运行和销毁进程
内存管理:分配、释放内存
设备控制:连接、读写设备

五、系统调用的实现 

实现一个whoami系统调用

进入内核思想      应用程序不能直接进入内核调用函数!!不能随意jmp、move!         系统调用就是提供了一种调用手段

区分内核态和用户态

内核态可以访问任何数据,用户态不能访问内核数据

对于指令跳转也一样实现了隔离...

CPL是当前特权级,是 CPU 在执行代码时的特权级别

DPL是描述符特权级,指的是某个段描述符所代表的内存段允许访问的最高特权级别。 

CPL 分为四种级别:Ring 0~3,数字越小级别越高,也就是特权级越高

Ring 0 表示内核态特权级,被操作系统内核使用

Ring 1~3 表示用户态特权级,被应用程序使用

特权级检查: 

操作系统内核拥有自己的代码段和数据段,特权级别通常为 Ring 0,因此对应的段描述符的 DPL 值也应该设为 0,这样才能确保只有内核态特权级别才能访问这些段。

当 CPU 执行代码时,会根据指令所在段的 DPL 值与当前 CPL 值进行比较,如果 CPL 比 DPL 高,则不能访问该段;如果 CPL 比 DPL 低或相等,则可以访问该段。

中断指令int

中断指令int是用于触发 CPU 中断处理程序的机器指令。 

在进行中断时,CPU 会自动进入内核态,因此可以访问操作系统内核提供的所有资源和服务

系统调用的实现

将一个系统调用号置给ex 然后调用int 0x80然后进入内核。

因为int 0x80是用户程序发起的调用内核代码的唯一方式.

int 0x80中断的处理

set_system_gate用来设置0x80的中断处理 

然后现在的cs就是内核态的,就可以通过现在的cs查表得到段基址加上ip去执行内核里的中断处理程序了

中断处理程序:system_call 

system_call 从中断堆栈中获取系统调用号和参数并执行对应的系统调用处理例程。

 _sys_call table函数指针数组

六、操作系统历史

操作系统的核心图像:多进程切换、文件操作 

 
操作系统学习任务

更多操作系统笔记:【哈工大李治军老师】操作系统笔记专栏汇总

大家的点赞、收藏、关注将是我更新的最大动力!欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu磁盘和目录和文件的相关操作

目录 1、目录的切换 2、查看目录及文件 3、目录的常见操作 4、文件的常见操作 5、查看文件及目录大小 6、命令查看硬盘信息 1、目录的切换 打开终端窗口&#xff08;”ctrlaltt“&#xff09; 一般使用&#xff08;”pwd“&#xff09;显示当前所在的目录 比如&#x…

Flutter学习之旅 -网格布局

GridView列表三种形式 可以通过GridView.count实现网格布局 /* 格式: GridView.count(crossAxisCount: 一行显示数量,children: [component(),...],) */ class MyHomePage extends StatelessWidget {const MyHomePage({Key? key}) : super(key: key);overrideWidget build(B…

C++每日一练:小艺照镜子(详解分治法)

文章目录 前言一、题目二、解题1.分析 总结 前言 大过节的&#xff0c;不想去看人后脑勺&#xff0c;就做点题来玩。挑了小艺照镜子&#xff0c;百分通过~ 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、题目 题目名称&#xff1a; 小艺照镜子 …

【Linux】生产者消费者模型

目录 一、生产者消费者模型 1、生产者消费者模型的概念 2、生产者、消费者之间的关系 3、生产者和消费者的特点 二、基于BlockingQueue的生产者消费者模型&#xff08;条件变量控制同步与互斥&#xff09; 1、一个生产线程和一个消费线程完成的计算任务 1.1BlockQueue.h…

Kubernetes服务搭建[配置-部署](Kubeadm)

文章目录 **[1 — 7] ** [ 配置K8S主从集群前置准备操作 ]一&#xff1a;主节点操作 查看主机域名->编辑域名1.1 编辑HOST 从节点也做相应操作1.2 从节点操作 查看从节点102域名->编辑域名1.3 从节点操作 查看从节点103域名->编辑域名 二&#xff1a;安装自动填充&…

进程地址空间与页表方面知识点(缺页中断及写时拷贝部分原理)

谢谢阅读&#xff0c;如有错误请大佬留言&#xff01;&#xff01; 目录 谢谢阅读&#xff0c;如有错误请大佬留言&#xff01;&#xff01; 抛出总结 开始介绍 发现问题 进程地址空间&#xff08;虚拟地址&#xff09; 页表 物理内存与进程地址空间映射 缺页中断基本…

Spring--AOP详细介绍--和详细代码演示证明理解

目录 Spring--AOP详细介绍 基本介绍 代码演示—入门 需求说明 定义一个接口类Vehicle 定义一个实现接口类的Car类 定义一个实现接口类的Ship类 创建测试类Test.java 来思考一下&#xff0c; 解决方案-动态代理方式-2 修改 Car类 修改 Ship类 创建VehicleProxyProvid…

Stable Diffusion使用方法

SD的本地安装教程有很多我就不重复了&#xff0c;这里主要是记录我在使用SD Webui的过程中遇到的问题&#xff0c;总结的一些提升出图效率&#xff0c;出好图概率的经验。 先搞几张看看效果 二次元妹妹 高达 &#xff1f; Ok&#xff0c;以上只是一小部分成品 &#xff0c;属…

PyQt5桌面应用开发(6):文件对话框

本文目录 PyQt5桌面应用系列介绍QFileDialog的静态接口QFileDialog的对象接口 示例结论后记 PyQt5桌面应用系列 PyQt5桌面应用开发&#xff08;1&#xff09;&#xff1a;需求分析 PyQt5桌面应用开发&#xff08;2&#xff09;&#xff1a;事件循环 PyQt5桌面应用开发&#xff…

MRI k空间概念整理

以下内容为MRI期末复习笔记&#xff0c;仅供复习参考使用。 K空间概念 K空间为包含MR数据的阵列&#xff0c;也可定义为原始数据阵列相位编码轴和频率编码轴的交叉点 MR扫描得到的数据为谱空间数据&#xff0c;谱空间数据与空间数据位置无直接对应关系 k空间每一数据点或数据…

不能使用chatGPT?这3个平替甚至比chatGPT更强

不能使用chatGPT&#xff1f;这3个平替甚至比chatGPT更强 chatGPT&#xff0c;一款由OpenAI开发的新型AI聊天机器人&#xff0c;正在势如破竹地改变着许多人的工作和生活方式。作为一款基于大语言模型的聊天机器人&#xff0c;chatGPT能够理解自然语言并进行人机对话。与传统的…

用于scATAC-seq有监督分类的Cellcano

细胞类型识别是单细胞数据分析的基本步骤。由于高质量参考数据集的可用性&#xff0c;有监督细胞分类方法在scRNA-seq数据中很受欢迎。染色质可及性分析&#xff08;scATAC-seq&#xff09;的最新技术进步为理解表观遗传异质性带来了新的见解。随着scATAC-seq数据集的不断积累&…

html5地理位置信息介绍, 百度地图使用

文章目录 1. HTML5中地理信息API1.1 Geolocation 接口 2. 在vue中使用百度地图3. 在react中使用百度地图 1. HTML5中地理信息API HTML5 的地理位置 API 可以让你获取用户的地理位置信息&#xff0c;并将其用于许多不同的应用场景&#xff0c;例如&#xff1a; 在地图上显示用…

钴基双金属氧化物储能材料的高效制备和电化学应用

一、引言 钴金属氧化物作为一类典型的储能材料&#xff0c;既可以用于锂离子电池负极材料&#xff0c;又可以用于超级电容器电极材料&#xff0c;因而备受关注 。在作为锂离子电池负极材料时&#xff0c;具有较高的理论比容量&#xff0c;但充放电体积变化较大、材料导电性较差…

爬虫为什么需要ip

爬虫需要使用爬虫ip主要是为了解决以下问题&#xff1a; 1、反爬虫机制&#xff1a;许多网站会设置反爬虫机制来防止爬虫程序的访问&#xff0c;例如限制IP地址的访问频率、检测访问来源等。使用爬虫ip可以绕过这些限制&#xff0c;使得爬虫程序更难被检测到。 2、访问限制&a…

浅拷贝和深拷贝

浅拷贝&#xff1a; 定义&#xff1a;浅拷贝&#xff08;Shallow Copy&#xff09;是一种简单的对象复制方式&#xff0c;将一个对象的数据成员直接复制给另一个对象&#xff08;通常是通过默认的复制构造函数或赋值运算符实现&#xff09;&#xff0c;这些数据成员可以是基本…

JavaScript:字符串

文章目录 字符串344. 反转字符串reverse() 方法&#xff08;打基础的时候&#xff0c;不要太迷恋库函数&#xff09;代码及思路 541. 反转字符串 IIJavaScript String split() 方法JavaScript Array join() 方法代码分析见注释 剑指 Offer 05. 替换空格思路注意&#xff1a;上面…

网络基础学习:什么是网络与网络发展史

什么是网络与网络发展史 什么是网络&#xff1f;什么是网络发展史&#xff1f;分组交换技术TCP/IP技术Web技术ARPANET&#xff08;1969年&#xff09;Internet&#xff08;1983年&#xff09;万维网&#xff08;1990年&#xff09;移动互联网&#xff08;2007年&#xff09;物联…

KDGK-F断路器机械特性测试仪

一、产品概述 KDGK-F 断路器机械特性测试仪可用于各电压等级的真空、六氟化硫、少油、多油等电力系统高压开关的机械特性参数测试与测量。测量数据稳定&#xff0c;抗干扰性强&#xff0c;可在500KV等级及以下电站做实验&#xff0c;接线方便&#xff0c;操作简单&#xff0c;是…

第14章 项目采购管理

文章目录 采购管理包括如下几个过程14.2 编制采购计划 462编制采购计划的输出1&#xff09;采购管理计划2&#xff09;采购工作说明书3&#xff09;采购文件 14.2.3 工作说明书&#xff08;SOW&#xff09; 14.3 实施采购 47414.3.2 实施采购的方法和技术 476&#xff08;1&…