![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux服务器
文章平均质量分 81
huohunri2013
喜欢探索新技术。
展开
-
Linux内核--第九篇博客--物理内存组织结构
一、系统调用mmap 系统调用mmap用来创建内存映射,把创建内存映射主要工作委托给do_mmap函数, 内核源码文件处理:mm/mmap.c 进程对虚拟内存空间进行管理是通过两种数据结构:红黑树和链表。 众所周知,虚拟内存区域使用起始地址和结束地址描述,链表按起始地址递增排序,链表的 红黑树是平衡二叉查找树,它按照起始地址排序,使用红黑树的好处是:1、在红黑树种查找一个内存虚拟地址的速度很快,增加一个新区域到红黑树,刚好新增的区域会落在最前面。像...原创 2021-09-20 13:30:27 · 137 阅读 · 0 评论 -
Linux内核--第八篇博客--内存映射原理及系统调用
一、内存映射原理内存映射即在进程的虚拟地址空间中创建一个映射,分为两种:(1)文件映射:文件支持的内存映射,把文件的一个区间映射到进程的虚拟地址空间,数据源是存储设备上的文件。(2)匿名映射:没有文件支持的内存映射,把物理内存映射到进程的虚拟地址空间,没有数据源。【内存映射的原理】 创建内存映射时,在进程得用户虚拟地址空间中分配一个虚拟内存区域。内核采用延迟分配物理内存得策略,在进程第一次访问虚拟页得时候,产生缺页异常。如果是文件映射,那么分配物理页,把文件指定区间的数据读到物理页..原创 2021-06-04 22:01:03 · 442 阅读 · 1 评论 -
Linux内核--第七篇博客--内核内存布局和堆管理
一、内存管理架构内存管理子系统架构可以分为:用户空间、内核空间及硬件部分3个层面,具体结构如 下图所示:1、用户空间:应用程序使用malloc()申请内存资源/free()释放内存资源。 2、内核空间:内核总是驻留在内存中,是操作系统的一部分。内核空间为内核保留, 不允许应用程序读写该区域的内容或直接调用内核代码定义的函数。 3、硬件:处理器包含一个内存管理单元(Memory Management Uint,MMU)的部 件,负责把虚拟地址转换为物理地址。二.原创 2021-05-23 22:45:24 · 180 阅读 · 2 评论 -
字符编码Unicode原理
1 字符集和字符编码的区别和联系◼ 字符集:多个字符的集合。例如GB2312是中国国家标准的简体中文字符集,GB2312收录简化汉字(6763个)及一般符号、序号、数字、拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母,共 7445 个图形字符。 ◼ 字符编码:把字符集中的字符编码为(映射)指定集合中的某一对象(例如:比特模式、自然数序列、电脉冲),以便文本在计算机中存储和通过通信网络的传递。◼ 字符编码:把字符集中的字符编码为(映射)指定集合中的某一对象(例如:比特模式、自然数.原创 2021-05-21 15:21:26 · 1987 阅读 · 1 评论 -
2021-05-21
关于UCS万国码,本来想自己写的,发现了一篇好文,转载之Unicode - UCS - 万国码通用字符集 - UCS(Universal Character Set)首先要说明的是Unicode和UCS并不是完全相同的概念Unicode的实现方式不同于编码方式。一个字符的Unicode编码是确定的。它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。Unicode符号需要字节数不等,从1个字节到4个字节,甚至更多。这里就有个严重的问题,计算机怎么知道三个字节表示一个符号,而不是分别转载 2021-05-21 11:07:52 · 76 阅读 · 0 评论 -
Linux内核--第六篇博客--内核内存布局和堆管理
一、内核内存布局 64位Linux一般使用48位来表示虚拟地址空间,42位表示物理地址,通过命令:cat /proc/cpuinfo。ARM64架构处理器采用48位物理寻址机制,最大可寻找256TB的物理地址空间。对于 目前应用完全足够,不需要扩展到64位的物理寻址。虚拟地址也同样最大支持48位寻址,所以在处理器架构设计上,把虚拟地址空间划分为两个空间,每个空间最大支持256TB,linux内核 在大多数体系结构上都把两个地址划分为:用户空间和内核空间。用户空间:0x0000_...原创 2021-05-20 23:58:21 · 352 阅读 · 0 评论 -
Linux内核--第五篇博客--RCU机制及内存优化屏蔽
一、RCU机制RCU英文全称为Read-Copy-Update,顾名思义就是 “读 - 拷贝-更新”,是内核中重要 的同步机制。Linux内核已有原子操作、读写信号量等等锁机制,为何会单独设计一个比较复杂的新机制?1、RCU原理RCU记录所有指向共享数据的指针的使用者,当要修改该共享数据时,首先创建一个 副本,在副本中修改。所有读访问线程都离开读临界区之后 ,指针指向新的修改后副本的指针,并且删除旧数据。2、链表操作RCU能保护的不仅仅是一般的指针。内核也提供标准函数,使得能通过R原创 2021-05-15 23:53:08 · 299 阅读 · 0 评论 -
Linux内核--第四篇博客--实时调度类即SMP
一、实时调度类源分析 1、实时调度实体sched_rt_entity数据结构linux内核源码目录:include/linux/sched.h。linux内核源码目录:/kernel/sched/rt.c。2、实时调度类rt_sched_class数据结构3、实时调度操作核心详解进程插入enqueue_task_rtlinux内核源码目录:/kernel/sched/rt.c。进程选择pick_next_task_rt实时调度会选择最高优先级的实时进.原创 2021-04-11 17:56:20 · 359 阅读 · 0 评论 -
Linux内核--第三篇博客--调度器分析及完全公平调度器CFS
一、调度器分析1、调度器及其功能 内核中用来安排进程执行的模块称为调度器(scheduler),它可以切换进程状态(processstate)。例如执行、可中断睡眠、不可中断睡眠、退出、暂停等。调度器是CPU中央处理器的管理员,专门用来管理时间的,主要负责完成做两件事情:一、选择某些就绪进程来执行,二、是打断某些执行的进程让它们变为就绪状态。调度器分配CPU时间的基本依据就是进程的优先级。上下文切换(contextswitch):将进程在CPU中切换执行的过程,内核承担此..原创 2021-04-04 00:30:49 · 205 阅读 · 2 评论 -
Linux内核--第二篇博客--进程表示及系统调用
一、什么是进程 操作系统作为硬件的使用层,提供使用硬件资源的能力,进程作为操作系统使用层,提供使用操作系统抽象出的资源层的能力。 进程:是指计算机中已运行的程序。进程本身不是基本的运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。 进程的四要素 1、有一段程序代其执行; 2、有进程专用的系统堆栈空间。 3、在内核有task_struct数据结构; 4、进程有独立的存储空间,拥...原创 2021-03-09 18:31:27 · 196 阅读 · 0 评论 -
Linux内核--第一篇博客--Linux内核源码结构组成
一、Linux内核的特征 1.linux内核组织形式为整体式结构 linux内核是面向过程的,每一个模块单独编译,最后链接成一个独立的目标程序。这种结构最大的特点是内部结构简单,子系统容易进行访问,因此内核的工作效率比较高。基于过程的结构有助于不同业务的成员进行基于不同业务的开发,基于这种角度,linux内核又是开放式的开发,它允许任何人对其不同模块进行完善和再次开发。 2.进程调度方式简单而有效。 可以说linux追求效率方面领先,体现在调度方式上也是别具一格,对...原创 2021-03-08 20:57:20 · 421 阅读 · 0 评论 -
随笔:进程间描述字fd的传递
描述字的传递,就是将一个进程中的描述字传递到另一个进程中,使得该描述字依然有效。在多进程网络的CS模式下,服务器fork产生的子进程在fork调用返回后,子进程共享父进程的所有打开的描述字。即使在子进程中调用exec函数,所有描述字通常还是保持打开的状态,也就是描述子是跨exec函数的。这也是为什么在exec调用之后的进程里仍然可以调用父进程共享的套接字的原因。但是这种实现并不能解决子进程的描述字传递给父进程的需求,对于无亲缘关系的进程之间传递描述字就更加不可能。遇到这种跨进程通信的问题,一般的原创 2020-12-24 16:35:27 · 766 阅读 · 0 评论 -
go-admin后台设计之casbin权限管理
1.概要权限管理⼏乎是每个系统或者服务都会直接或者间接涉及的部分.权限管理保障了资源(⼤部分时候就是数据)的安全,权限管理⼀般都是和业务强关联,每当有新的业务或者业务变化时,不能将精⼒完全放在业务实现上,权限的调整往往耗费⼤量的精⼒.其实,权限的本质没有那么复杂,只是对访问的控制⽽已,有⼀套完善的访问控制接⼝,再加上简单的权限模型.权限模型之所以能够简单,就是因为权限管理本身并不复杂,只是在和具体业务结合时,出现了各种各样的访问控制场景,才显得复杂.2.PERM模型PERM(Policy,Eff原创 2020-12-23 17:17:35 · 1616 阅读 · 0 评论 -
徒手调优实现一个支持百万级并发服务器
提问:什么是高并发服务器,高并发指的是什么?回答:单位时间能够承载的客户端最大数量称为并发。包括同时最大连接客户端数量以及同时处理客户端请求数量,即对应业务的承载能力。很多朋友认为服务器能同时建立连接客户端的最大数量就是并发量,这是片面的。无论什么业务,客户端与服务器三次握手建立起连接,这只是完成了第一步,每一个客户端都代表了一个用户,会有不同的请求,会产生对应的数据,会进行前端展示,这些都有对应的瓶颈,比如大量客户端都连接上了我们的服务器,但是如果数据库落盘速度跟不上,有可能会导致用户数据丢失,前原创 2020-12-14 15:56:36 · 1648 阅读 · 9 评论 -
gdb工作原理和内核实现
gdb工作原理和内核实现 Tools 2013-05-19 gdb主要功能的实现依赖于一个系统函数ptrace,通过man手册可以了解到,ptrace可以让父进程观察和控制其子进程的检查、执行,改变其寄存器和内存的内容,主要应用于打断点(也是gdb的主要功能)和打印系统调用轨迹。一、ptrace函数函数原型如下:#include <sys/ptrace.h>l...转载 2018-10-15 17:45:21 · 316 阅读 · 0 评论 -
迭代服务器与并发服务器
大多数TCP服务器是并发的,大多数UDP服务器是迭代的。如果服务一个客户请求的时间不长,使用迭代服务器没有太大问题,一旦客户请求的时间需要花费很长,不希望整个服务器被单个客户长期占用,而希望同事服务多个客户,就需要选择并发服务器了。迭代服务器程序轮廓int listenfd,connfd;listenfd = socket( ... );bind(listen, ... )转载 2016-04-12 16:10:41 · 1892 阅读 · 0 评论