操作系统
文章平均质量分 84
沈万三djh
这个作者很懒,什么都没留下…
展开
-
操作系统学习-4.Linux进程调度学习3-调度整体过程
调度整体过程周期性调度过程我们从 在timer.c中开始分析 void update_process_times(int user_tick){ struct task_struct *p = current; /* Note: this timer irq context must be accounted for as well. */ account_process_tick(p, user_tick); run_local_ti原创 2021-10-21 15:05:00 · 145 阅读 · 0 评论 -
操作系统学习-4.Linux进程调度学习2-调度器源码分析
调度器源码分析入口核心函数分析主要函数__schedule分析pick_next_task 函数分析以cfs为例看看如何选取task代码分析根据3.10版本通过对前面的学习我们知道Linux的调度分为两种周期调度 完成周期性算法参数的更新和系统其它实际的检查主调的 真正的调度过程我们现在来看下主调的的代码框架。入口根《调度发生的情况》的学习,我们知道所有的调度最后都会到 schedule 函数中。因此我们就先从schedule函数入手。 asmlinkage void __sch原创 2021-10-21 14:56:08 · 230 阅读 · 0 评论 -
操作系统学习-4.Linux进程调度学习1-进程调度原理
进程调度原理简单分析多个调度算法加入组调度简单分析假设我的系统只有一种调度算法cfs那么有个调度的队列 cfs_rq所有running的进程都会 进入这个队列,不在running 或者其他情况会出队列,ok。则假设队列控制的算法有以下。cfs_rq_enqueuecfs_rq_dequeuecfs_rq_pick所操作的是进程描述符 task_struck.那么很简单可以理解上述过程scehed_pick ---->cfs_rq_pick就行了。多个调度算法那么如果除了cfs原创 2021-10-21 14:47:31 · 169 阅读 · 0 评论 -
操作系统学习-3.Linux文件系统学习4-IO调度算法
IO调度算法电梯算法简介基础原理基础函数梳理数据结构电梯初始化过程电梯算法noop电梯算法deadline初始化算法详解电梯算法简介电梯调度算法主要适用于LINUX I/O磁盘请求调度。磁盘结构如下图所示,磁盘主要由盘面和磁头组成。磁盘每次进读写请求时,需要给磁盘驱动器一个地址,磁盘驱动器根据给定地址计算出相应的扇区,然后将磁头移动到需要访问的扇区,开始进行读写。读写磁盘时,转动磁头实际上很耗费时间,如果不采用调度策略,磁头直接根据请求进行直接访问,则必定会造成时间的浪费。比如以下这种访问方式,原创 2021-10-21 14:32:39 · 304 阅读 · 0 评论 -
操作系统学习-3.Linux文件系统学习3-io的plug过程
io的plug过程io的plug过程:启动篇io的plug过程:request请求io的plug过程:blk_init_queue1、这个request_count 个数的统计2、blk_flush_plug_list进行泄洪我们还要继续看io的plug过程:blk_flush_plug_list的情况io的plug过程:queuelist的问题io的plug过程:启动篇include/linux/blkdev.hstruct blk_plug { struct list_head list; /原创 2021-10-21 12:04:09 · 468 阅读 · 0 评论 -
操作系统学习-3.Linux文件系统学习2-IO过程分析
IO过程分析io调度框架整体流程细节展开io的提交过程从pagecache到bio到requstsubmit_bioio调度框架整体流程细节展开io的提交过程从pagecache到bio到requst我们从read流程和write流程中都知道,最后都会到readpages或者writepages中来我们就从readpage开始分析,write的基本上和《Linux-块设备驱动之框架详细分析(详解)》讲的差不多,也就是会到ll_rw_block函数中,至于怎么到这个函数中,就不求甚解了。原创 2021-10-21 11:44:44 · 436 阅读 · 0 评论 -
操作系统学习-3.Linux文件系统学习1-初始化和read、write过程分析
初始化和read、write过程分析整体框架图vfs系统类关系图vfs层次关系通初始化过程文件read流程分析文件read和BIO调度分析文件write过程分析整体框架图vfs系统类关系图vfs层次关系通初始化过程在内核启动的主函数中start_kernel(){ vfs_caches_init_early(); vfs_caches_init(); rest_init();}rest_init() { kernel_init();}kernel_init() {原创 2021-10-21 11:32:32 · 563 阅读 · 0 评论 -
操作系统学习-2.操作系统的内存初始化和使用
2.操作系统的内存初始化和使用一.物理内存探测1.1.探测物理内存分布和大小的方法1.2.物理内存探测的实现二、内存划分2.1.使用页单位划分物理内存2.2.使能页机制2.3.寻址过程--关于段页和缺页异常当一个操作系统被启动后它还有多少内存可用,以及应用程序的地址如何去使用这部分内存就是目前要解决的问题。比如说,一个应用程序它没有被限定的时候在编译器里面他是可以寻址到4G的而实际上我们不可能给他这么多的内存。这里就需要一个关系映射。一.物理内存探测首先我们要对目前真实的物理内存进行探测。一般来原创 2021-10-18 15:17:53 · 782 阅读 · 0 评论 -
操作系统学习-1.操作系统的启动
操作系统的启动1、从BIOS到系统kernel1.1.开机取得BIOS1.2.BIOS干什么1.3. bootloader的512个字节做什么1.4.代码表现1、从BIOS到系统kernel1.1.开机取得BIOSBIOS 是存在一段掉电不丢失的rom中,或者说是内存中。计算机约定,上电后再所有硬件稳定后,到某个地方去取得BIOS的程序进行执行。(这里有点模糊,按照我学硬件想法BIOS应该是存在EEPROM(特点的掉电不丢失rom)中而不是内存中,因为内存关闭了就是会消失的,但是说成掉电不丢失内存也原创 2021-10-18 14:53:48 · 105 阅读 · 0 评论