【QA】windows和linux陷入系统调用后有什么区别?

最近被某面试官的这个问题拷打,当场脸烧起来…

首先讲讲系统调用:

系统调用是操作系统为调用者提供服务的接口,以便程序员聚焦于业务问题。分为文件操作,内存分配,进程管理等等。用户使用系统调用后会触发软中断,陷入内核态,cpu的程序状态寄存器的模式位由用户态(>0)变为内核态(=0),根据系统调用号和参数进入内核预先定义好的系统调用的处理程序,最后返回值。

windows和linux陷入系统调用后有什么区别?

linux系统调用:通过软中断(早期是int0x80,后期是syscall)触发内核态的切换,然后会将系统调用号(EAX寄存器)和参数存储在寄存器中,内核通过查找系统调用表得到系统调用的处理函数,执行具体操作,返回值存在EAX寄存器。

windows系统调用:是通过windows API来进行系统调用,通过系统服务调度的机制来调用内核的服务。会在用户态的 DLL(动态链接库)中进行一些初步的处理参数(合法性检查)。存放在寄存器和栈中。通过查找windows API的索引号查找系统服务描述符表找到内核处理程序并调用。返回结果通过寄存器和栈给windows API.

最后记录一下linux内核和windows内核的不同?

linux内核是单内核体系结构(整体式内核),将进程管理,文件管理内存管理做为模块集成到内核中。
windows内核是混合内核体系结构。它融合了微内核和单内核的特点。它有一个小的内核核心(称为 NT 内核),主要负责最基本的功能,如线程调度、中断处理和异常处理。其他的服务作为独立的服务器进程或者驱动程序存在于内核空间。

什么是微内核?
微内核(Micro - kernel)是一种操作系统内核架构。它的设计理念是将操作系统核心功能尽可能地精简,只保留最基本的服务,如进程间通信(IPC)、低级的硬件中断处理、基本的内存管理和处理器调度等功能。其他的操作系统服务,如文件系统、设备驱动程序、网络协议栈等则运行在用户空间或者作为独立的服务器进程运行在内核空间外。

宏内核、微内核、混合内核:推荐文章

宏内核是将操作系统的功能都按照模块集成到内核中。(linux系统)
微内核是将核心功能精简,保留了类似于线程调度、中断、虚拟内存,是最小版本的内核。其他的存在于用户态,所以涉及用户态、内核态频繁切换,损耗性能。(华为的鸿蒙系统)
混合内核是架构像微内核将内核功能精简,但是其他模块在内核态,像是以宏内核状态包围着微内核。(windows:windows NT+服务进程、驱动)

异同点

但linux和windows都支持多任务、对称多处理。
可执行文件不同(L:ELF,W:PE);内核架构不同。

最初二者系统调用都是中断执行的,中断号0x80和0x2E后面windows改为了通过windows API和系统服务调度机制来管理。

二者的线程、进程的管理方式不同,windows有明确的创建进程和线程的API,而linux没有。linux是有一个执行实体(进程和线程都是任务)的概念称为任务。我们把任务想象成单线程的进程。他们拥有内存资源、执行实体、文件资源,但是多个任务可以共享资源。多个任务构成了进程,而任务把它看成线程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/4484.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

设备状态监控一定要直观,可视化大屏最适合这个工作

一、引言 在现代工业生产和各类设施运行中,设备的稳定运行至关重要。为了确保设备能够高效、可靠地工作,及时了解设备的状态是关键。而设备状态监控一定要直观,只有这样才能让操作人员和管理人员迅速掌握设备的运行情况,及时发现…

xxe靶机实战

靶机地址:https://www.vulnhub.com/entry/xxe-lab-1,254/ 下载好后解压 直接拖拽.ovf格式的文件到虚拟机里 打开kali扫描主机,靶机开着或者后台运行就行 arp-scan -I eth0 -l 扫描出来目标靶机ip地址192.168.142.145 nmap扫描端口 nmap -A -sS -T4 -P- --min-rat…

钉钉内集成第三方免密登录(Vue+.Net)

需要实现的效果就是在钉钉内点击应用能跳转到第三方网站并且免密登录 1.登录钉钉PC端管理后台 2.通过管理后台进去开发者后台 3.应用开发 创建H5微应用 4.应用创建成功后直接点权限管理全部授权 5.设置H5登录地址 6. 应用管理发布 至此需要配置的步骤全部已完成,…

画动态爱心(Python-matplotlib)

介绍 氵而已 由于用的是 AI,注释得非常清楚,自己改改也可以用 代码 # -*- coding: utf-8 -*- # Environment PyCharm # File_name 尝试1 |User Pfolg # 2024/11/05 22:45 import numpy as np import matplotlib.pyplot as plt import matplo…

理解 WordPress | 第五篇:页面构建器选择指南

