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

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

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

相关推荐
添砖java‘’2 小时前
vim高效编辑:从入门到精通
linux·编辑器·操作系统·vim
tryCbest2 小时前
CentOS部署Docker容器
linux·docker·centos
qyhua4 小时前
【Linux运维实战】彻底修复 CVE-2011-5094 漏洞
linux·运维·安全
坠金4 小时前
linux/centos迁移conda文件夹
linux·centos·conda
Andya_net5 小时前
网络安全 | 深入了解 X.509 证书及其应用
服务器·安全·web安全
纳于大麓5 小时前
Kotlin基础语法
linux·windows·kotlin
九皇叔叔5 小时前
Linux Shell 正则表达式中的 POSIX 字符集:用法与实战
linux·运维·正则表达式
東雪蓮☆5 小时前
K8s 平滑升级
linux·运维·云原生·kubernetes
AKAMAI5 小时前
数据孤岛破局之战 :跨业务分析的难题攻坚
运维·人工智能·云计算
东巴图6 小时前
JavaScript性能优化实战大纲性能优化的核心目标
运维·matlab