进一步学习操作系统 - 哈工大李治军老师 - 学习笔记 L4L5L6L7

大家一定要坚持,前面几章的汇编确实难,而且刚开始接触,搞不清楚很正常,继续往下学就行了!

前面几章讲了操作系统的启动
上电,实模式,找第一条指令,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设备,磁盘

设备管理的表格进行了初始化;等待用户的设备使用(系统调用),将其展开成设备细节

知新:
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/tfnmdmx/article/details/119377019
今日推荐