Linux 内核态,用户态,以及如何从内核态到用户态,交互方式有哪些

一、Linux 内核态,用户态

Linux 内核态,用户态,以及如何从内核态到用户态,我来说下我的理解
很多面试官,面试也是照搬照套,网上找的八股文面试题,面试的人也是背八股文,刚好背到了,就过了
运气不好,就不记得了。

开发过程,很多是暂时用不到,面试官考量的,在于理解,如果那种没水平的领导面试喜欢听你背八股文,别去也好,技术没什么长进
,考虑去一个公司,考虑更多是,技术成长,项目经验积累,职业发展,打工打不了一辈子,中国环境决定的,不是我们个人决定的。

进入正题,什么是内核态,什么是用户态?

工作在linux内核源码,就叫内核态,工作在内核上面,和内核无关的,就叫用户态,这个无关,并不是和内核一点关系没有,用户态工作
是需要内核态上面,才能工作的。或者这么理解,内核态离开用户态可以工作,不需要用户态,但是用户态需要借助内核态,才能工作。

很多八股文说,内核态是工作在0-4g空间的,就完了。

什么是用户态呢,比如写个应用程序,这个应用有算法,有qt图形界面,或串口输出的交互界面,有业务逻辑功能,这个功能,可以播放视频,音频,操控各种外设,读写存取文件等等。这个应用程序,还可以是个ls,cat,cd,mv,等等shell命令。简单说就是个用户程序,在内核之上。

什么是内核态,就是工作在linux空间的,包括(进程管理,进程调度,内存管理,文件管理,驱动管理),linux提供的所以核心功能
他们是运行在0-1g空间的。

二、用户空间和内核空间的交互方式,有哪些

这是面试最喜欢问的,我认为这么问的意义是什么

先来回想一下,内核启动时,是如何进入到用户空间的,linux启动最后,会调用start_kernel,这个函数,会调用一个kernel_init,这个就是init进程,所有用户空间的祖宗,所有进程,都是由它而创建,或它的子孙,间接创建,他是个守护进程,不会死掉,除非系统退出。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

ps命令,查看到init进程,ps是工作在用固态下,所以看到的是sbin/init,用户态下一个应用程序
在这里插入图片描述
在这里插入图片描述

1、系统调用
用户空间,通过系统调用,陷入到内核代码工作的空间,比如(fork,pthread,创建进程,线程,read,write,open,打开读写驱动,调用了内核提供的api,就叫系统调用)

2、shell命令

cat命令读取信息,算不算,当然算,从内核空间,获取内核的状态,信息等

在这里插入图片描述

在这里插入图片描述

设置内核算不算,也算设置内核系统参数

sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_tw_recycle=1
echo "net.ipv4.tcp_tw_reuse=1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_recycle=1" >> /etc/sysctl.conf

内核从console控制台,提供一个交互界面,就是用户空间和内核空间,访问的一种方式。

3、中断
中断,异常,也是一种方式,我之前忘记了,回来补充

软中断,硬中断,都是一种和内核交互的交互方式。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux 虚拟环境下源码安装DeepSpeed

第一步:创建虚拟环境: conda create -n deepspeed python3.10 第二步:进入虚拟环境,安装Pytorch 2.3.1 # CUDA 12.1 conda install pytorch2.3.1 torchvision0.18.1 torchaudio2.3.1 pytorch-cuda12.1 -c pytorch -c nvidia 第…

OJ题:随机链表的复制—Java数据结构

目录 随机链表的复制 1. 完整题目 2.错误做法 3.第一次遍历 1.拷贝所有旧节点的val域 2. 串联老节点和新节点 3. 第一次遍历代码: 4.第二次遍历 1. 表示出新链表的节点 2. 表示出新节点的next,random 3. 通过映射关系赋值next,random 4. 第二次遍历代码…

DAY53WEB 攻防-XSS 跨站SVGPDFFlashMXSSUXSS配合上传文件添加脚本

知识点: 1、XSS跨站-MXSS&UXSS 2、XSS跨站-SVG制作&配合上传 3、XSS跨站-PDF制作&配合上传 4、XSS跨站-SWF制作&反编译&上传 XSS分类:https://www.fooying.com/the-art-of-xss-1-introduction/(失效了) …

案例实践 | 以长安链为坚实底层,江海链助力南通民政打造慈善应用标杆

案例名称-江海链 ■ 实施单位 中国移动通信集团江苏有限公司南通分公司、中国移动通信集团江苏有限公司 ■ 业主单位 江苏省南通市民政局 ■ 上线时间 2023年12月 ■ 用户群体 南通市民政局、南通慈善总会等慈善组织及全市民众 ■ 用户规模 全市近30家慈善组织&#…

【专题】计算机网络概述

1. 计算机网络的作用及其发展史 1.1. 计算机网络的作用 二十一世纪的一些重要特征就是数字化、网络化和信息化,它是一个以网络为核心的信息时代。 网络现在已经成为信息社会的命脉和发展知识经济的重要基础。 信息时代以网络为核心。 (1) 网络 “网络”是一个统称…

selenium:操作滚动条的方法(8)

