linux内核
文章平均质量分 87
kayshi2018
这个作者很懒,什么都没留下…
展开
-
6.0 内核驱动-字符型驱动
相同:都要进行硬件实现层的设计(硬件裸机驱动)不同: 1:linux操作系统中加了众多接口,从系统API到硬件实现层调用过程中的系统框架2:同步,互斥,POLL,并发, 自旋锁,信号量 ,等待队列 standby,;linux机制同样要体现在内核驱动中3:驱动要服从linux内核管理:设备树,电源管理的全局构架4:不同CPU或不同linux版本的移植...原创 2022-02-12 21:22:52 · 603 阅读 · 0 评论 -
5.1 linux内存管理-分页管理和页异常处理
1:信息linux - 0.11memory.c2: 代码//显示内存已用完出错信息,并退出static inline volatile void oom(void){ printk("out of memory\n\r"); do_exit(SIGSEGV); //退出码SIGSEGV(11)相同值的出错码含义是:资源暂时不可用}//刷新页变换缓冲(一般位于cache中的TLB)宏函数//为了提高地址的转换效率,cpu将最近使用的页表数据存放在芯片中高速缓冲中。在修改过页表信息后,就原创 2022-02-09 21:53:35 · 1196 阅读 · 0 评论 -
5.0 linux内存管理-原理
1. 信息linux 0.112. 目的了解内存的管理机制了解虚拟内存和物理内存的映射方式了解操作系统内存和磁盘的交互(分页机制->缺页重读机制,用时拷贝机制)应用程序如何搞笑使用内存和高级程序的设计方式3. linux系统中内存映射图linux 0.11 默认支持16M虚拟盘:用来模拟磁盘4. 专有名词逻辑地址:程序员看到的地址,linux操作系统分配给每一个进程的独立地址(例如0.11中每个进程认为的自己的空间 64M的地址)线性地址:总线地址ARM CPU采用分段机原创 2022-01-30 18:29:52 · 1876 阅读 · 1 评论 -
4.6 linux文件系统-文件系统操作和管理
1:信息linux 0.11下面文件属于文件系统的高层操作和管理部分open.c :文件访问操作系统调用exex.c :程序加载和执行函数stat.c, :取得一个文件的状态信息fcntl.c :实现文件访问控制管理ioctl.c :控制设备的访问操作2 open.c本文中实现了许多与文件操作相关的系统调用。主要是文件的创建,打开和关闭,文件宿主和属性的修改,文件访问权限的修改,文件操作时间的修改和系统文件root的变动2.1 sys_open 打开或创建参数:filename -原创 2022-01-27 17:21:44 · 1727 阅读 · 0 评论 -
4.6 linux文件系统-虚拟文件系统VFS
1:信息版本:Linux-0.112:VFS和FS3:普通文件file_dev.c 主要操作数据:逻辑块号结构体struct file { unsigned short f_mode; //文件的类型和属性 unsigned short f_flags;//读写,执行 unsigned short f_count;//引用次数 struct m_inode * f_inode;//对应的inode节点 off_t f_pos;//本文件当前读写位置,lseek可以修改的};原创 2022-01-18 23:18:54 · 991 阅读 · 0 评论 -
4.5 linux文件系统-文件目录的操作
1:信息linux - 0.11linux/fs/namei.c2:目的:文件系统目录的建立,删除,打开,节点建立,删除文件系统的文件操作,打开,权限,属主等了解文件系统的命令操作 chmod chown mknodC语言中内存区域的检索和管理,高效代码的xiefa3: 相关函数3.1 权限检测函数permissionstruct m_inode { unsigned short i_mode; 16位数 文件类型 当前用户权限(3位) 用户组权限(3位) 其他用户权限(3位)原创 2022-01-09 23:10:44 · 901 阅读 · 0 评论 -
4.4 Linux文件系统-挂载卸载和超级块
1:基本信息代码:linux-0.11super.c : 含有处理超级快的代码超级块是设备的映射,超级块的操作关系到设备文件系统操作下面会解析:对超级块进行操作(创建,读取,释放) get_super, put_super, read_super文件系统加载/卸载: mount/umount sys_mount, sys_umount根文件系统的加载(/)mount_root2:相关宏和数组/* * linux/fs/super.c * * (C) 1991 Lin原创 2022-01-06 23:53:10 · 1967 阅读 · 0 评论 -
4.3 Linux文件系统-inode
1:2:inode文件与磁盘的映射结构原创 2022-01-06 18:09:33 · 1110 阅读 · 0 评论 -
4.2 linux文件系统-高速缓冲区
1:2:linux文件系统的几部分1:有关linux中高速缓冲区的管理部分。分页机制 buff.c2:文件系统的底层通用函数。(对于硬盘的读写,分配,释放,对于目录的节点管理,内存和磁盘的映射)3:对文件数据进行读写操作的模块(VFS 虚拟文件系统,硬件驱动和文件系统的关系, pipe,块设备的读取)4:文件系统与其他程序的接口实现(fopen 关闭,创建等文件的调用方式)文件系统的基本概念以磁盘为例,磁盘中有目录的映射,把磁盘分成盘片,每一个盘片 都有一个文件系统的子系统(章节目录)引原创 2021-12-31 11:02:48 · 1160 阅读 · 0 评论 -
4.1 内核文件系统-busybox
1:信息busybox版本:busybox-1.7.02:关于busyboxbusybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.我们平时用的那些linux命令就好比是分立式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里3:文件系统开始运行busybox上一章说明从内核如何到busybox, 通过调用linuxrc : 4.0 内核文原创 2021-12-28 13:20:02 · 744 阅读 · 0 评论 -
4.0 内核文件系统-kernel部分
1:信息内核版本: Linux 0.112:文件系统的出现位置板卡上电后先由UBOOT启动初始化办卡,将Linux移到内存中运行由linux内核自行做初始化操作,挂载了第一个应用程序(根文件系统 /linuxrc)根文件系统会提供磁盘管理服务,glic设备节点,配置文件,应用程序 shell命令(Android就是linux多了个文件系统)文件系统的重要部分:1:标准库:glibc OpenGl media framwork2:配置文件:/etc/init.d/rcS (开机运行的软件,原创 2021-12-28 13:19:27 · 733 阅读 · 0 评论 -
3.0 内核信号
1:信息代码 Linux 0.012: 内核中信号#define SIGHUP 1#define SIGINT 2#define SIGQUIT 3#define SIGILL 4#define SIGTRAP 5#define SIGABRT 6#define SIGIOT 6#define SIGUNUSED 7#define SIGFPE 8#define SIGKILL 9#define SIGUSR1 10#define SIGS原创 2021-12-24 23:24:31 · 503 阅读 · 0 评论 -
2.1 高版本内核初始化
1: 信息和文件代码版本:Linux-3.4.2文件:linux-3.4.2\arch\arm\kernel\head-common.Slinux-3.4.2/arc/arm/kernel/vimlinux.lds.S : 链接文件linux-3.4.2\arch\arm\include\asm\mach\arch.hlinux-3.4.2\arch\arm\mach-s3c24xx\mach-smdk2440.c2:板级信息传递目的:板级信息如何传递到linux内核中去2.1:段信息内容原创 2021-12-24 11:39:07 · 678 阅读 · 0 评论 -
2.0 Linux内核的引导与启动
1:Linux的引导主要文件位置 linux/boot/1.1从硬盘读出cpu上电后会进入boot模式,其中BIOS (x86 是0xFFFF0 存储的总线地址)把bootsect从固定的地址拿到内存中的某个固定地址(0x90000),并且进行了一些硬件初始化和参数设置bootsect.s 磁盘引导块程序,在磁盘第一个扇区中的程序作用:首先将后续的setup.s 代码加载到紧接着bootsect.s的地方在显示屏上显示loading system 再将system(操作系统)模块加载到0x100原创 2021-12-23 17:52:18 · 1156 阅读 · 0 评论 -
1.2 内核进程销毁
1:代码版本Linux-0.11exit.c2:销毁流程销毁函数也是系统调用die()-> do_exit()具体过程:首先会释放进程的代码段和数据段占用的内存进行释放关闭进程打开的文件,对当前的目录和i节点进行同步如果当前要销毁的进程有子进程,就让1号进程作为子进程的父进程 (init进程)如果当前进程是一个会话头进程,则会终止会话中的所有进程改变当前进程的运行状态,变成TASK_ZOMBIE僵死状态,并向父进程发送信号SIGCHLD父进程再运行子进程的时候会运行wait原创 2021-12-22 14:43:02 · 497 阅读 · 0 评论 -
1.1-内核的进程调度和进程切换
1:代码环境linux 0.112: 进程调度辅助函数show_task()void show_task(int nr,struct task_struct * p)//nr为pid,代表第几个进程{ int i,j = 4096-sizeof(struct task_struct); //找到栈堆的大小 printk("%d: pid=%d, state=%d, ",nr,p->pid,p->state);//打印pid 和状态 i=0; while (i<j &a原创 2021-12-21 17:06:57 · 455 阅读 · 0 评论 -
1.0-内核进程初始化与创建
1:相关信息代码:linux 0.112: 进程结构体每个进程在内核中都对应着一个结构体struct task_struct,用来表示进程的状态和相关信息struct task_struct {/* these are hardcoded - don't touch */ long state; /*进程的状态 -1 unrunnable(为运行), 0 runnable(运行), >0 stopped(停止) */ long counter; //进程的时间片计数,当为0时就要进行调度原创 2021-12-21 15:40:00 · 673 阅读 · 0 评论 -
扩展内联汇编 __asm__
1:汇编的结构__asm__ __volatile__(assembly template \\汇编指令行 : output operand list \\输出操作数列表 : input operand list \\输入操作数列表 : clobber list \\破坏列表内联汇编在逻辑上总是由四部分组成:关键字 asm() 或 asm()。修饰符 volatile 或 volatile:关键字 asm 或 asm 用于说明随后的字符串是内原创 2021-12-23 18:38:25 · 1356 阅读 · 1 评论 -
关于inline和_syscall0和汇编函数带下划线
1:描述查看内核代码时,会有下面的声明static inline _syscall0(int,fork)2: inlineinline是一个内联函数,可以让gcc把函数代码集成到调用它的代码中。这会提高代码执行的速度3:_syscall0_syscall0在unistd.h中的内嵌宏代码,它以汇编的形式调用Linux的系统调用的中断 int 80,并在eax寄存器指定系统调用的功能号#ifdef __LIBRARY__#define __NR_setup 0 /* used only by原创 2021-12-23 17:47:39 · 1411 阅读 · 0 评论