note
Rebecca_Chou
这个作者很懒,什么都没留下…
展开
-
系统调用
为什么要有系统调用?我认为有以下原因:用户空间想要访问硬件用户空间之间访问硬件是不安全的因此,系统调用就作为用户空间进程和硬件设备的中间层出现,它使得用户进程可以受限制的访问硬件设备。这样既保证了安全,又可以使用了。API POSIX和C库用户进程不是直接调用的系统调用,而已调用的应用编程接口(API)。unix世界中,流行的API是基于 POSIX 标准的。C库实现了unix...原创 2020-01-05 15:07:22 · 171 阅读 · 0 评论 -
进程调度
进程调度是一个内核子系统,负责决定将哪个进程投入运行,何时运行以及运行多长的时间。它是多任务操作系统的基础。 调度相关概念多任务操作系统I/O消耗性与处理器消耗性优先级处理器时间使用比Linux调度算法调度相关概念多任务操作系统在单处理器机器上,会产生多个进程同时在运行的幻觉在多处理器机器上,会使多个进程在不同的处理器上真正同时,并行的执行。I/O消耗性与处理器消耗性进程...原创 2020-01-04 17:16:36 · 417 阅读 · 0 评论 -
进程管理
一切为了进程进程是处于执行期的程序以及相关的资源的总称 进程的虚拟机制进程生命周期相关的函数进程描述符进程的虚拟机制虚拟处理器进程觉得自己在独享处理器虚拟内存进程觉得自己在独享内存线程之间可以共享虚拟内存,但每个都拥有各自的虚拟处理器进程生命周期相关的函数fork() 他爹生他出来复制一个现有的进程来创建一个全新的进程exec() 他自己成家立业为fork()的新进程...原创 2020-01-02 16:12:00 · 221 阅读 · 0 评论 -
读书笔记(一):内核基本常识
处理器的活动单内核与微内核内核开发的特点处理器的活动每个处理器在任何指定时间点上的活动必然为下列三者之一运行于用户空间,执行用户进程运行于内核空间,处于进程上下文,代表某个特定的进程执行运行于内核空间,处于中断上下文,于任何进程无关,处理某个特点的中断单内核与微内核linux是单内核,但它也汲取了微内核的精华。支持动态加载内核模块支持对称多处理(SMP)机制对称多处...原创 2020-01-01 23:00:28 · 132 阅读 · 0 评论 -
虚拟内存管理(二)——mmap实验
1. 实验目的2. 实验要求3. 实验过程3.1 过程分析3.1.1 分解实验要求3.1.2 实验步骤1. 实验目的了解mmap系统调用的使用方法与原理2. 实验要求编写一个简单的字符设备驱动程序,分配一段物理内存,然后使用mmap方法把这段物理内存映射到进程地址空间中。用户进程打开这个驱动程序之后就可以读写这段物理内存了3. 实验过程3.1 过程分析3.1.1 分解实验要求(1...原创 2019-12-22 18:08:01 · 808 阅读 · 0 评论 -
字符设备驱动
一个字符设备驱动的建立1. 总体流程1.1 定义1.2 初始化1.3 添加到系统中1.4 从系统中删除2. 杂项设备3. 虚拟设备4. KFIFO5. 阻塞与非阻塞IO6. IO多路复用对于linux内核来说,每定义一种概念,就会有对应的一个数据结构来描述(或者说是管理)它。然后相同种类的数据结构一般会被串成链表之类的存在在系统中(个人理解)一个字符设备驱动的建立1. 总体流程描述一个字...原创 2019-12-14 01:03:30 · 143 阅读 · 0 评论 -
虚拟内存管理(一)
文章目录进程地址空间内存区域内存区域规划内存区域管理结构体遍历一个进程中所有的VMA用户态对进程地址空间的操作mallocmmap理解task_struct, mm_struct, 和vm_area_struct之间的关系。即是理解进程,进程地址空间和VMA之间的关系进程地址空间进程地址空间是指进程可以寻址的虚拟地址空间。32位的处理器中,进程可以虽然寻址4G虚拟地址空间,但是内存空间用...原创 2019-12-13 00:46:37 · 123 阅读 · 0 评论 -
物理内存管理
1. pfn与mem_map[]2. zone站在处理器的角度来看,管理内存的最小单位是页。在linux内核中,一个页的大小是4KB,管理一个页的数据结构为struct page,每个页面都有自己的编号pfn。struct page的地址存储在mem_map[]数组中。1. pfn与mem_map[]对于一个计算机系统,其整个物理地址空间应该是从0开始,到实际系统能支持的最大物理空间为止...原创 2019-12-11 23:00:33 · 211 阅读 · 0 评论 -
内核链表
内核链表#include <stdio.h>#include <stdlib.h>#include "list.h"struct node{ int index; struct list_head list;};int main(){ struct node testnode; struct node *pnode; struct list_he...原创 2019-12-06 00:50:05 · 130 阅读 · 0 评论 -
GCC编译
GCC编译GCC编译流程预处理(Pre-Process)编译(Compile)汇编(Assemble)链接(Link)附: Makefile文件GCC编译流程GCC(GNU Compiler Collection)编译流程主要分为四个步骤:test.itest.stest.otest.cPre-ProcessCompileAssembleLinktest这里一一个测试程序lab2_1为例...原创 2019-12-04 23:51:41 · 395 阅读 · 0 评论 -
VFS的核心概念:file、dentry、inode、super_block
每个进程在PCB(Process Control Block)中都保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针,已打开的文件在内核中用file结构体表示,文件描述符表中的指针指向file结构体。在file结构体中维护File Status Flag(file结构体的成员f_flags)和当前读写位置(file结构体的成员f_pos)。在上图中,进...转载 2018-09-15 12:25:47 · 926 阅读 · 0 评论 -
文章标题
BGP是自治 系统 间的路由协议,BGP交换的网络可达性信息提供了足够的信息来检测路由回路并根据性能优先和策略约束对路由进行决策。主叫号码信息识别及传送(CID,Calling Identity Delivery),是指交换机将主叫用户的主叫号码及呼叫的日期、时间等信息传送给被叫用户,由被叫号用户的主叫号码显示器将信息显示出来并存储。 国标规定交换机中具备CID功能的用户电路的配置比例暂定为 10转载 2017-07-22 23:04:56 · 254 阅读 · 0 评论 -
嵌入式笔试题(3)
嵌入式转载 2017-06-05 21:03:04 · 1185 阅读 · 0 评论 -
嵌入式笔试题(2)
1. 关键字 static的作用是什么? 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1) 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问, 但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内转载 2017-05-25 11:12:20 · 417 阅读 · 0 评论 -
嵌入式笔试题(1)
1. 什么是嵌入式系统? 带有微处理器的专用软硬件系统都可称为嵌入式系统。2. 嵌入式中为什么要用Linux? (1) 功能齐全,对于很多硬件设备都有丰富的驱动程序,只需要移植一下,不需要改动太多; (2) 稳定,这个用过Linux做服务器的人都知道,windows越来越慢,产生的垃圾会很多; (3) 对于大多数芯片,都有裁剪的配置文件; (4) Linux分而治之的思想,可以使转载 2017-05-25 11:05:48 · 439 阅读 · 0 评论 -
linux设备驱动模型 学习
设备驱动分类 证明linux “一切皆文件”思想: /dev 目录:存放设备所对应的文件 目录下的每一个文件对应一个设备 linux是一个树型结果,没有分区概念 比如:sda1 就对应在跟目录下 linux设备驱动模型 总线 设备(与平台相关,平台信息,移植是改这个部分) 驱动(是跨平台的,不需要任何改动的)每一个设备在注册的时候会寻找匹配的驱动 每一个驱动在原创 2016-12-27 22:56:06 · 384 阅读 · 0 评论