大家一定要坚持,前面几章的汇编确实难,而且刚开始接触,搞不清楚很正常,继续往下学就行了!
前面几章讲了操作系统的启动
上电,实模式,找第一条指令,BIOS,检查硬件,引导扇区bootsect,移动,setup,参数,保护模式,移动,system,head.s初始化各种表,数据结构
操作系统由磁盘载入内存,放在0地址处
L4 操作系统接口
接口:连接两个东西、信号转换、屏蔽细节…
操作系统接口连接的不是用户??
要注意!操作系统接口!和!操作系统!不一样 操作系统 是直接运行在硬件平台上的系统,是连接用户和计算机的桥梁。 操作系统接口 连接操作系统和应用软件。 |
操作系统接口 通过C语言程序 连接 操作系统和应用软件。
操作系统接口 又称 系统调用,接口表现为函数调用。 操作系统接口 就是一些重要的函数,比如 write 等 系统调用 连接操作系统和应用软件。 操作系统管理着计算机系统的硬件、软件及数据资源,同时给上层提供接口,就是函数,应用程序通过这些函数,也就是系统调用来实现某些功能。 |
shell 是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统
shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。
参考https://zhuanlan.zhihu.com/p/264346586
命令行一般指命令提示符,是在操作系统中,提示进行命令输入的一种工作提示符;在windows环境下,命令行程序为“cmd.exe”,是一个32位的命令行程序。
参考https://www.php.cn/windows-419049.html
shell相当于经过装饰的命令行,和命令行一样,都能操作linux。但是shell是面向过程的,相当于有了一定的逻辑和过程,而命令行只是单一的操作。
参考https://blog.csdn.net/LJFPHP/article/details/78292943
用户 - 程序 - 系统调用 - 操作系统 - 硬件 |
用户如何使用计算机? :通过程序(应用软件)
命令行:命令程序
就是一堆程序,增加了系统调用,从而对计算机的硬件进行一些重要的使用。
shell 也是一段程序
shell 的实现流程是用一个死循环不断的在屏幕上打出提示符,并等待用户在键盘上键入字符串。
图形按钮:消息框架程序 + 消息处理程序
硬件输入会有系统消息,挂到消息队列上,应用程序通过 循环 系统调用 从消息队列中不断取出消息,然后根据消息 做出反应(消息处理函数)这就是“消息处理机制”。
(图形界面:一个包括画图的C程序)
应用程序
这三者其实本质上都是 程序;都是通过C语言和系统调用组成的。 计算机最开始应该就是命令行(操作系统为用户提供的 一种相对原始的交互界面) 但是这样操作肯定不方便,于是就写一个图形界面的程序 应用程序就是各种各样的程序...意会意会 |
L5 系统调用 的 实现
系统调用:提供一种进入操作系统内部的手段
操作系统是一门和硬件十分紧密相关的科学 ,计算机对内存的使用是一段一段地使用
硬件将内核程序和用户程序隔离,分为了内核态和用户态,对应的内存区域分别为内存段和用户段
特选级低的段可以访问特选级高的段 ,int 0x80中断是进入内核的唯一方式
复制自https://cloud.tencent.com/developer/article/1797309
我懒得打字了,这些在之前王道的学习中都有学习过
为了保护操作系统的安全,通过硬件将内存分为用户段和内核段,用户段不能访问内核段。 通过CS的最低两位来区分当前程序执行在用户态或内核态 :0是内核态,3是用户态 |
DPL 目标内存段的特权级 (存放在描述符表(GDT、IDT )中的 2 位二进制数)
CPL 当前内存段的特权级 (存放在 CS 寄存器中的一个 2 位二进制数)
只有CPL <= DPL,才可以访问
具体理解:以printf为例
c代码里面的printf是printf(“%d”,a),在printf()内部其实调用了系统函数write,而write函数的函数头其实是这样的:size_t write(int fd, const void *buf, size_t count);
可以看到,c代码printf()函数的形参和write()的形参是不一样的,因此如果printf(“%d”,a)能调用write函数的话,肯定要对printf的形参进行处理,
库函数printf() 就起到这个作用——格式化输出write所需要的参数,再调用包含中断int 0x80的write(),最后在内核系统调用wirte()。
这一部分参考https://blog.csdn.net/weixin_41761478/article/details/99682131
还可参考https://blog.csdn.net/williamgavin/article/details/82731143
L6 操作系统历史
多道程序:作业之间的切换和调度成为核心
分时系统:核心仍是任务切换(定时切换),多人同时使用
小型计算机:UNIX
Linux
多进程结构是操作系统的基本图谱。
掌握操作系统的多进程图谱并实现它!
任务:(1)掌握、实现操作系统的多进程图谱;
cpu、内存
(2)掌握、实现操作系统的文件操作视图。
IO、磁盘文件
L7 我们的任务
温故:
操作系统是管理计算机硬件的软件。
硬件包括CPU,内存,显示器、键盘、打印机,磁盘、磁盘文件,四个部分
多进程图谱:
CPU怎么管理,内存怎么管理
文件操作视图:
IO设备,磁盘
设备管理的表格进行了初始化;等待用户的设备使用(系统调用),将其展开成设备细节
知新: