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

http://www.lryc.cn/news/473752.html

相关文章:

  • Github 2024-11-01 开源项目月报 Top19
  • Python实现深度学习模型预测控制(tensorflow)DL-MPC(Deep Learning Model Predictive Control
  • Anki插件Export deck to html的改造
  • csdn 记载文章十分缓慢
  • python通过pyperclip库操作剪贴板
  • LSTM——长短期记忆神经网络
  • 10进阶篇:运用第一性原理解答“是什么”类型题目
  • 【elkb】索引生命周期管理
  • 江协科技STM32学习- P25 UART串口协议
  • 15分钟学 Go 第 22 天:包的使用
  • 【Leecode】Leecode刷题之路第35天之搜索插入位置
  • 速盾:海外cdn高防
  • 图书管理系统(JDBC)
  • 模板初阶及STL简介
  • UE5 不同的编译模式下,module的组织形式
  • 【ms-swift 大模型微调实战】
  • Linux:网络基础
  • mysql 的内连接、左连接、右连接有什么区别?
  • update-alternatives(选择工具)
  • php解密,sg11解密-sg15解密 如何由sourceGuardian11-sourceGuardian15加密(sg11加密~sg15加密)的源码
  • b站小土堆PyTorch视频学习笔记(二)
  • Linux的压缩及其解压命令
  • GXYCTF2019:gakki
  • 顺序表(C 语言)
  • 一:时序数据库-Influx应用
  • Word文档丢失抢救方法:15 个 Word 文档恢复工具
  • 关于自动驾驶等级相关知识
  • Java中跳转结构
  • CNN-Attention分类预测 | Matlab实现多特征分类预测
  • [java][基础]JSP