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、中断

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

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

相关推荐
wanhengidc34 分钟前
短视频运营行业该如何选择服务器?
运维·服务器
雨中rain1 小时前
Linux -- 从抢票逻辑理解线程互斥
linux·运维·c++
-KamMinG1 小时前
Centos7.9安装openldap+phpldapadmin+grafana配置LDAP登录最详细步骤 亲测100%能行
运维·grafana
Bessssss1 小时前
centos日志管理,xiao整理
linux·运维·centos
s_yellowfish1 小时前
Linux服务器pm2 运行chatgpt-on-wechat,搭建微信群ai机器人
linux·服务器·chatgpt
豆是浪个1 小时前
Linux(Centos 7.6)yum源配置
linux·运维·centos
vvw&1 小时前
如何在 Ubuntu 22.04 上安装 Ansible 教程
linux·运维·服务器·ubuntu·开源·ansible·devops
我一定会有钱1 小时前
【linux】NFS实验
linux·服务器
王铁柱子哟-1 小时前
解决 正在下载VS Code 服务器... 问题
运维·服务器
Ven%1 小时前
如何在防火墙上指定ip访问服务器上任何端口呢
linux·服务器·网络·深度学习·tcp/ip