操作系统(第二周 第二堂)

目录

🏀前言

重点一

重点二

操作系统结构

操作系统的服务

框架

详细理解(仅挑部分重要的)

用户界面------shell(终端)

[系统调用 (system call)](#系统调用 (system call))

特点

方式

🏀总结


前言

重点一

前一堂的重点就一张图:

本图解释了操作系统如何通过指令的双类型以及操作系统的双模式来实现对操作系统的保护,从而让操作系统不会因为用户的非法指令崩溃

重点二

上篇第二个重点就是编程工具集以及GDB调试工具,其中重点的指令有:

1、gcc -g:编译并包含调试、源代码信息(只有如此拿这个二进制文件才能返回出源代码的汇编语言格式)

2、gcc -o:生成目标文件(可运行)

3、gcc -s:生成源程序的汇编语言模式

4、gdb -x:对目标文件开启gdb调试模式(目标文件可以直接查看其汇编语言)

5、start:开始调试

6、info all-registers:查看寄存器中各个指令所在的位置

7、jump:跳转到对应的指令所在的位置

8、x/i:查看一条条指令(gdb模式会自动把目标文件转化为汇编语言供查看)

9、nexti:执行下一条指令

到这里过所有的introduction都已经结束了!!!接下来我们将更详细的加入每个部分!

操作系统结构

研究操作系统结构就是研究操作系统,而研究操作系统就是研究操作系统的服务、接口以及系统组件与相互关系(从上层逐渐底层)。

操作系统的服务

框架

理解操作系统首先要理解它的服务(有什么,如何使用),下面这张图很好的解释了操作系统与服务在整个计算机体系中的地位(重点)

一、 硬件、用户及其他系统程序之间的交流交互需要操作系统的参与

二、操作系统总结出用户及其他应用程序与硬件之间所需要的一些交互行为并将其包装为服务

三、这些服务(可能对计算机运行造成破坏)并不能随便为用户调用,所以操作系统将这些服务进一步打包变为系统调用

四、系统调用可以认为是操作系统服务的接口,当然也是操作系统服务的一部分

五、操作系统为了用户操作更便利,为用户提供了用户界面。这个界面包括GUI(图形化界面,例如macos、window等),命令行(挂cenos服务器仅仅有命令行操作)、批处理(不用理解)

详细理解(仅挑部分重要的)

一、系统调用(system call):给用户或应用程序作为操作系统服务的接口,使得用户可以在不破坏操作系统的同时完成对硬件的交互

二、用户界面:为了convenience目标,使得用户使用操作系统更加方便、门槛降低,这也直接使得PC机出现成为可能

三、程序执行:用户在编写完代码后,需要把程序放到内存中存储,也需要放到cpu上去执行。这一切都需要通过操作系统给的接口

四、I/O操作:程序运行可能需要I/O操作,而I/O操作一定需要陷入内核(之前分析过原因),所以一定要调用操作系统。调用操作系统的服务也就是需要系统调用

五、文件系统操作:操作系统支持对电脑中的文件进行创建、修改、删除和访问。(前段时间,部署web程序到服务器(linux系统)上时,才知道服务器上面是不支持用户去访问文件的。需要通过tomcat去访问文件

六、通信:一个进程和另一个进程之间需要进行通信,这个通信不能直接发生而是必须要经过操作系统作为中间人(后面讲现代操作系统的结构模式时会分析原因,主要是为了让操作系统的体量更小灵活度更高)

七、资源分配:由于现代的操作系统都支持并行程序运行,所以这就涉及到并行程序运行时的进程管理,而进程管理也就是对程序运行时的资源进行分配

八、保护与安全:保护是对计算机每个用户进行保护,安全是针对系统上每个进程的运行进行安全保护

用户界面------shell(终端)

前面说的操作系统提供的服务中有一个就是用户界面,而这个用户界面中除了大家熟知的GUI界面,更原始的其实是命令行界面。命令行界面的的一个代表就是shell,也就是我们平常说的终端。

终端也就是一个应用程序(和DBMS、程序编辑器等属于一个地位------系统应用),只不过这个应用程序能够识别程序员写的命令并把这个命令转化为相应的操作系统服务包装的接口(Api),再通过Api去完成这个命令所蕴含的动作。

系统调用 (system call)

特点

一、系统调用是提供操作系统服务的接口

二、这些调用通常以c或cpp编写

三、系统调用一般不能直接被用户使用,通常被封装再API中

四、API未封装system call则就是平常我们写的函数体。判断API是否封装系统调用就是看他运行时是否陷入内核。因为系统调用是为了调用os的服务,所以一定会陷入内核

图中展示的是一个源程序调用编译这个系统调用方法,以及程序运行中调用的文件系统操作的系统调用方法

方式

一、每个系统调用都有一个相关的数字,这个数字表示系统调用程序在操作系统内核中的位置

二、当系统调用触发时,会自动跳转到这个位置去执行系统调用程序

三、不同操作系统提供的API可能存在不同

图中展示了一个应用程序调用系统调用接口,然后这个接口去定为到系统调用所在的位置去具体的跑系统调用程序

总结

本文到这里就结束啦~~这堂课设计的内容较为杂乱、复杂,但是学一学拓展一下知识是非常好的呀~~

如果觉得对你有帮助,辛苦友友点个赞哦~

知识来源:操作系统概念(黑宝书)、山东大学高晓程老师PPT及课上讲解。不要私下外传

相关推荐
2202_754421545 分钟前
生成MPSOC以及ZYNQ的启动文件BOOT.BIN的小软件
java·linux·开发语言
运维&陈同学1 小时前
【zookeeper03】消息队列与微服务之zookeeper集群部署
linux·微服务·zookeeper·云原生·消息队列·云计算·java-zookeeper
旦沐已成舟1 小时前
DevOps-Jenkins-新手入门级
服务器
周末不下雨2 小时前
win11+ubuntu22.04双系统 | 联想 24 y7000p | ubuntu 22.04 | 把ubuntu系统装到1T的移动固态硬盘上!!!
linux·运维·ubuntu
软件技术员2 小时前
Let‘s Encrypt SSL证书:acmessl.cn申请免费3个月证书
服务器·网络协议·ssl
哎呦喂-ll2 小时前
Linux进阶:环境变量
linux
Rverdoser2 小时前
Linux环境开启MongoDB的安全认证
linux·安全·mongodb
PigeonGuan3 小时前
【jupyter】linux服务器怎么使用jupyter
linux·ide·jupyter
一条晒干的咸魚3 小时前
【Web前端】创建我的第一个 Web 表单
服务器·前端·javascript·json·对象·表单