WordPress 专题致力于从 0 到 1 搞懂、用熟这种可视化建站工具。 第一阶段主要是理解。 第二阶段开始实践个人博客、企业官网、独立站的建设。 如果感兴趣,点个关注吧,防止迷路。 什么是 WordPress 构建器 WordPress 构建器(Page Builder&am…

硬件基础07 功率放大器

一、功放理论 在多级放大电路中,输出信号往往要送去驱动—定的装置。例如,这类装置包括收音机中扬声器的音圈、电动机的控制绕组等。多级放大电路除了应有电压放大级外,还要求有一个能输出一定信号功率的输出级。这类主要用于向负载提供功率的…

敬业签适配鸿蒙:开启多端协同新篇章

纯血鸿蒙,即华为推出的原生鸿蒙操作系统(HarmonyOS Next),是一款面向全场景的分布式操作系统,它以其独特的微内核设计和多设备协同能力,引领着智能终端的新潮流。鸿蒙系统的推出,不仅标志着中国…

Matlab车牌识别课程设计报告模板(附源代码)

目 录 一.课程设计目的……………………………………………3 二.设计原理…………………………………………………3 三.详细设计步骤……………………………………………3 四. 设计结果及分析…………………………………………18 五. …

Apache HTTPD 换行解析漏洞(CVE-2017-15715)

Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。 上传一个1.php,被拦截 在1.p…

用qrcode和pyzbar分别生成和解码二维码

我用的是anaconda环境,在anaconda命令行下,用pip分别安装以下库文件: pip install opencv-python pip install numpy pip install pillow pip install myqr pip install qrcode pip install zxing 生成二维码 打开pycharm&#xff0c…

软件测试学习笔记丨Vue学习笔记-基本介绍

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/23458 编译器使用:VScode 推荐插件 JavaScript (ES6) code snippets:包含 ES6 语法中的 JS 代码段Vetur:VSCode 支持 VUE 的工具Auto Close Tag&#xff…

【简历】25届江西某一本大学JAVA简历:不能把大厂的技能写到中厂上

注:为保证用户信息安全,姓名和学校等信息已经进行同层次变更,内容部分细节也进行了部分隐藏 校招的第一法则就是必须要确定校招层次。 开发岗分为大中小厂,不同的层次对学校背景、时间点、项目和考点的要求都不太一样&#xff0c…

微信订阅消息

一、订阅消息模板 进入微信小程序平台,开通订阅消息后进行模板申请 1.申请后得到模板id 2.直接在数据库中插入模板 二、创建订阅消息模板参数类 1.进入相关目录,创建订阅消息发送参数模板类,类属性根据模板的详细类容进行设置 2.在相应…

Vue3 + Element Plus简单使用案例及【eslint】报错处理

本电脑Vue环境已安装正常使用 博主使用npm 包管理器安装 Element Plus.有问题评论区帮忙指正,感谢阅读. 在完成的过程中如果遇到eslint报错 Parsing error :Unexpected token { eslint 这个报错,也可以尝试第7部分报错处理解决。 目录 1.新建项目 2…

MySQL索引、B+树相关知识总结

MySQL索引、B树相关知识汇总 一、有一个查询需求,MySQL中有两个表,一个表1000W数据,另一个表只有几千数据,要做一个关联查询,如何优化?1、为关联字段建立索引2、小表驱动大表 二、b树和b树的区别1、更高的查…

AI绘画凉了吗?都快2025年了你还没搭上AI这一便车吗?

在科技飞速发展的今天,AI 绘画如同一场绚丽的艺术风暴,席卷了整个创意领域。它以其独特的魅力和强大的功能,为艺术家、设计师以及普通爱好者们带来了前所未有的创作体验。 在数字化时代的浪潮下,人工智能(AI)技术正以前所未有的速…

常见 CSS 选择器用法

"Be Your Own Hero" CSS选择器是一种模式&#xff0c;用于选择需要应用CSS样式的HTML元素。以下是一些基本的CSS选择器类型&#xff1a; 1.标签选择器 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">&…

AIDD - 分子药物发现的计算方法现状总结

分子药物发现的计算方法现状总结 01 引言 药物发现的流程近年来因计算技术的飞速进步而发生了深刻变革。**计算辅助药物设计&#xff08;CADD, Computer-Aided Drug Design&#xff09;和人工智能驱动药物发现&#xff08;AIDD, Artificial Intelligence-Driven Drug Discover…

机器学习—代码中的推理

TensorFlow是实现深度学习算法的领先框架之一&#xff0c;另一个流行的工具是圆周率火炬&#xff0c;在这篇文章中&#xff0c;我们专注于张量流&#xff0c;那么如何在代码中实现推理&#xff1f; 让我们深入了解神经网络的一个非凡之处&#xff0c;同样的算法可以应用于这么…

Java基于微信小程序的私家车位共享系统(附源码,文档)

博主介绍&#xff1a;✌stormjun、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…