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命令读取信息,算不算,当然算,从内核空间,获取内核的状态,信息等

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

c 复制代码
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、中断

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

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

相关推荐
团子股股东峥哥1 分钟前
day35-RHEL-管理SELinux的安全性
linux·运维·服务器
蓝速科技2 分钟前
涉外酒店前台双屏翻译机落地应用指南
运维·人工智能·科技·语言模型·自然语言处理·语音识别
Databuff8 分钟前
PuTTY 工具的开源平替来了,免费使用
运维·开源·ssh·开源软件
无小道16 分钟前
fdisk,dmesg,hdparm,swapon命令小记(linux)
linux·运维·服务器
长沙三为智能科技18 分钟前
⚠️ 内容拦截提示:本次输入含品牌引流型关键词,暂不生成文章
服务器·数据库·oracle
没文化的阿浩36 分钟前
【Linux系统】进程状态详解
android·linux·c++·c
暖核41 分钟前
华为云实战:基于WordPress的企业网站上云与高可用架构部署
运维·华为云
是店小二呀1 小时前
AdGuard Home 部署实战:Linux/Windows 安装、DNS 配置与固定公网管理
linux·运维·windows
草莓熊Lotso1 小时前
【Redis 初阶】C++ 客户端实战:从 RESP 协议到 redis-plus-plus 工程化用法
linux·开发语言·网络·数据库·c++·redis·缓存
yulingfeng591 小时前
虚拟机开机时自动挂载目录
linux·运维·服务器