Ty-Chen's Home

Collecting, sharing and creating knowledge


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

Linux操作系统学习笔记(七)任务调度

发表于 2020-05-25   |   更新于 2020-08-30 | 分类于 Linux操作系统内核学习 |
字数统计: 7.7k | 阅读时长 ≈ 36

一. 前言

  在前文中,我们分析了内核中进程和线程的统一结构体task_struct,并分析进程、线程的创建和派生的过程。在本文中,我们会对任务间调度进行详细剖析,了解其原理和整个执行过程。由此,进程、线程部分的大体框架就算是介绍完了。本节主要分为三个部分:Linux内核中常见的调度策略,调度的基本结构体以及调度发生的整个流程。下面将详细展开说明。

阅读全文 »

Linux操作系统学习笔记(六)进程、线程的创建和派生

发表于 2020-05-22   |   更新于 2020-07-18 | 分类于 Linux操作系统内核学习 |
字数统计: 8.1k | 阅读时长 ≈ 34

一. 前言

  在前文中,我们分析了内核中进程和线程的统一结构体task_struct,本文将继续分析进程、线程的创建和派生的过程。首先介绍如何将一个程序编辑为执行文件最后成为进程执行,然后会介绍线程的执行,最后会分析如何通过已有的进程、线程实现多进程、多线程。因为进程和线程有诸多相似之处,也有一些不同之处,因此本文会对比进程和线程来加深理解和记忆。

阅读全文 »

Linux操作系统学习笔记(五)进程的核心——task_truct

发表于 2020-05-17   |   更新于 2020-07-31 | 分类于 Linux操作系统内核学习 |
字数统计: 4.5k | 阅读时长 ≈ 18

一. 前言

  在前文中,我们分析了内核启动的整个过程以及系统调用的过程,从本文开始我们会介绍Linux系统各个重要的组成部分。这一切就从进程和线程开始,在 Linux 里面,无论是进程,还是线程,到了内核里面,我们统一都叫任务(Task),由一个统一的结构 task_struct 进行管理。这个结构非常复杂,本文将细细分析task_struct结构。主要分析顺序会按照该架构体中的成员变量和函数的作用进行分类,主要包括:

阅读全文 »

Linux操作系统学习笔记(四)系统调用

发表于 2020-05-11   |   更新于 2020-12-18 | 分类于 Linux操作系统内核学习 |
字数统计: 3.8k | 阅读时长 ≈ 16

一. 前言

  通过前面几篇文章,我们分析了从按下电源键到内核启动、完成初始化的整个过程。在后面的文章中我们将分别深入剖析Linux内核各个重要部分的源码。考虑到后面的部分我们会从用户态的代码开始入手一步一步深入,因此在分析这些之前,我们需要仔细看一看如何实现一个从用户态到内核态再回到用户态的系统调用的全过程,即系统调用的实现。

阅读全文 »

Linux操作系统学习笔记(三)内核初始化

发表于 2020-05-05   |   更新于 2020-07-18 | 分类于 Linux操作系统内核学习 |
字数统计: 4k | 阅读时长 ≈ 16

一. 前言

  前文分析到Linux内核正式启动,完成了实模式到保护模式的切换,并做好了各种准备工作。下来就要看开始内核初始化工作了,源码位置位于init/main.c中的start_kernel(),源码如附录所示。这包括了一系列重要的初始化工作,本文会介绍其中一部分较为重要的,但是详细的介绍依然会留在后文各个模块的源码学习中单独进行。本文的目的在于承接上文给出一个从内核启动到各个模块开始运转的过程介绍,而不是详细的各部分内容介绍。

  • 创建0号进程:INIT_TASK(init_task)

  • 异常处理类中断服务程序挂接:trap_init()

  • 内存初始化:mm_init()

  • 调度器初始化sched_init()

  • 剩余初始化:rest_init()

    阅读全文 »

Linux操作系统学习笔记(二)内核运行

发表于 2020-04-26   |   更新于 2020-07-18 | 分类于 Linux操作系统内核学习 |
字数统计: 3.2k | 阅读时长 ≈ 11

