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

简介: 操作系统(第二周 第二堂)



前言

重点一

前一堂的重点就一张图:

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

重点二

上篇第二个重点就是编程工具集以及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及课上讲解。不要私下外传

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
2天前
|
云安全 人工智能 自然语言处理
|
9天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
666 56
Meta SAM3开源:让图像分割,听懂你的话
|
6天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
321 116
|
6天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
|
21天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
AgentEvolver:让智能体系统学会「自我进化」
AgentEvolver 是一个自进化智能体系统,通过自我任务生成、经验导航与反思归因三大机制,推动AI从“被动执行”迈向“主动学习”。它显著提升强化学习效率,在更少参数下实现更强性能,助力智能体持续自我迭代。开源地址:https://github.com/modelscope/AgentEvolver
448 32
|
5天前
|
弹性计算 人工智能 Cloud Native
阿里云无门槛和有门槛优惠券解析:学生券,满减券,补贴券等优惠券领取与使用介绍
为了回馈用户与助力更多用户节省上云成本,阿里云会经常推出各种优惠券相关的活动,包括无门槛优惠券和有门槛优惠券。本文将详细介绍阿里云无门槛优惠券的领取与使用方式,同时也会概述几种常见的有门槛优惠券,帮助用户更好地利用这些优惠,降低云服务的成本。
278 133

热门文章

最新文章