首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux内核设计实现

一. linux内核简介 1. linux简介 1.1 unix的特点 unix很简洁,仅提供几百个系统调用,并有非常明确的设计目的 unix所有东西都当作文件对待,这种抽象使对数据和设备都通过一套相同的系统调用接口进行...内核用C语言编写,移植能力很强 进程创建迅速,独特的fork调用 提供了简洁但是稳定的进程间通讯原语 1.2 unix和linux linux克隆unix,但不是unix linux借鉴了unix很多的设计...,并且实现了 unix的api linux没有直接使用unix的源代码,但完整表达了unix的设计目标并保证编程接口一致 2....线程在linux中的实现 4.1 liunx线程概述 一组线程共享进程内的内存地址空间,打开的文件和其他资源 线程机制支持并发程序设计技术,多处理器上保证真正的并行处理 linux实现线程的机制非常独特...调度算法 3.1 概述 linux调度程序定义kernel/sched.c 2.5版本内核重写调度算法,和以前版本区别很大,实现以下目标 充分实现O(1)调度,不管多少进程或什么输入,每个算法能在恒定时间内完成

2.8K52

Linux内核设计实现》第3版

Linux内核设计实现》第3版,英文版已经出版,中文版即将出版。...本书基于linux 2.6介绍了linux内核的设计实现,涵盖了从核心内核系统的应用到内核设计实现等各方面内容,主要内容包括:进程管理、调度、时间管理和定时器、系统调用接口、内存寻址、内存管理、页缓存...本书详细描述了linux内核的主要子系统和特点,包括其设计实现和接口,既介绍理论也讨论具体应用,填补了linux内核理论和实践细节之间的鸿沟。...能够带领读者快速走进linux内核世界,真正开发内核代码。     如果你是一名linux内核爱好者,本书的内容可以帮助你大显身手。如果你是一名普通程序员,本书的内容将会拓宽你的编程思路。...就我们的经验,内核初学者(不是编程初学者)可以从这本书着手,对内核各个核心子系统有个整体把握,包括它们提供什么样的服务,为什么要提供这样的服务,又是怎样实现的。

1.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

读书笔记|Linux内核设计实现

Linux内核的设计原理进行了细致的说明,也有具体实现部分的介绍,结合源码能很好的理解Linux内核; 在简单翻了一遍之后,带着如下几个疑问,整理了下相关知识点: 1、内核是什么时候加载运行的; 2、...根据《Linux内核设计实现》说明,CPU在某个任何特定的时间点上的活动必然概括为下列三种之一: 运行于用户空间,执行用户进程; 运行于内核空间,处于进程上下文,代表某个特定的进程执行; 运行于内核空间...Linux设备驱动作为一个linux内核模块存在,模块都有2个接口函数,模块初始化函数和模块退出函数。 上面提到的驱动程序的注册。一般是由模块初始化函数来实现的。...系统调用:内核通信的关键,系统调用包括系统调用号,系统调用的实现,系统调用上下文等; 图来源:https://blog.csdn.net/h1791820113/article/details/90545241...MMU/Cache line CPU L1/L2高速缓存 页高速缓存:Linux内核实现的磁盘缓存,主要用来减少对磁盘的I/O操作。

97920

深度剖析 Linux 伙伴系统的设计实现

在上篇文章 《深入理解 Linux 物理内存分配全链路实现》 中,笔者为大家详细介绍了 Linux 内存分配在内核中的整个链路实现: image.png 但是当内核执行到 get_page_from_freelist...那么本文笔者就为大家完整地介绍一下伙伴系统这部分的内容,我们将基于内核 5.4 版本的源码来详细的讨论一下伙伴系统在内核中的设计实现。 文章概要.png 1....伙伴系统的内存分配原理 在 《深入理解 Linux 物理内存分配全链路实现》 一文中的第二小节 " 2....而在 Linux 内存管理的架构中都是统一通过 struct page 来管理内存,复合页却是通过两个或者多个物理上连续的内存页 page 组装成的一个逻辑页,那么复合页的管理普通页的管理如何统一呢?...内存释放源码实现 在 《深入理解 Linux 物理内存分配全链路实现》 中的 “1.

33031

Linux中文输入法-搜狗输入法安装方法

Linux中文输入法-搜狗输入法安装方法 作者:根号二 最近在使用openSUSE系统上默认输入法实在不舒服,更换个比较常用的搜狗吧,下面就是具体的更换方法(比Ubuntu步骤略繁琐一点)。...接下来就开始安装输入法安装器(其实是一个下载sogou输入法deb包并且解压安装处理的shell处理脚本)。 安装搜狗输入法 添加好了搜狗输入法安装器源后,就可以开始了。...由于搜狗输入法依赖libQtWebKit4,所以记得要安装上。...到此,我们安装完了,可以试试搜狗输入法了。...如果对搜狗输入法安装器脚本有兴趣(模仿可以迁移很多deb包到opensuse里的),可以到这个目录/var/adm/update-scripts 下,找到sogou-pinyin-2.2.0.0102-

8.1K10

浅析Linux系统的输入法平台

linux系统下的输入法的认知,linux输入法的有两个要素,输入法平台和QT,缺一不可~ ---- ---- Linux下常用的中文输入法平台有IBus、fcitx和scim。...因此不关注 IBus (英文全称为Intelligent Input Bus) 是GNU/Linux和类UNIX操作系统下的以GPL协议分发源代码的开源免费多语言输入法框架。...IBus支持多种输入法,如拼音输入法,并支持基于码表的输入法,如五笔等输入法,是多个流行的GNU/Linux发行版(如Debian,RedHat等)的默认非英文输入法平台。...,彻底解决在GNU/Linux下没有一个好的中文输入法的问题。...fcitx 的源码包内提供了区位和全/简/双拼,并支持基于码表的输入法。可以输入UTF-8编码中的文字。有配置界面,界面展现形式更接近windows,比较适合windows转linux的用户。