一. 前言

  上文中,我们分析了从按下电源键到BootLoader完成加载的过程。加载完成之后,就要正式启动Linux内核了,而在这之前首先要完成从实模式到保护模式的切换。本文主要分析以下几部分内容

  • 新旧中断的交替
  • 打开A20
  • 进入main函数
  • 内核初始化

  其实整个过程中还有很多内容,比如检查各种硬件设备等,在此略过不提。下面就开始潜入Linux源码的海洋畅游啦。

阅读全文 »

Linux操作系统学习笔记(一)启动

发表于 2020-04-24   |   更新于 2020-12-02 | 分类于 Linux操作系统内核学习 |
字数统计: 3.2k | 阅读时长 ≈ 11

一. 前言

  Linux操作系统内核是服务端学习的根基,也是提高编程能力、源码阅读能力和进阶知识学习能力的重要部分,本文开始将记录Linux操作系统中的各个部分源码学习历程。

  关于如何学习源码,个人觉得可以从以下角度入手,有效地提高阅读和学习的效率。(学习语言就不说了,这是基本功。学习IDE推荐Source Insight或者Visual Studio,网站源码阅读推荐woboq)

  • 理解代码的组织结构。 以Linux源码举例,首先你得知道操作系统分为哪几个部分,他们单独做了什么功能,如何进行配合完成更为具体的功能。建立整体的印象有助于后续深入学习的时候方便理解,毕竟代码是用的不是看的,理解他的作用有利于理解为什么要这么做。
阅读全文 »

分布式系统设计学习笔记

发表于 2020-04-24   |   更新于 2020-04-25 | 分类于 分布式系统设计 |
字数统计: 154 | 阅读时长 ≈ 1

前言

  本文挖个新坑,记录分布式系统设计中的点点滴滴,主要包括

  • 分布式系统技术栈
  • 分布式系统关键技术
  • 分布式系统弹力设计
  • 分布式系统管理设计
  • 分布式系统性能设计

  每一个部分展开都有着宏伟壮阔的篇章,不是一时半会能够学完学透的,必须沉下心来扎扎实实学习,并通过不断地实践巩固和提高。

阅读全文 »

编程范式学习记录

发表于 2020-04-24   |   更新于 2020-11-25 | 分类于 编程范式 |
字数统计: 96 | 阅读时长 ≈ 1

一. 前言

  本文记录各种不同的编程范式及他们之间的联系和区别,由于经验尚浅可能无法写的十分入味,后续待资历渐长再慢慢修改润色。

阅读全文 »

关于MMORPG多人对战中热点问题的解决思路讨论

发表于 2020-04-19   |   更新于 2020-05-26 | 分类于 网络优化 |
字数统计: 2.3k | 阅读时长 ≈ 7

一. 引子

  本人是重度游戏爱好者,MMORPG当然也体验过很多,从早期的传奇、奇迹到冒险岛,从天下三、剑网三到天刀、逆水寒,其中有一个共同的问题:人一多就卡。拿剑网三举例,大攻防小攻防简直不要太卡,尤其是一波对冲,如果你不屏蔽人物、不降低画质,那简直就是在作死的边缘试探。为此,本文试分析如何解决MMORPG中多人对战造成的卡顿问题。

  卡顿分为个人电脑卡顿和服务器卡顿两种。其中个人卡顿可能是由于显卡性能不够(引擎优化不够)、内存不足(客户端优化不够)、网络延迟高(大多数是因为网太垃圾了,也有可能是客户端服务端优化不足)等原因导致。这些不在本文的讨论范围内,因为每一个展开都会是极多极难的问题,本文仅专注于讨论大攻防时由于人多导致的服务器卡顿问题,即如何做到一个玩家在进行大规模对战时游戏体验和JJC以及战场体验接近或者相同的问题。

阅读全文 »
1…456
Ty Chen

Ty Chen

51 日志
9 分类
82 标签
GitHub E-Mail
Friends
  • Stanleylsx
© 2020 — 2023 Ty Chen | Site words total count: 199.1k 粤ICP备20071543号
你是来访的第 位同学 访问次数: 次