linux操作系统基础
狗炜别叫我打游戏
这个作者很懒,什么都没留下…
展开
-
编写通用的 Makefile
编写通用的 Makefile原创 2019-11-02 17:05:36 · 317 阅读 · 1 评论 -
gcc参数详解
gcc参数详解原创 2019-11-02 09:58:28 · 357 阅读 · 0 评论 -
gdb 调试基础命令
gdb 调试基础命令原创 2019-11-02 09:57:46 · 246 阅读 · 0 评论 -
通过Eclipse+QEMU单步调试内核
一、安装Eclipse-CDT软件sudo apt install eclipse-cdt二、创建工程打开 Eclipse 菜单, 选择“Window”→“Open Perspective”→“C/C++”。新建一个 C/C++的 Makefile 工程,在“File”→“New”→“Project” 中选择“Makefile Project with Exiting Code”,创...原创 2019-10-09 16:44:42 · 907 阅读 · 0 评论 -
编写一个简单的内核模块
一、什么是内核模块我们都知道linux内核采用的是宏内核架构,即大部分功能都在内核中实现,比如进程管理、内存管理、进程调度、设备管理等,都在特权模式下运行。而与之相反的是微内核架构,它把操作系统最基本的功能放在内核中,而其他大部分的功能(设备驱动等)都放到用户空间实现,两者相比,微内核架构有优越的动态扩展性。linux内核在发展过程中引入了内核模块机制,这样在实际应用过程中就可以通过内核模...原创 2019-10-09 22:07:47 · 1495 阅读 · 0 评论 -
如何编写一个系统调用
一、系统调用的概念现代操作系统,处理器的运行模式通常分成两个空间:一个内核空间,一个用户空间。大部分的应用程序都是运行在用户空间的,而内核和设备驱动程序运行在内核空间。如果应用程序需要访问硬件资源或者需要内核提供服务时,就需要通过系统调用来实现。如图为系统架构:二、系统调用有什么作用1、为用户空间程序提供一层硬件抽象接口。应用程序在读写一个文件时,无需关心底层硬件信息。2、保...原创 2019-10-10 13:41:19 · 1356 阅读 · 0 评论 -
从硬件发展看内存管理 -----内存管理(一)
一、从硬件发展角度看内存管理I、远古时代的内存管理操作系统中大部分内存管理都是围绕硬件展开的,计算机硬件的变化影响着软件的实现。下面从单道批处理系统和多道批处理系统看内存管理的演变。单道编程的内存管理。所谓单道,就是整个系统只有一个用户进程和一个操作系统。这种模型下,用户程序总是加载到同一个内存地址上运行,所以内存管理很简单。实际上根本就不用内存管理单元,程序使用的地址就是物理地址。不...原创 2019-10-10 21:57:16 · 537 阅读 · 0 评论 -
从内存分布图看内存管理 -----内存管理(二)
一、从内存分布图看内存管理要了解一个系统的内存管理,首先要了解这个系统的内存是如何布局的。以32位CPU为例,它最多可以拥有32根地址线,因此它最大的寻址空间为4GB。那么在这个4GB的地址空间,内核空间和用户空间究竟是怎样划分的?ARM32处理器提供7种处理器模式:1、用户模式:用户程序运行的模式2、系统模式:特权模式3、一般中断模式(irq):普通中断模式4、快速中断模...原创 2019-10-11 10:15:18 · 1062 阅读 · 0 评论 -
虚拟内存管理
一、虚拟内存管理我们都知道,每个用户进程可以拥有4GB的可寻址的虚拟地址空间,也可以称为进程地址空间。在32位系统中,进程可以合法访问用户空间的虚拟地址。若要访问内核虚拟地址,就要通过系统调用才行。内核中是如何来管理这些进程地址空间的呢?根据内核风格,抽象出一个结构体来描述这个进程地址空间,这个结构体就是struct vm_area_struct,看名称可以知道,这就是一虚拟地址的结构体,...原创 2019-10-11 17:01:55 · 219 阅读 · 0 评论