9.3K30

Linux-Manjaro18.0.4 安装sogou输入法

最近想装个双系统,看了一下linux发行版的排名,manjaro吸引了我的注意,准备装来试试看。装好系统起来后发现没有支持中文输入,用了这么多输入法还是搜狗的最好用,决定装sogou输入法了。...export QT_IM_MODULE=fcitx export XMODIFIERS="im=fcitx" $ source ~/.xprofile 网上教程到这里重启系统按理说就可以使用sogou输入法了...,但是选择不了,按快捷键切换输入法也没有用,突然又出来提示 “搜狗输入法异常!...fcitx-gtk2  3) fcitx-gtk3  4) fcitx-qt5,确实少了qt4,安装qt4 $ pacman -S fcitx-qt4 装的时候出来提示 ” fcitx-lilydjwg-git ...,这里继续安装,以fcitx-lilydjwg-git为准,装完以后重启系统,发现sogou输入法可以选择了,但是还是不能输入中文!!

4.8K10

《redis 设计实现》--总结

Redis设计实现,以及关于Redis使用的总结 1.数据结构对象 1.简单动态字符串 Redis自己构建了简单动态字符串(Simple Dynamic String,SDS)来作为默认的字符串表示...哈希表的扩展收缩:以下条件满足时: 服务器没有执行BGSAVE或BGREWRITEAOF命令,哈希表负载因子>1 服务器在执行BGSAVE或BGREWRITEAOF命令,哈希表负载因子>5...Redis中跳跃表的实现: ?...写入同步:服务器每次结束一个时间循环之前,都会调用flushAppendOnlyFile函数,考虑是否将aof_buf缓冲区中的内容写入和保存到AOF文件中。...底层模型:它们之间底层实现方式以及客户端之间通信的应用协议不一样。Redis直接自己构建了VM 机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。

76521

《redis 设计实现》--总结

Redis设计实现,以及关于Redis使用的总结 1.数据结构对象 1.简单动态字符串 Redis自己构建了简单动态字符串(Simple Dynamic String,SDS)来作为默认的字符串表示...哈希表的扩展收缩:以下条件满足时: 服务器没有执行BGSAVE或BGREWRITEAOF命令,哈希表负载因子>1 服务器在执行BGSAVE或BGREWRITEAOF命令,哈希表负载因子>5...Redis中跳跃表的实现: ?...写入同步:服务器每次结束一个时间循环之前,都会调用flushAppendOnlyFile函数,考虑是否将aof_buf缓冲区中的内容写入和保存到AOF文件中。...底层模型:它们之间底层实现方式以及客户端之间通信的应用协议不一样。Redis直接自己构建了VM 机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。

1.1K40

scheduler-设计实现

标签条件的节点,比如 nodeName, label, cpu, 磁盘,cpu 内存等: 这类插件包括: TaintToleration: 污点和容忍 NodeName:检查 Pod 指定的节点名称当前节点是否匹配...: 选择资源分配较少的节点 NodeResourcesMostAllocated: 选择已分配资源多的节点 InterPodAffinity: 实现 Pod 间亲和性反亲和性 ServiceAffinity...: 检查属于某个 Service 的 Pod 配置的标签所定义的节点集是否适配。...几篇论文中的设计如 borg,mesos 也都是单 master + 多 slave 设计。borg 的经验告诉我们,中心化并不一定是一个性能瓶颈(数万节点,上万任务的调度频率)。...统一的 调度上层,类似 mesos/omega 或者 yunikorn 的方式,协调子调度器的关系,统一的调度层需要被精巧的设计,这种设计必须同时考虑灵活性、简洁性、功能性。

1.9K120

《Redis设计实现》读书笔记(三十二) ——Redis事务设计实现

《Redis设计实现》读书笔记(三十二) ——Redis事务设计实现 (原创内容,转载请注明来源,谢谢) 一、概述 redis的事务同数据库的事务概念一样,即多条命令都成功执行,才会生效...二、redis事务实现 redis事务实现包括事务开始、事务入队、事务执行。 1、事务开始 当客户端输入multi命令,表示事务开始。...很多关系型数据库不同,redis不支持事务的回滚,因为redis的作者认为事务出错只有在开发环境中会有,生产环境没有。而回滚会导致redis代码复杂,设计初衷不符。...3、隔离性 隔离性是指多个事务并发进行,各个事务不会互相影响,并且并发状态下执行事务串行状态下执行事务结果完全相同。...4、watch命令通过数据库的redisDB结构体的watched_keys字典中,将字段要监视的客户端进行关联,当键被修改,则相应的监视该键的全部客户端的REDIS_DIRTY_CAS标识被打开。

97150

Linux:断点原理实现

T 状态意味着:(TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态,接下来就可以通过 GDB 实现各种调试的操作了。...我们这次也要实现类似的效果,不过只是一个超简化版本,只考虑:在指定的位置暂停,获得进程的控制权。...前置知识准备 在实现之前,我们需要了解下必要的知识: 寄存器:RIP 如果之前没有了解 寄存器 的童鞋可以先看看:https://www.jianshu.com/p/029......实现思路 实现的思路非常简单 1. 先确定我们要断点的地址 在 GDB 中,我们是习惯对 行号 或者 函数名 直接设置断点,行号相对来说比较复杂,我们先展示 函数名 的。...在 Linux 环境下编译出来的可执行文件都是遵循 ELF 格式,如果没有特殊处理,它会保留比较完整的 符号表。 就拿开头的程序来当例子,可以通过 readelf -s a.out 查看: ?

1.8K10
领券