操作系统学习笔记(一)
2021/7/17 23:37:55
本文主要是介绍操作系统学习笔记(一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
首先引出操作系统这一概念,我们用计算机的目的是为了帮助人们解决一些实际问题,下面以输出“hello!”到显示屏为例:
上面通过机器语言或者汇编语言完成操作很麻烦,对程序员来说很不友好。由此后来发展出来高级语言,高级程序应用,直接调用Printf ”hello!“ 便可,但是这些高级语言机器是读不懂的,所以需要一个中介,帮助我们实现转化,方便人类与机器的交流,这一中介便是操作系统。
(1)操作系统的概述
高效的使用硬件即很方便简单的管理硬件,包括CPU管理,内存管理,终端管理,磁盘管理,文件管理,网络管理,电源管理和多核管理等等。
(2)计算机开机原理(以intel的x86架构计算机为例)
BIOS=Basic input outpu system基本输入输出系统,它将带领CPU识别并加载主板上的重要硬件和集成元件,如硬盘、显卡、声卡以及各种接口,然后按照预设顺序读取存储器上操作系统的引导文件,通过设置的启动模式找到引导分区装载操作系统,如DOS、Windows、Linux等。装载完操作系统之后就隐藏在后台了。
而磁盘0磁道0扇区称为引导扇区,是开机时我们第一段能控制的程序。
bootsect.s要做的就是,将setup和system模块从磁盘中读出来,放在内存中。之后bootsect执行完了之后,要将控制权交给setup,运用跳转。jmpi 0,SETUPSEG 此时程序执行完毕!!!
系统开机后,从0xFFFF0处(ROM)取出第一条指令开始执行,进行BIOS自检,检查正常后就用BIOS的输入功能将启动磁盘上的bootset.s读入内存0X7C00处,然后将自己移动到0X90000处。
该段程序的主要作用就是:
1)将setup加载到bootset后,0X90200处
2)调用int 0X10中断,输出屏幕信息:“Loading system…”
3)将system模块加载到内存0X10000处
4)跳到setup执行setup程序
从bootset.s跳转到setup.s中执行,代码作用如下:
1:获取初始化的基本参数
2:进入保护模式
1)将system模块从0x10000-0x8ffff整体移动到0X0地址处,这就是为什么前面要把引导扇区的512字节的内容进行转移。
2)启动保护模式,因为实模式的寻址方式是16位cs:4位偏移=20位,最多有1M的寻址空间,太小了,不满足现实需求,因此要切换寻址模式,切换到32位保护模式,这样就有了4G的寻址空间。
3)进入32位保护模式运行,并跳转到head.s
保护模式下的寻址方式:
根据GDT表项我们可以知道保护模式下的jumpi 0,8其实就是跳转到内存零地址,我们知道system.s已经转移到零地址,所以至此setup模块执行完毕。
这时转移到system中的head.s开始执行。
system由许多的文件编译而来的,包括head.s,那么怎么控制head.s是第一段被执行的呢?这里涉及到makefile文件的编写。
makefile其实就是一个文档,里面定义了一系列的规则指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,它记录了原始码如何编译的详细信息! makefile一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
head.s设置报表等操作之后会跳转到main函数,这里的main跳出之后会执行L6也就是死机,但是main函数正常情况下是不会跳出的。
接下来进入main,完成许多模块的初始化工作。
(3)加载操作系统总结
boot->setup->system(head->main)
总的来说就是完成的工作就是把操作系统从磁盘读入内存(从而可以取指执行)和进行操作系统的初始化。
这篇关于操作系统学习笔记(一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南