![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 73
西邮小菜机
这个作者很懒,什么都没留下…
展开
-
linux进程的内存与ELF文件
提到进程的内存就是虚拟内存。1G的内核区域、3G的用户区域,提到进程的内存就是下面这个图,都可以用它进行分析。虚拟内存是为了实现多任务,所以操作系统才引入了它。new是一个关键字,他运行时先创建一个类,底层再调用malloc函数申请相应大小的内存,而malloc是一个函数,申请内存时需要我们告诉其需要内存的大小,malloc底层调用的是brk系统调用。malloc其实是系统给分配的一个虚拟内存。申请内存不释放内存会导致内存泄漏,解决内存泄漏可以先判断内存泄漏是什么引起了,是内存池还是非内存池导致的,后面可以原创 2022-05-08 18:51:51 · 1236 阅读 · 1 评论 -
linux内存机制原理---分页、分段底层原理
自我总结:分段+分页+虚拟内存=现代操作系统的内存管理机制。一、linux的内存分布内核与高速缓冲区占用了前1MB内存,后面15MB属于主存,可以由用户自由分配。四种地址:虚拟地址、线性地址、逻辑地址、物理地址。虚拟地址:虚拟地址中具体地址是逻辑地址,每个进程分配的空间。逻辑地址:程序员可以看到的地址,linux操作系统分配给每个进程的独立地址,每个进程认为自己的空间都有连续的64MB。线性地址:总线地址CPU采用分段的机制(线性地址=逻辑地址+段基地址)。物理地址:CPU总线的原创 2022-05-06 13:11:09 · 816 阅读 · 1 评论 -
linux多线程——互斥量实现同步
静态初始化互斥量,也可以调用函数动态初始化。使用到的函数有pthread_mutex_lock,给资源上锁,和mutex_unlock,给资源解锁,可以实现同步访问,避免竞争。#include<stdio.h>#include<unistd.h>#include<stdlib.h>#include<pthread.h>pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;void *func(voi.原创 2022-03-26 23:50:36 · 778 阅读 · 0 评论 -
linux系统调用过程
在用户程序调用read、write等系统调用时,linux内核发生了哪些动作呢。下面以write为例:调用write系统调用,进入C库执行write函数,就是产生了一个int 0X80的一个中断,这样程序就会进入内核态,中断会根据_NR_name来判断执行那个内核函数,他其实就是int 0X80的一个参数。处理好现场后进入系统调用表:所以wirte函数,具体的功能就是,触发int80中断,进行系统调用,调用号是__NR_write(#define __NR_write 4),最终会调用数组sys_c原创 2022-03-25 14:06:58 · 3642 阅读 · 0 评论 -
bootz启动linux内核——uboot生命的终点——学习笔记
在uboot命令行中敲入bootz命令后,开始启动内核。原创 2022-03-24 16:59:36 · 1445 阅读 · 0 评论 -
UBOOT启动流程——向量表重定位、命令处理——学习笔记
一、向量表重定位relocate_vectors将重定位后uboot的首地址放入r0寄存器中,因为向量表肯定就是从这个地方开始存放的,再将r0中记录的地址写入到CP15的VBAR寄存器中,就是将新的向量表首地址写入到寄存器VBAR中,设置向量表偏移。二、board_init_rboard_init_f并没有初始化所有的外设,需要board_init_r函数完成后续操作。主要就是初始化一些外设和gd的成员变量。调用init_sequence_r函数集合完成一系列的初始化,(这里做什么初始化看手原创 2022-03-24 12:15:20 · 783 阅读 · 0 评论 -
正点原子UBOOT启动流程——学习笔记
一、UBOOT入口uboot的入口在u-boot.lds文件里面决定了,ENTRY(_start),所以uboot的入口就是__start,后面紧接着就是中断向量表的地址。到__image_copy_start 为 0X87800000,而.text 的起始地址也是 0X87800000,vectors 段的起始 地址也是 0X87800000,说明整个 uboot 的起始地址就是 0X87800000。__start执行时跳转到reset,reset函数跳转到了 save_boot_par原创 2022-03-23 18:09:27 · 1733 阅读 · 0 评论 -
文件系统inode分析——inode.c bitmap.c super.c
一、bitmap.c1.1free_blockget_super 通过设备号找出超级块,获得里面的信息判断块号是不是在范围内然后读取块信息,就把高速缓冲区拿出来没用就释放掉逻辑块对应高速缓冲区计算当前块号,然后区清空逻辑块位图上面对应的bit逻辑块位图对应的块设为11.2new_blocknew_block 新建一个块的函数获得了一个超级块for循环的8指的是我们的逻辑块位图找到第一个为0的位的位数然后修改数据 修改标志啥的然后得到block块号然后我们需要给这个块申请高原创 2022-03-21 17:49:17 · 647 阅读 · 0 评论 -
linux下扇区、块、页的区别+inode与高速缓冲区在linux文件系统的作用
学习linux文件系统时整理的一些笔记。原创 2022-03-19 22:18:24 · 3223 阅读 · 0 评论 -
linux下make的使用,写一个自己的Makefile
教会最简单的makefile编写,一步一步的简化,从而实现一劳永逸。原创 2022-03-18 22:52:51 · 1795 阅读 · 0 评论 -
文件系统基本概念——高速缓冲 buffer.c学习笔记
文件系统中的高速缓冲区操作。原创 2022-03-17 20:17:54 · 1069 阅读 · 0 评论 -
linux文件系统工作流程解析——busybox学习笔记
uboot引导内核启动时给内核传递参数是通过tagglist,那么内核向文件系统是如何传递参数呢,是利用inittab,文件系统的运行流程如下:对应的代码如下,省略了很大一部分代码,主要是为了与上图对应: signal(SIGHUP, exec_signal); signal(SIGQUIT, exec_signal); signal(SIGUSR1, shutdown_signal); signal(SIGUSR2, shutdown_signal); signal(SIGI.原创 2022-03-16 16:14:03 · 1416 阅读 · 0 评论 -
linux内核与文件系统的衔接关系
linux内核执行到busybox文件系统的过程.原创 2022-03-16 00:10:34 · 1783 阅读 · 0 评论 -
linux0.11与linux2.6.0两个版本内核启动流程——学习笔记
各个版本的linux内核启动流程。原创 2022-03-15 20:06:17 · 669 阅读 · 1 评论 -
内核线程与用户线程区别、同步互斥的实现原理——详解
内核线程与用户线程区别、同步互斥的实现原理原创 2022-03-14 22:41:01 · 1164 阅读 · 0 评论 -
linux文件系统概述
文件系统也叫应用程序,写应用程序的时候不仅要存在文件系统中,并且还要使用文件系统的其他很多功能。大多数的嵌入式公司就是在做文件系统,如:系统界面、系统的开机画面、系统的ROM、系统的功能、预装的软件等。一、文件系统包括的重要部分:1、 标准库:glibc OpenGL media Framework2、配置文件:/etc/init.d/rcs 想要开机运行什么软件 载入什么画面 执行命令都可以写入rcs中。sys/ 开机时需要挂载的设备节点3、设备节点:/dev/console 控制台节原创 2022-03-13 20:44:38 · 2134 阅读 · 0 评论 -
linux内核——内核信号量
内核的信号机制底层原理原创 2022-03-13 11:17:43 · 580 阅读 · 0 评论 -
操作系统的内存管理——页式、段式管理、段页式管理
存储管理的基础知识。原创 2022-03-12 10:33:57 · 10403 阅读 · 1 评论 -
linux内核中销毁进程
linux内核精讲-销毁进程原创 2022-03-09 18:48:36 · 556 阅读 · 0 评论 -
linux操作系统进程调度与进程切换
linux中进程的调度与进程切换的相关知识。原创 2022-03-09 15:40:29 · 717 阅读 · 0 评论 -
linux内核进程的创建与初始化
了解底层内核如何创建一个进程,如何初始化进程。原创 2022-03-03 18:07:03 · 1240 阅读 · 0 评论 -
linux系统的进程运转方式
一、系统时间:(jiffies 系统滴答)CPU内部有一个RTC,会在上电的时候调用mktime函数计算出1970年1.1日0时开始到当前开机点所过的秒数,给mktime函数传来的时间结构体的赋值是由初始化时从RTC中读出的参数,转化为时间存入全局变量中,并且会为jiffies所用。jiffies是一个系统的时钟滴答,一个系统滴答是10ms。每10ms发生一个定时器的中断,中断首先会将jiffies自加一,之后获取任务的特权级,将其作为参数调用do_timer函数。### int32 -原创 2022-03-02 21:30:30 · 569 阅读 · 0 评论 -
linux内核中断体系结构
linux内核asm.s文件中硬件中断处理过程原创 2022-03-01 15:06:28 · 794 阅读 · 0 评论 -
linux操作系统体系结构与功能流程
linux操作系统的结构与各模块之间的关系原创 2022-03-01 12:56:29 · 1013 阅读 · 0 评论