一、mmap 概述 mmap是memory map(内存映射)的缩写,其为一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和程序虚拟地址空间具有一种虚拟对应关系。mmap()系统调用使得进程之间通过映射同一个普通文件实现共享内存,普通文件被映射到进程地址空间
1. 挂载文件系统 当前系统已经完成了根文件系统的挂载,将要挂载新的文件系统。 新的文件系统挂载在根文件系统的某个目录的inode上。 1)将硬盘的超级块读出,载入系统的super_block[8]中 2)从根文件系统读出指定的inode,载入inode_table[32] 3)将硬盘的超级块挂接到inode_table[32]中指定
(可选)编译环境搭建 docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0 docker run -it -p 8070:8070 -v ~/inner:/tmp --privileged=true swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0 /bin/bash 前期
1.原因 cgroup 的 kmem account 特性在 3.x 内核上有内存泄露问题,如果开启了 kmem account 特性 会导致可分配内存越来越少,直到无法创建新 pod 或节点异常 几点解释: kmem account 是cgroup 的一个扩展,全称CONFIG_MEMCG_KMEM,属于机器默认配置,本身没啥问题,只是该特性在 3.10 的内核
0. 前言 现在已经有了处于特权3的进程0,将使用fork出进程1,之后的进程也使用fork。 void main() { sti(); move_to_user_mode(); // 切换到特权3 if (!fork()) { init(); // 进程1进行init } for(;;) pause(); // 进程0循环进入可中断阻塞态 } 1. fork
这部分将讲解上层应用软件如何与操作系统交互,理解操作系统到底发生了什么事情,理解操作系统工作原理,为以后扩充操作系统、设计操作系统铺垫。 参考资料: 课程:哈工大操作系统(本部分对应 L4 && L5) 实验:操作系统原理与实践_Linux - 蓝桥云课 (lanqiao.cn) 笔记:操作系统学习导引 · 语
1. 添加repo库 yum -y install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm 2. 导入签名 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 3. 差看长期支持版本 [root@localhost ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel&q
报错如下所示: [I 18:13:05.891 NotebookApp] KernelRestarter: restarting kernel (4/5), new random ports Traceback (most recent call last): File "D:\Anaconda\Main\envs\tensorflow2.4.1\lib\runpy.py", line 194, in _run_module_as_main return _r
苍穹之边,浩瀚之挚,眰恦之美; 悟心悟性,善始善终,惟善惟道! —— 朝槿《朝槿兮年说》 写在开头 我国宋代禅宗大师青原行思在《三重境界》中有这样一句话:“ 参禅之初,看山是山,看水是水;禅有悟时,看山不是山,看水不是水;禅中彻悟,看山仍然山,看水仍然是水。” 作为一名Java Developer,在面对Ja
本文译自 Avoiding CPU Throttling in a Containerized Environment。作者:Joakim Recht和Yury Vostrikov 在 Uber,所有有状态的工作负载都运行在一个跨大型主机的通用容器化平台上。有状态的工作负载包括MySQL®、Apache Cassandra®、ElasticSearch®、Apache Kafka®、Apache
CentOS7 内核升级 背景:修复服务器内核漏洞 当安装了一个发行版,它包含了一个特定版本的内核,如下这台服务器内核则为:Linux 3.10.0-1160.el7.x86_64 # uname -sr Linux 3.10.0-1160.el7.x86_64 内核升级操作步骤如下: 安装elrepo# 载入公钥,安装eprepo源(网址:http://elrepo.org/
win32k.sys虽然为驱动文件但不处理I/O请求,主要为应用层提供大量服务。功能上主要实现窗口管理(收集、分发消息,控制窗口显示)和图形设备接口(各种图形绘制、文本输出)。win32.sys向内核注册一组调用函数,介入到内核的线程、进程,每个线程一旦调用win32.sys的服务就成了GUI线程。win32k.sy
原文链接:https://blog.csdn.net/xiao_yi_xiao/article/details/123665388 top / top-c 显示完整的治命令 # 接下来按1,查看每个cpu占用,再按1返回 q 退出程序 敲击键盘 b (打开/关闭 加亮效果) 敲击 y 键 打开/关闭 运行态进程 的加亮。 敲击 x 键 打开/关闭 排序
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图。如有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信息附在文章后面,并声明我的个人信息和本人博客地址即可,但必须事先通知我。 前置知识 在开始正
LKM -> Linux Kernel Module 作为Linux内核程序,lkm拥有极高的权限,故常用于编写驱动,当然,在Rootkit领域也十分流行。 LKM基本结构 LKM程序的结构和一般用户模式下的c语言程序不同,一个普通的C语言程序如下: 1 #include <stdio.h> 2 3 void main() { 4 printf("Hello world in us
1.部分Linux命令 Linux使用mknod命令创建设备节点 Linux使用mkdir命令创建目录文件 Linux使用mkfifo命令创建管道文件 ☞ linux mknod命令解析_童安格粉丝的博客-CSDN博客_mknod ☞ mkfifo函数使用_superywf的博客-CSDN博客_mkfifo函数 2. Linux设备驱动
简介 线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程间可以并发,进程内的各线程间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件) 引入线程后,进程只作为除CPU之外的系统资源的分配单元(如
文章转载至网易云架构师刘超的个人微信号 内核,是指的操作系统内核。 所有的操作系统都有内核,无论是Windows还是Linux,都管理着三个重要的资源:计算,网络,存储。 计算指CPU和内存,网络即网络设备,存储即硬盘之类的。 内核是个大管家,想象你的机器上跑着很多的程序,有word,有excel,看着视频
异步 异步引入 前几章节提供的休眠-唤醒,poll机制,都需要休眠等待某个事件发生。但是在实际中,我们并不会休眠等待事件的发生, 而是采用另一种方式,等外部事件发生之后,将结果通知给我们。在程序中,就是驱动程序中的数据主动上报给App,App收到信号之后, 执行对应的动作。这种机制称为“异
定时器 定时器 定时器作为重要模块。是支持完成调度的基础之一。主要主要有两个方面:时间,动作。对应程序中的超时时间,函数。 在内核中使用定时器的接口函数: setup_timer(timer, fn, data):设置定时器,主要是初始化timer_list结构体,设置其中的函数、参数。 void add_timer(struct time
1 、 /proc/sys/net/ipv4/tcp_syn_retries /proc/sys/net/ipv4/tcp_syn_retries 参数标识对一个新建连接,内核要发送多少个SYN连接请求才决定放弃,此值不应该大于255,默认值是5, 建议设置为2 设置方法如下: echo 2 > /proc/sys/net/ipv4/tcp_syn_retries 2、/proc/sys/net/ipv4
1 原理篇-Redis数据结构 1.1 Redis数据结构-动态字符串 我们都知道Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不过Redis没有直接使用C语言中的字符串,因为C语言字符串存在很多问题: 获取字符串长度的需要通过运算 非
原创链接:https://www.modb.pro/db/101042 由于 Linux 内核中的缺陷,在 Kubernetes 集群中你很可能会碰到恼人的 DNS 间歇性 5 秒延迟问题(社区 issue 为 #56903[1])。虽然 issue 已经关闭了,但并不是说这个问题已经完全解决了,所以在管理和维护 Kubernetes 集群时,我们需要注意绕开这个
Linux内核参数的优化 由于默认的Linux内核参数考虑的是最通用的场景,这明显不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数,使得Nginx可以拥有更高的性能。 在优化内核时,可以做的事情很多,不过,我们通常会根据业务特点来进行调整,当Nginx作为静态Web内容服务器、
命令及效果如下图所示: (查看系统、内核、软件版本的命令持续添加。)