操作系统学习(二)

本文深入探讨操作系统内核如何处理应用程序的请求,通过中断、异常和系统调用等机制确保计算机系统的稳定运行。详细介绍了系统调用作为应用程序与内核间桥梁的作用,以及BIOS、BootLoader在操作系统启动过程中的关键角色。
摘要由CSDN通过智能技术生成

1.操作系统内核需要和上层的应用程序打交道。当外设与计算机系统交互的时候,需要操作系统,当应用程序运行出现异常的时候,需要操作系统控制。在计算机运行时,操作系统是被信任的第三方,只有操作系统的内核可以执行特权指令。

操作系统的中断和异常是为了解决上面问题。
操作系统的系统调用则是为了解决应用程序在接受到系统的处理时,如何能够安全进行,既不影响操作系统,又可以实现应用程序的请求。
在这里插入图片描述
上面这个图来解释一波
最下面是外设与操作系统内核交互,当键盘敲击数据传入内核,为了防止数据过多或者处理不及时,中断控制内核里面的设备驱动,从而控制输出键盘的输入字符。
左上方是应用程序与内核的交互,正常情况下应用程序不访问内核,但是当出现异常比如说应用程序要除以0这种不符合规则的操作,这时内核就会执行。
左上方还是应用程序与内核:比如说应用程序要访问一个磁盘文件,不能直接访问硬盘,必须要通过应用程序调用系统调用接口调节函数进入内核,内核把相应的数据读取出来还给程序。
系统调用:应用程序主动向操作系统发出的服务请求。
异常:非法指令或者其他原因导致当前指令执行失败后的处理请求
中断:来自硬件设备的处理请求

下面是中断的操作,和单片机差不多,使能中断,设置中断标志,调用中断服务函数
在这里插入图片描述
下图是系统调用时的一些操作
在这里插入图片描述

在这里插入图片描述

上面这张图厉害了,瞬间让你明白了常说的API到底是个啥!它就是连接应用程序和内核的编程接口,用于系统调用。
程序访问通常是通过高层次的API接口,而不是直接进行系统调用!!

在这里插入图片描述
系统调用都有对应编号,它是在图右边内核中的系统调用表中体现!

在这里插入图片描述
函数调用的方式:先将需要用的参数压入堆栈,然后在需要的地方从堆栈中取出来。
系统调用:它和函数调用使用不同的堆栈,同时系统调用相比函数调用有更多的特权,他可以直接控制硬件设备。

在这里插入图片描述
上图是写一个程序,程序把一个文件复制出来,改一个名字放到另一个文件里面
系统把源文件生成目标文件的过程
注意:输入文件本来有,输出文件本来没有,所以他们出错退出机制不一样。

原来bootloader就是BIOS控制磁盘中的加载程序到内存,用这个加载程序加载磁盘后续的操作系统。这个加载程序Dev代码就叫BootLoader!!!
它有512个字节,真正用到的只有400多个字节,因为里面还存储了磁盘分区的顺序信息。这512个字节虽然小,但是要干很多事。有下面这些:
在这里插入图片描述
上图最后一句的意思就是控制权由原来的内存转变为了BIOS控制的BootLoader启动的 操作系统上面去了。

1.段机制用在加载程序BootLoader使进入保护模式的这一步中
内存中专门有一个寄存器叫GDTR,用来存储起始地址。段机制里有段选择址(里面有各个环节的优先级设置),全局描述符表,段描述符,指向全局描述符表起始地址的GDTR寄存器。
进入使能保护模式的操作:BootLoader/OS要设置CR0寄存器的第0位为0

2.BootLoader做的第二件事就是加载OS操作系统,编译完之后会生成一个很长用人的elf格式的文件。BootLoader能根据这个格式把相应的代码数据放到内存相应的位置。

机器码中foo代表一个地址。一般插在中间部分,用来完成除压栈和出栈之外的一些操作。

GCC的作用就是看、链接c和汇编。因为c语言有一些无法实现的功能
在这里插入图片描述
加载描述符表,加载页表,加载中断描述符表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值