selenium支持几种操作滚动条的方法,主要介绍如下: 使用ActionChains 类模拟鼠标滚轮操作 使用函数ActionChains.send_keys发送按键Keys.PAGE_DOWN往下滑动页面,发送按键Keys.PAGE_UP往上滑动页面。 from selenium import webdriver from se…

数学考研高分突破:解题思维与速度的双重修炼

随着考研季的临近,众多考生为了在数学这一科目中取得高分,纷纷投入到紧张的复习中,如何在有限的时间内,既提高解题思维,又提升解题速度,成为了许多考生心中的难题,本文将围绕这一主题&#xff0…

绘制YOLOv11模型在训练过程中,精准率,召回率,mAP_0.5,mAP_0.5:0.95,以及各种损失的变化曲线

一、本文介绍 本文用于绘制模型在训练过程中,精准率,召回率,mAP_0.5,mAP_0.5:0.95,以及各种损失的变化曲线。用以比较不同算法的收敛速度,最终精度等,并且能够在论文中直观的展示改进效果。支持多文件的数据比较。 专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化…

SpringMVC后台控制端校验-表单验证深度分析与实战优化

前言 在实战开发中,数据校验也是十分重要的环节之一,数据校验大体分为三部分: 前端校验后端校验数据库校验 本文讲解如何在后端控制端进行表单校验的工作 案例实现 在进行项目开发的时候,前端(jquery-validate),后端,数据库都要进行相关的数据…

【华为】静态路由配置

1.配置接入层: LSW1(LSW3同理): vlan batch 10 20 in g0/0/1 port link-type ac port default vlan 10 in g0/0/2 port link-type ac port default vlan 20 in g0/0/24 port link-type tr port tr allow-pass vlan 10 202.配置汇聚层&#xf…

v853扬声器调试

文章目录 1、前言2、环境介绍3、修改设备树4、使用tinymix测试扬声器 1、前言 本文记录v853下的扬声器调试。 2、环境介绍 硬件:韦东山v853 aicit板卡 软件:v853 tina sdk 3、修改设备树 扬声器使用的是v853内置的audio codec,原理图如…

进程的属性

一、进程状态 CPU执行进程代码不是把进程代码执行完毕,才开始执行下一个,而是给每一个进程预分配一个时间片,基于时间片,进行调度轮转。 并行和并发 并行: 多个进程在多个CPU下分别,同时进行运行,这称之…

设计小白必看!一文教你区分原型图和UI图

产品设计过程中,产品经理或UI设计师常常需要在不同的设计阶段产出不同的原型图和UI图。初入职场的产品小白或UI小白很容易将原型图和UI图混淆,不能完全区分它们各自的作用,从而影响了设计流程的效率和效果。本文将详细解析原型图与UI图的定义…

【DS】哈希表,哈希桶的实现

目录 哈希概念哈希冲突哈希函数负载因子哈希冲突的解决闭散列开散列 哈希表闭散列的实现哈希表的结构哈希函数构造函数查找插入删除 哈希表开散列的实现哈希表的结构查找插入删除 哈希表的表长建议是素数 平衡二叉树的学习中,学习及模拟实现了AVL树和红黑树&#xf…

uni-app写的微信小程序如何体积太大如何处理

方法一:对主包进行分包处理,将使用url: /pages/components/equipment/equipment跳转页面的全部拆分为分包,如url: /pagesS/components/equipment/equipment 在pages.json中添加 "subPackages": [{ "root"…

STM32项目实战:基于STM32F4的智能灯光控制系统(LVGL),附项目教程/源码

《智能灯光控制系统_STM32F4》项目完整文档、项目源码,点击下方链接免费领取。 项目资料领取https://s.c1ns.cn/jjQK7 STM32项目实战之“智能灯光控制系统”(基于STM32F4) 今天小编来分享一个《智能灯光控制系统》的项目案例,硬件…

如何批量下载采集淘宝图片?3个方法可以帮助你

如何批量下载采集淘宝图片?在现代电子商务的背景下,淘宝作为中国最大的在线购物平台之一,承载了数以亿计的商品和信息。对于从事电商运营、市场推广或网络营销的人员而言,采集淘宝图片已经成为日常工作中的重要任务。这不仅是为了…

Jenkins pipeline语法笔记

Jenkins pipeline 简介Jenkins Pipeline 优势DSL 是什么 pipeline支持两种语法:声明式pipeline语法:Pipelineagent Pipeline 声明式语法DeclarativeenvironmentoptionsparameterstriggerstoolsinputwhenParallel Pipeline Scripted语法创建一个简单的 Pi…

(38)MATLAB分析带噪信号的频谱

文章目录 前言一、MATLAB仿真代码二、仿真结果画图总结 前言 本文给出带噪信号的时域和频域分析,指出频域分析在处理带噪信号时的优势。 首先使用MATLAB生成一段信号,并在信号上叠加高斯白噪声得到带噪信号,然后对带噪信号对其进行FFT变换&…

数据结构:跳表

数据结构:跳表 跳表实现类架构构造函数析构函数查找插入删除 总代码 跳表 在传统的链表中,不论单链表还是双链表,查询时都要O(N)的时间复杂度,就算是一个有序链表,由于无法像数组一样定址,无法进行二分查找…