当前位置: 首页 > news >正文

【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是有一个执行实体(进程和线程都是任务)的概念称为任务。我们把任务想象成单线程的进程。他们拥有内存资源、执行实体、文件资源,但是多个任务可以共享资源。多个任务构成了进程,而任务把它看成线程。

相关文章:

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

最近被某面试官的这个问题拷打,当场脸烧起来… 首先讲讲系统调用: 系统调用是操作系统为调用者提供服务的接口,以便程序员聚焦于业务问题。分为文件操作,内存分配,进程管理等等。用户使用系统调用后会触发软中断&…...

Github 2024-11-01 开源项目月报 Top19

根据Github Trendings的统计,本月(2024-11-01统计)共有19个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目9TypeScript项目3JavaScript项目3Svelte项目1Jupyter Notebook项目1Ruby项目1HTML项目1Rust项目1Java项目1C++项目1Go项目1Python中的…...

Python实现深度学习模型预测控制(tensorflow)DL-MPC(Deep Learning Model Predictive Control

链接:深度学习模型预测控制 (如果认为有用,动动小手为我点亮github小星星哦),持续更新中…… 链接:WangXiaoMingo/TensorDL-MPC:DL-MPC(深度学习模型预测控制)是基于 P…...

Anki插件Export deck to html的改造

在Anki中进行复习时,每次只能打开一条笔记。如果积累了很多笔记,有时候会有将它们集中输出成一个pdf进行阅读的想法。Anki插件Export deck to html(安装ID:1897277426)就有这个功能。但是,这个插件目前存在…...

csdn 记载文章十分缓慢

现象:其它网站能够正常访问,但只要点击某个 csdn 页面就会等很久 (本文只针对 csdn 网页,其他网页出现类似情况可以同样处理) 产生这种现象的原因: 这种情况很有可能是在访问 CSDN 主页时,需要向…...

python通过pyperclip库操作剪贴板

pyperclip介绍 pyperclip是一个python库用于操作剪贴板,可以非常方便地将文本复制到剪贴板或从剪贴板获取文本。 通过pip进行安装:pip install pyperclip pyperclip的github地址 pyperclip使用 复制到剪贴板 import pypercliptext "Hello, Wo…...

LSTM——长短期记忆神经网络

目录 1.LSTM 工作原理 2.LSTM的代码实现 3.代码详解 LSTM(Long Short-Term Memory)是一种特殊的循环神经网络(RNN),用于解决长序列中的长期依赖问题。它通过引入门机制,控制信息的流入、保留和输出&…...

10进阶篇:运用第一性原理解答“是什么”类型题目

在667分析题题型中,关于“如何做”和“好处是什么”的题目,许多同学都能较好地运用前述的667作答地图开展答题,但是唯独在“是什么”类型题目(也可以叫做认识型题目),不知从何下手。这种题目通常要求我们理解、分析,并展望未来的发展方向,而结构化、逻辑清晰的答案往往…...

【elkb】索引生命周期管理

索引生命周期管理 Index lifecycle management(索引生命周期管理)是elasticsearch提供的一种用于自动管理索引的生命周期的功能。允许使用者定义索引的各个阶段,从创建至删除。并允许使用者在每个阶段定义索引需要执行的特定动作。这些动作包含索引创建&#xff0c…...

江协科技STM32学习- P25 UART串口协议

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…...

15分钟学 Go 第 22 天:包的使用

第22天:包的使用 欢迎来到Go语言的第22天!今天,我们将深入探讨如何创建和使用包。通过学习包的使用,你将能够更好组织你的代码,提高复用性和可维护性。 1. 包的概念 在Go语言中,包是代码的基本组织单位。…...

【Leecode】Leecode刷题之路第35天之搜索插入位置

题目出处 35-搜索插入位置-题目出处 题目描述 个人解法 思路: 1.依次遍历数组,看目标值是否在数组中 2.如果不在,将目标值插入数组(涉及到数组移动、扩容),返回下标代码示例:(Java…...

速盾:海外cdn高防

随着互联网的快速发展,网站的安全性和稳定性变得越来越重要。尤其是对于大型企业和电商平台来说,保护用户数据和维护网站稳定运行是至关重要的。为了应对日益增长的网络攻击和恶意访问,海外CDN高防服务成为了一种非常受欢迎的解决方案。 首先…...

图书管理系统(JDBC)

AdminUser是管理员类 NormalUser是用户类 AddOperation是增加图书类 BorrowOperation是借书类 DelOperation是删除图书类 ExitOperation是退出类 FindOperation是查找图书类 IOPeration是接口 ReturnOperation是还书类 ShowOperation是显示所有图书类 注意&#xff1a…...

模板初阶及STL简介

目录 一.模板初阶 1.泛型函数 2.函数模板 1.函数模板概念 2.函数模板使用格式 3.函数模板的原理 4.函数模板的实例化 5.模板参数的匹配原则 3.类模板 1.类模板的定义格式 2.类模板的实例化 二.STL简介 1.什么是STL 2.STL的版本 3.STL的六大组件 4.如何学习STL …...

UE5 不同的编译模式下,module的组织形式

由于最近在琢磨UE5.4这个引擎,在学习过程中,碰到了一些非常有意思的事情,我在尝试把之前写的一些底层库搬到UE里面,比如底层库,网络库等等,我通过建立module,将这些库用源代码的方式整合进了UE5…...

【ms-swift 大模型微调实战】

安装环境 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepip install modelscope vllm ‘ms-swift[llm]’ -U 下载模型 modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir ./Qwen2.5-7B-Instruct 微调 实验环境:…...

Linux:网络基础

计算机是人的工具,人需要协作,于是有了网络 专用服务器->专用计算机 局域网:随着计算机的数量增加,通过交换机和路由器连接计算机 广域网:将远隔千里的计算机都连在一起 协议 协议就是约定俗成 计算机之间用光信号…...

mysql 的内连接、左连接、右连接有什么区别?

在MySQL中,内连接、左连接和右连接是三种常见的连接类型,它们用于通过共享一个或多个字段的值,将两个或多个表组合在一起进行查询。以下是这三种连接类型的详细区别: 一、内连接(INNER JOIN) 定义&#x…...

update-alternatives(选择工具)

0 Preface/foreword 1 update-alternatives介绍 1.1 选项和用法 1.2 install用法 update-alternatives --install <link> <name> <path> <priority> [--slave <link> <name> <path>] link&#xff1a;符号链接&#xff08;软链…...

别再傻傻分不清了!GIS新手必看:WGS84和UTM到底怎么选?附QGIS/ArcGIS实操对比

GIS坐标系选择指南&#xff1a;WGS84与UTM的核心差异与实战决策 刚接触地理信息系统(GIS)时&#xff0c;坐标系的选择往往令人困惑。为什么同样的位置数据&#xff0c;在不同坐标系下显示的数值完全不同&#xff1f;为什么测量同一个区域的面积会得到差异巨大的结果&#xff1f…...

别再只把 AI 当聊天框了!探索 Google DeepMind 的 `agy` 命令行工具与人机协同新姿势

别再只把 AI 当聊天框了&#xff01;探索 Google DeepMind 的 agy 命令行工具与人机协同新姿势 在 AI 辅助编程&#xff08;AI Coding&#xff09;卷到飞起的今天&#xff0c;大部分开发者最习惯的可能还是在 IDE 侧边栏里装个插件&#xff0c;或者在网页端和 AI 缝缝补补地复制…...

初次使用Taotoken模型广场进行选型与测试的直观感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初次使用Taotoken模型广场进行选型与测试的直观感受 作为一名需要接入大模型能力的开发者&#xff0c;面对市场上众多的模型提供商…...

如何在GTA5在线模式中保护自己?YimMenu安全增强菜单完整指南

如何在GTA5在线模式中保护自己&#xff1f;YimMenu安全增强菜单完整指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/y…...

制造业数据架构设计顶层规划方案:数据资源规划、基础数据管理、数据分析应用、数据治理体系 、实施路线图

该方案针对企业数据架构空白、缺乏统一模型与治理体系的问题&#xff0c;提出了以数据资源规划、主数据与元数据管理、数据分析应用及数据治理为核心的整体架构。通过明确数据分布与流向、构建企业级数据仓库与治理平台&#xff0c;最终实现数据驱动决策与业务规范化&#xff0…...

探索AI编程工具的民主化:从技术壁垒到开源共享的技术演进之路

探索AI编程工具的民主化&#xff1a;从技术壁垒到开源共享的技术演进之路 【免费下载链接】cursor-vip cursor IDE enjoy VIP 项目地址: https://gitcode.com/gh_mirrors/cu/cursor-vip "技术不应成为特权&#xff0c;而应是推动文明进步的共同财富。" —— 开…...

终极二维码修复指南:免费在线工具QrazyBox完整使用教程

终极二维码修复指南&#xff1a;免费在线工具QrazyBox完整使用教程 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你是否遇到过重要二维码因为打印模糊、咖啡渍或物理磨损而无法扫描的困扰&a…...

Fere AI 新手快速上手指南

在快速迭代的开发节奏中,我们常常面临这样的困境:想要为应用集成智能对话能力,却被复杂的模型部署、高昂的算力成本或是晦涩的 API 文档劝退。很多时候,开发者需要的不是一个庞大的底层框架,而是一个能够即插即用、稳定可靠且易于集成的智能服务接口。无论是构建客服机器人…...

酷安UWP桌面客户端:在Windows电脑上高效刷酷安的完整指南

酷安UWP桌面客户端&#xff1a;在Windows电脑上高效刷酷安的完整指南 【免费下载链接】Coolapk-UWP 一个基于 UWP 平台的第三方酷安客户端 项目地址: https://gitcode.com/gh_mirrors/co/Coolapk-UWP 还在为手机小屏幕刷酷安而感到眼睛酸痛吗&#xff1f;想在27寸大屏幕…...

Unity PC端软键盘唤醒实战:Windows osk.exe兼容性攻坚

1. 这不是“调个API”就能解决的事&#xff1a;PC端软键盘唤醒的现实困境Unity项目上线前一周&#xff0c;测试同事在Windows台式机上点开登录框&#xff0c;手指悬在键盘上方三秒——没反应。他下意识摸了摸键盘&#xff0c;又点了一次输入框&#xff0c;还是没弹出任何软键盘…...