avatar
文章
24
标签
30
分类
18
Home
Archives
Tags
Categories
LogoRyanLiu 的博客
Home
Archives
Tags
Categories

RyanLiu 的博客

Process and Thread
发表于2025-07-26|操作系统|Process•Thread
Process进程(process),指的是计算机中运行的一个实例。 进程是操作系统中最小的资源分配单元,接收来自 CPU 的调度。 PCB (Process Control Block)系统中每个进程都有一个相应的 PCB,其中包含与其执行、资源需求和状态相关的信息 主要结构如下: 进程 ID:PID 为 0 的是调度进程,是内核中的一部分,也称为系统进程;PID 为 1 的是 init 进程,是一个拥有超级用户权限的的用户进程;PID 为 2 的进程是页守护进程,负责支持虚拟储存系统的的分页操作。 程序计数器:跟踪下一条要执行的指令的地址 CPU 寄存器:储存CPU 寄存器的值进行上下文切换 进程状态 内存管理信息:跟踪分配给进程的内存 IO Status:指示当前分给进程的相关IO设备 会记信息:记录资源使用情况、执行时间和其他统计数据 相关状态 new:创建进程 ready:进程已处于准备运行状态,即进程获得了除了处理器之外的一切所需资源,一旦得到处理器资源(处理器分配的时间片)即可运行。 running:进程正在处理器上运行(单核 CPU...
GMP
发表于2025-07-26|编程语言特性Golang|Golang•GMP
GMP调度器 深入分析Go1.18 GMP调度器底层原理 总述 以下这部分是直接截取的腾讯技术工程的帖子中的内容。 为了解决 Go 早期多线程 M 对应多协程 G 调度器的全局锁、中心化状态带来的锁竞争导致的性能下降等问题,Go 开发者引入了处理器 P 结构,形成了当前经典的 GMP 调度模型; Go 调度器是指:运行时在用户态提供的多个函数组成的一种机制,目的是高效地调度 G 到 M上去执行; Go 调度器的核心思想是:尽可能复用线程 M,避免频繁的线程创建和销毁;利用多核并行能力,限制同时运行(不包含阻塞)的 M 线程数 等于 CPU 的核心数目; Work Stealing 任务窃取机制,M 可以从其他 M 绑定的 P 的运行队列偷取 G 执行;Hand Off 交接机制,为了提高效率,M 阻塞时,会将 M 上 P 的运行队列交给其他 M 执行;基于协作的抢占机制,为了保证公平性和防止 Goroutine 饥饿问题,Go 程序会保证每个 G 运行 10ms 就让出 M,交给其他 G 去执行,这个 G 运行 10ms 就让出 M 的机制,是由单独的系统监控线程通过...
Golang Map
发表于2025-07-26|编程语言特性Golang|Golang•Map
Map参考链接: 万字解析Golang基于桶思想的map实现原理 - MelonTe - 博客园 (2 封私信 / 36 条消息) Go Map底层实现原理 - 知乎 (2 封私信 / 36 条消息) 深入理解Go语言的Map - 知乎 数据结构12345678910111213141516171819202122232425262728293031323334type hmap struct { count int // 当前存储的键值对数量 flags uint8 // 标志位,用于记录 map 的状态(如是否正在扩容等) B uint8 // 桶数组的大小是 2^B,决定了桶的数量 noverflow uint16 // 记录溢出桶的数量 hash0 uint32 // 哈希种子,防止哈希冲突攻击 buckets unsafe.Pointer // 指向主桶数组的指针 ...
golang GC
发表于2025-07-26|编程语言特性Golang|Golang•GC•内存管理
参考内容 https://segmentfault.com/a/1190000044152767 https://zhuanlan.zhihu.com/p/334999060 8.2 写屏障技术 | Go 语言原本 发展历程 Go V1.3- 普通标记清除法,整体过程需要启动STW,效率极低。 Go V1.5- 三色标记法, 堆空间启动写屏障,栈空间不启动,全部扫描之后,需要重新扫描一次栈(需要STW),效率普通 Go V1.8-三色标记法,混合写屏障机制,栈空间不启动,堆空间启动。整个过程几乎不需要STW,效率较高。 Mark and Sweep(Go V1.3)执行流程主要分为以下两个步骤: Mark(需要进行 STW(stop the world)):暂停程序找到所有可达的对象,然后进行标记 Sweep 删除未被标记的对象。 最后停止 STW,然后恢复正常运行。 优缺点优点 简单,容易实现 缺点 STW,让程序暂停,程序出现卡顿。 标记需要扫描整个 heap。 清除数据会产生 heap 碎片。 三色标记法(Go...
123
avatar
RyanLiu
RyanLiu 的博客
文章
24
标签
30
分类
18
关注我
公告
博客部分功能还未完善,后续会陆陆续续完善,请见谅
最新文章
docker 网络问题排查2026-09-27
CSAPP2026-09-15
agent 基础2026-08-31
typescript 疑惑版2026-08-24
typescript 基础知识2026-08-15
分类
  • CSDIY2
    • MIT 6.8241
    • MyChat1
  • Competition1
    • kaiwu1
  • agent1
  • docker2
  • hexo1
标签
gin docker Redis 分布式系统设计 hexo Thread Golang 微服务 GMP Memory css singleflight ppo Mysql 虚拟内存 Map String Process typesript javascript Slice agent GC gorm Lock 站内信 reinforcement learning 内存管理 html 分布式系统
归档
  • 九月 20262
  • 八月 20263
  • 五月 20261
  • 四月 20261
  • 二月 20261
  • 十二月 20251
  • 九月 20251
  • 八月 20253
网站资讯
文章数目 :
24
本站总字数 :
83.3k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2026 By RyanLiu
框架 Hexo|主题 Butterfly