操作系统相关问题——应用程序和操作系统怎么配合

简介: 应用程序和操作系统都是软件, CPU会将它们一视同仁,甚至CPU不知道自己在执行的程序是操作系统还是一般应用软件。CPU只知道去cs:ip寄存器中指向的内存取出指令并执行,它不知道什么是操作系统。

应用程序和操作系统都是软件, CPU会将它们一视同仁,甚至CPU不知道自己在执行的程序是操作系统还是一般应用软件。CPU只知道去cs:ip寄存器中指向的内存取出指令并执行,它不知道什么是操作系统。


编程语言其实只是编译器和大家的约定,只要写入这样的代码,编译器便将其翻译成某种机器指令,翻译成什么样取决于编译器的行为。编译器还提供了一套库函数,库函数中又有封装的系统调用,这样的代码集合称之为运行库。C语言的运行库成为C运行库,就是所谓的CRT。应用程序加上操作系统提供的功能才算是完整的程序,平时写的应用程序只能算是半成品,还需要调用操作系统提供的函数才能完整地做出一件事,而这些函数就是系统调用。


用户态和内核态是对CPU来讲的而不是用户进程,是指CPU运行在用户态(特权3级)还是内核态(特权0级)。用户进程陷入内核态是指由于内部或外部中断发生,当前进程被暂时终止执行,其上下文被内核的中断程序保存起来后,开始执行一段内核的代码。是内核的代码而不是用户及程序在内核的代码,用户代码不可能在内核中存在,所以“用户态和内核态”是相对于CPU而言的。当应用程序陷入内核之后,自己已经下CPU了,以后发生的事情应用程序完全不知道,此时它的上下文环境已经被保存到了自己在内核态的的栈中了,CPU上运行的程序已经是内核程序。


也就是说应用程序其实是通过系统调用和操作系统配合来完成某项功能的。可能有人会说自己写应用程序时从来没写过系统调用的代码,这是因为用到的标准库帮我们完成了这些事。库中提供的函数其实都已经封装好了系统调用,需要下载源码才会看到。


其实也可以跨过标准库直接执行系统调用,对于Linux系统来说,直接嵌入汇编代码"int 0x80"便可以直接执行系统调用,当然要提前设置好系统调用的子功能号,该子功能号用寄存器eax存储。


各个操作系统都有自己的系统调用号,所以我们在下载编译器时需要选择正确的系统版本,编译器厂商在代码中已经把宿主系统的系统调用号写死了。

相关文章
|
算法 搜索推荐 流计算
【高效写作技巧】CSDN的原力等级有什么用?如何增长原力等级?
【高效写作技巧】CSDN的原力等级有什么用?如何增长原力等级?
1329 1
|
机器学习/深度学习 数据可视化 算法
机器学习系列7 基于Python的Scikit-learn库构建逻辑回归模型
🎄🎄本文中,你将学到逻辑回归的数学原理,使用Seaborn库可视化数据寻找数据间的相关性,并基于Scikit-learn库构建逻辑回归模型预测南瓜颜色。
1016 0
|
7月前
|
边缘计算 前端开发 安全
阿里云 ESA “函数和Pages”全面开放|打通开发者“最后一公里”!
阿里云ESA推出「函数和Pages」功能,以边缘原生、全球加速、一键部署为核心,支持3200+节点毫秒级响应,深度融合Git工作流,实现代码即部署。助力开发者构建高性能全栈应用,开启极简开发新时代。(239字)
483 0
阿里云 ESA “函数和Pages”全面开放|打通开发者“最后一公里”!
|
9月前
|
API 开发工具 数据安全/隐私保护
蚂蚁开放平台 ✖️ 授权管理
为保障数据安全,开放平台要求开发者调用能力时使用有效令牌(token)进行身份验证。请勿泄露或暴露令牌信息。开发者可登录平台添加、复制、删除或切换令牌状态,调用时需将token添加至请求头Authorization参数。每种类型令牌最多10个。
502 0
|
6月前
|
消息中间件 人工智能 Cloud Native
AI Agent 职业路线规划:从技术环节到落地路径的体系化指南
AI Agent正重塑云原生时代技术职业版图。本文系统梳理其核心技术环节(架构设计、工具集成、提示工程)、衍生角色(核心开发者/解决方案专家)及双路径发展选择(前沿深耕/行业落地),强调系统思维、数据状态管理与逻辑验证三大通用能力,助力开发者构建不可替代的竞争力。
507 1
|
6月前
|
域名解析 人工智能 缓存
阿里云新手用户建站流程:从注册域名到网站上线全流程步骤参考
本文介绍了新手用户通过阿里云完成建站的全流程。从选购简短易记、与品牌相关的域名开始,到选择适配业务场景的云服务器实例(如经济型、通用型等),再到利用万小智AI建站、自主开发或定制化服务搭建网站。过程中需完成ICP备案以确保合法合规运营,并通过域名解析将域名与云服务器IP关联。
737 5
|
Linux Windows
幻兽帕鲁服务端性能优化mod
这是一个非官方的《PalWorld》服务器Mod,主要用于修复内存泄漏和高CPU负载问题。目前可能存在未知Bug,建议备份游戏数据后自行测试。下载后,根据系统不同,替换对应路径下的文件即可使用。Windows路径为`PalServer\Pal\Binaries\Win64\`,Linux路径为`pal\pal\binaries\Linux\`。更多详情可访问Github或哔哩哔哩提供的下载地址。
533 9
|
机器学习/深度学习 资源调度 Java
RT-DETR改进策略【注意力机制篇】| 2024 SCI TOP FCAttention 即插即用注意力模块,增强局部和全局特征信息交互
RT-DETR改进策略【注意力机制篇】| 2024 SCI TOP FCAttention 即插即用注意力模块,增强局部和全局特征信息交互
537 2
|
搜索推荐 数据挖掘 API
抖音商品详情API接口对电商的作用及收益
在电商快速发展的背景下,抖音作为全球领先的短视频平台,凭借其庞大的用户基础和高活跃度,通过商品详情API接口为电商行业开辟了新渠道。本文深入解析了抖音商品详情API接口的功能及其对电商的积极作用,包括商品信息实时同步、提升用户体验、精准营销、数据分析与优化等方面,展示了该接口如何帮助电商企业拓展销售渠道、优化商品策略、提升用户满意度、促进跨界合作与开发创新商业模式,为电商企业带来显著收益。同时,文章也探讨了实现这些收益的关键步骤及面临的挑战,强调了数据安全与隐私保护的重要性,以及创新和差异化竞争的必要性。
543 4
|
API Docker 微服务
Ocelot集成Consul实现api网关与服务发现
本文介绍了如何在.NET微服务架构中集成API网关Ocelot和Consul服务发现。首先通过Docker安装并配置Consul,接着在GoodApi项目中实现服务的自动注册与注销,并配置健康检查。然后,通过修改Ocelot的配置文件`ocelot.json`和`Program.cs`,实现基于Consul的服务发现,确保API请求能够正确路由到后端服务。最后,解决了服务解析时可能出现的问题,确保服务的IP地址而非节点名称被正确解析。
563 0
Ocelot集成Consul实现api网关与服务发现

热门文章

最新文章