01 操作系统基础

简介: 一、控制系统启动过程1.要想顺利启动系统,bootsect.s必须让在磁盘的固定位置上,这个工作是由 make / makefile 完成的2.

一、控制系统启动过程

1.要想顺利启动系统,bootsect.s必须让在磁盘的固定位置上,这个工作是由 make / makefile 完成的

2.启动保护模式以后,指令jmpi 0, 8和没有启动保护模式的区别:得出跳转地址的方式不一样

3.在setup中获取内存大小这一个硬件参数的目的是为后面的mem_init()做准备

4.在屏幕上打出“Loading System…”等系统Logo的时候,计算机内部正在:初始化内存管理数据结构、读磁盘、启动保护模式

5.Windows系统启动和Linux系统启动时,初始化内核数据结构不一样

6.根据GDT表,jmpi 0, 8要跳到0地址处去执行,那么能不能执行jmp 0呢?也可能,但首先要设置cs,并且要保证cs指向的那个GDT表项中的基地址为0

7.操作系统启动要完成的工作:初始化IDT表、初始化mem_map、初始化GDT表

8.mem_init就是初始化一个数组,如果某个数组项中的内容为0,则表示对应的那一段内存空闲;数组中的每个项表示固定大小的一段内存;mem_init调用之前可以不获得物理内存的大小;此外,并非初始化时将所有数组项中的内容都设置为0

二、系统接口

1.用户程序调用printf(“Hello World!”)最终要通过写显存来完成Hello World!的输出,从用户程序到写显存中间经过的顺序为:用户程序;C函数库;系统调用;sys_write;写显存

2.将程序的执行分为用户态和内核态是为了保护操作系统内核

3.在系统调用的实现中,在int 0x80指令调用之前,给eax赋值的目的是传递系统调用号

4.为什么称为系统调用:为了和其他的函数调用相区别,表现为一个函数调用,最终调用了操作系统提供的功能;而并非call了一个内核中的函数

5.鼓励操作系统实现POSIX接口的真正目的是上层应用程序可以移植

6.printf(“Hello World!”)中的字符串地址最终是通过寄存器和栈的配合以参数的形式传递给sys_write函数的

7.int 0x80是唯一能从CPL=3(用户态)到CPL=0(内核态)的指令跳转,所以应用程序中的系统调用要展开成一段包含int 0x80的代码

8.系统调用有open,printf,write等,但cos不是

9.Windows的系统接口和Linux接口的不一样导致了Windows上的程序不能在Linux上运行

10.在Linux上添加一个系统调用foo()的步骤有:在int 0x80的中断处理程序中增加对sys_foo的函数调用,修改sys_call_table这个函数表,将foo展开成一段包含int 0x80的代码;而不是设置int 0x80的中断处理程序入口地址

目录
相关文章
String.format()函数的简单用法
1.String.format()函数的用法 2.常用转换符 3.常用标识
305 0
|
Ubuntu Linux
【Ubuntu18.04 解决蓝牙wifi 之ax201无线网卡驱动安装】
【Ubuntu18.04 解决蓝牙wifi 之ax201无线网卡驱动安装】
3255 0
|
Ubuntu 开发工具
ubuntu 服务器中文乱码
解决ubuntu 服务器中文乱码问题
|
7月前
|
XML 人工智能 数据可视化
ReasonGraph:别让AI成黑箱!这个开源工具把大模型的脑回路画给你看
ReasonGraph是一款开源的可视化分析工具,能将大语言模型的复杂推理过程转化为直观图表,支持50+主流模型和多种推理方法,帮助开发者快速理解AI思考逻辑并优化模型表现。
312 0
|
11月前
|
弹性计算 网络协议 UED
SLB-Backend会话保持
【10月更文挑战第21天】
270 7
|
存储 JavaScript API
C++ 正则表达式库 std::basic_regex 中文手册(API说明来自cppreference.com)
C++ 正则表达式库 std::basic_regex 中文手册(API说明来自cppreference.com)
298 0
|
12月前
|
算法
PID算法原理分析
【10月更文挑战第12天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
377 0
|
自然语言处理 开发者 Python
【Python】已解决:WARNING: Discarding https://pypi.tuna.tsinghua.edu.cn/packages/74/2b/3584369fad8352ed171
【Python】已解决:WARNING: Discarding https://pypi.tuna.tsinghua.edu.cn/packages/74/2b/3584369fad8352ed171
236 1
|
缓存 负载均衡 监控
Nginx性能调优5招35式不可不知的策略实战
以上 V 哥总结的5个方面关于 Nginx性能调优的策略,实际应用中需要结合实际项目的情况来测试,希望对你有帮助,欢迎关注威哥爱编程,技术路上我们一起成长。
368 0
|
存储 安全 Java
【JAVA】concurrentHashMap和HashTable有什么区别
【JAVA】concurrentHashMap和HashTable有什么区别