自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 第十二章-系统调用

(1)在 syscall.h 中的结构 enum SYSCALL_NR 里添加新的子功能号。(2)在 syscall.c 中增加系统调用的用户接口。(3)在 syscall_init.c 中定义子功能处理函数并在 syscall_table 中注册。1.printf的原理是系统调用,那么必定涉及到中断嵌套,需要保护现场,影响中断响应速度2.printf系统调用的具体原理讲讲。vsprintf和write。

2023-10-11 19:22:15 157

原创 第十一章-用户进程

已经不使用LDT加载任务了。因为当前运行的任务,其 LDT 位于 LDTR 指向的地址,这样 CPU 才能从中拿到任务运行所需要的资源(指令和数据)。因此,每切换一个任务时,需要用 lldt 指令重新加载新任务的 LDT 到 LDTR。虽然介绍了 LDT,但咱们并不打算使用它,因为每加入一个任务都需要在 GDT 中添加新的 LDT 描述符,还要重新加载 LDTR,比较麻烦。

2023-10-11 19:20:30 196

原创 第十章-输入输出系统

一个键的状态要么是按下,要么是弹起,因此一个键便有两个编码,按键被按下时的编码叫通码,也就是表示按键上的触点接通了内部电路,使硬件产生了一个码,故通码也称为 makecode。根据键盘的更新迭代,出现了3种常用的键盘扫描码,为了兼容第一套键盘扫描码对应的中断处理程序,不管键盘用的是何种键盘扫描码,当键盘将扫描码发送到 8042 后,都由 8042 转换成第一套扫描码。线程自主阻塞之后,保存当前的寄存器,栈信息,当唤醒后,并不会从头开始执行,而是从线程阻塞的部分开始重新执行,并且时间片依旧是阻塞前的数值。

2023-10-11 14:03:19 225

原创 第九章-线程

* 进程控制块 */// 线程的内核栈// 线程状态// 线程优先级// 此任务自上 cpu 运行后至今占用了多少 cpu 嘀嗒数,也就是此任务执行了多久// general_tag 的作用是用于线程在一般的队列中的结点// all_list_tag 的作用是用于线程队列 thread_all_ list 中的结点// 进程自己页表的虚拟地址// 线程栈的边界标记,用于标记栈是否溢出内核栈。存储线程执行的函数、传参、寄存器、内存地址等信息任务的时间片。

2023-10-11 14:01:02 184

原创 第八章-内存管理系统

程序之间彼此独立保护内核系统编译器在编译阶段可以直接按照用户需要编译。

2023-10-11 13:56:56 73

原创 第七章-中断

由于外部设备的中断都是可屏蔽中断,所以最终还是要受标志寄存器 eflags 中的 IF位的管束,若 IF 为 0,可屏蔽中断全部被屏蔽,也就是说,在IF为 0 的情况下,即使 8259A 把外部设备的中断向量号发过来, CPU 也置之不理。因此中断描述符表的中断向量号是8259A分配的。(3)8259A接收到INTA信号后,立即将刚才选出来的优先级最大的中断在 ISR 寄存器中对应的 BIT 置1,此寄存器表示当前正在处理的中断,同时要将该中断从“待处理中断队列”寄存器 IRR 中去掉。

2023-10-11 13:54:47 647

原创 第六章-完善内核

内联汇编:在C语言中嵌入汇编代码。针对不同平台,使用不同的汇编代码规范,譬如windows下使用Intel语法,而在Linux下,使用AT&T语法。Intel语法更符合高级语言编写风格,如mov eax, ebx表示eax=ebx;而AT&T语法更符合处理器处理方式,mov eax, ebx表示ebx=eax。AT&T寻址方式segreg (段基址): base address(offset_address,index,size)等价于。

2023-10-11 13:41:25 46

原创 第五章-保护模式进阶

(1 )准备好页目录表及页表。(2 )将页表地址写入控制寄存器 cr3。【cr0用来开启保护模式】(3 )寄存器 cr0 的 PG 位置 1。【是否启用分页模式】分页会产生内部碎片,分段会产生外部碎片step1:配置CR3寄存器要求页目录的起始地址是 4KB的整数倍 ,设置CR3寄存器的[31:12]位为物理地址的高20位,CR3的[11:0]中除了PCD和PWT两个和高速缓存相关的设置之外,其余位都没用,此处置0即可,那么仅需把页目录表物理地址的高 20 位写入 cr3 寄存器即可。

2023-10-11 13:39:22 133

原创 第四章-保护模式

操作系统真象还原第4章-保护模式

2023-10-11 10:15:20 103

原创 第三章-完善MBR

操作系统真象还原第3章

2023-10-11 10:13:37 111

转载 stm32揭秘

stm32上电前的准备

2023-09-24 21:43:28 34

原创 Java实现二叉树遍历

Java实现二叉树遍历二叉树的先序遍历二叉树的中序遍历二叉树的后序遍历新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入定义Node节点的数据格式public class Node { public String

2021-09-28 20:04:01 175

原创 基于STM32的IIC引脚原理及代码编写

IIC总线上的设备均只通过SDA数据线和SCL时钟线进行数据的传输,一条总线上只有一个主设备,但是可以有多个从设备。主设备发送数据,所有从设备都可以收得到。所以如果想要跟某一个设备通信,需要将从设备的地址发送到地址线上,从设备读地址后确认是否是和自己通信。IIC总线的空闲态是SDA、SCL均为高电平时,通过Rp上拉电阻实现。同时可以看到,连接到IIC总线上的任一设备输出低电平,都会使总线变为低电平,SDA和SCL上连接的设备就是所谓的线“与”关系。IIC总线有其判断数据有效的方式,当读取数据时,只有S

2021-04-27 16:34:06 2599

转载 ubuntu16.04下基于NS-2安装leach协议

ubuntu16.04下基于NS-2安装leach协议环境平台:ubuntu16.04+NS-2+leach源码+beyond compare先安装beyond compare软件,后面用得到,安装步骤:wget http://www.scootersoftware.com/bcompare-4.2.10.23938_amd64.debsudo apt-get updatesudo apt-get install gdebi-coresudo gdebi bcompare-4.2.10.2393

2020-07-04 02:01:44 3154 2

原创 ns-2下leach协议安装并运行第一个实例

NS-2.35安装及配置教程NS-2安装教程[kali下E: http://http.kali.org/kali/dists/kali-rolling/InRelease 的 Release 文件已经过期(已经过期了 7小时 8分 59秒)。该仓库的更新将不会应用。]的解决方案

2020-07-04 01:08:56 638

原创 Linux下root登录ls、vim命令无法使用,无法找到命令

昨天刚下好Anaconda3,下完后,想着很多下载命令在普通用户下还要sudo,于是打算转到root下直接apt,但是竟然告诉我vim,ls都不可用,好气哦!!!主要原因在于当前的path路径被篡改!我在安装Anaconda3时,需要修改bashrc添加路径,也是因此导致ubuntu路径出了问题如何锁定为path路径问题在出问题的账户下使用命令echo $PATH输出当前账户的path路径,若能正常调用vim,ls等命令,则path中至少要包含/usr/local/sbin:/usr/l

2020-06-26 13:35:10 3834 1

原创 嵌入式开发基础掌握

最近听了清华大学物理系曾鸣老师的嵌入式课程,就课程中的知识进行总结。微控制器软件开发过程中的各种文件(1)C编译器:生成C语言对应的汇编代码(2)汇编编译器:将汇编文件变为0/1代码(3)目标文件:此时仍是逻辑的,并未与逻辑一一对应(4)链接配置文件:规定内存、flash、RAM的具体分配,譬如那个地址段放变量,那个地址段放堆栈(5)映射文件:指出每个变量、堆栈的具体空间,譬如每...

2019-11-17 20:35:34 265

原创 CPU与外设传输方式

随着进步,CPU与外设之间产生了4种访问方式。1.轮询方式。每隔一段时间CPU就会在一定的周期时间内按照一定次序向外设轮流发送询问,问下他们要不要使用计算机资源,如果需要,则进行相应的输入/输出服务;反之或者已经完成外设的I/O任务,CPU就接着查询下一个外设。很明显,这种传输方式不利于提高CPU的效率,在询问外设上浪费很多的时间。于是,人们就想要提高。2.中断查询。CPU只有在外设准备...

2019-11-17 17:46:22 4285

原创 CC3200之GPIO引脚分析

预备知识:(1)CC3200的延时函数如下void __attribute__((naked))UtilsDelay(unsigned long ulCount){ __asm(" subs r0, #1\n" " bne UtilsDelay\n" " bx lr");...

2019-11-17 17:44:49 1292

转载 zookeeper伪集群搭建过程以及问题总结之FAILED TO START,Error contacting service. It is probably not running

接下来时配置配置文件在zoo.cfg中配置了3台机器,但是只启动了1台,zookeeper就会认为服务处于不可用状态。因此重新启动所有的节点原因:myid文件只需要写入1/2/3即可...

2019-11-03 20:01:09 968

原创 计算机命令

1.win下查看端口:netstat -ano,列出所有端口的情况2.win下查看端口占用 :tasklist | findstr “2720”,回车,查看是哪个进程或者程序占用了2720端口3.win下查看被占用端口对应的PID:netstat -aon | findstr “49157”4.win下结束该进程:taskkill /f /t /im Tencentdl.exe...

2019-11-03 17:30:49 136

原创 单链表的初始化,遍历

今天实现单链表的初始化,遍历时,都遇到了一些问题,觉得比较有意义,所以,提笔记录下吧~~链表定义typedef int ElemType; typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList;初始化void InitList(LinkList* L){ //分配头结点/...

2019-11-03 17:29:44 442

原创 按键消抖

原因:由于按键是由金属片组成,当按下松开后,会发生抖动,效果等同于在很小的时间内按下好多次,由于人的反应时间较计算机的计算能力差距很大,因此,计算机经过处理后产生的效果是人眼看不到的,为了能够看到清晰的效果,因此,需要设置按键消抖。解决方法:保证每个引脚的信号输入的脉冲周期大于输入引脚的读取周期。当小于脉冲周期时,发送的信号会出现部分丢失。当大于脉冲周期时,发送的信号始终都会被接收,代码实...

2019-10-24 09:21:31 378

转载 docker使用报错

今天在搭建zookeeper容器的时候需要启动容器,但是,却总是报错ERROR: Couldn't connect to Docker daemon athttp+docker://localunixsocket - is it running?If it's at a non-standard location, specify the URL with theDOCKER_HOST ...

2019-10-17 19:44:37 350

转载 docker学习之docker安装

docker介绍docker安装传送门报错:在docker安装过程中可能会出现错误docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded ...

2019-10-16 21:22:26 342

原创 CC3200之ADC引脚使用+ad转换器的基本原理

ADC转换可实现将模拟信号转为数字信号,通常用于读取传感器的模拟信号(AO)。CC3200最多支持4个ADC外设引脚,每个引脚对应一个通道。ADC引脚的使用:step1:pinmux中开启ADC外设时钟MAP_PinTypeADC(PIN_60,PIN_MODE_255);step2:开启ADC通道unsigned int uiChannel = ADC_CH_3;step3:...

2019-09-29 08:35:23 1182

原创 docker问题之相同id镜像删除以及正在运行容器的镜像删除

docker问题之镜像删除今天在Ubuntu下搭建apache时,始终无法进入自己写的页面,浏览器输入127.0.0.1依旧是apache官网页面,心想是不是dockerfile出了问题,一查看,果不其然。。。竟然在参数配置时,指向了错误的文件位置,虽然在build的时候没有出现问题,但是在运行时却很让人头疼啊。于是,秉着简约原则,还是删除重新建镜像吧,由于之前创建了第一个镜像后,发现名字不对...

2019-09-26 11:08:07 2339

转载 进程调度算法-生产者消费者问题

@进程调度算法之生产者消费者问题生产者消费者问题问题介绍生产者生产产品,消费者消费产品,两者的资源存储在同一个资源池。因此,问题来了,生产者生产商品需要在资源池的存储范围内;然而消费者消费的资源需要在资源池不为空的前提下。由于两者均会对资源池造成修改,为了保证统一性,因此,两者需要互斥访问,同时,生产者生产产品需要对生产数量资源进行更改,因此生产者也需要互斥访问。ProCon.c 代码实...

2019-06-14 23:13:33 2867

原创 让人不头疼的&,&&,|,||

C语言基础应用&与&&区别&(按位与):A&B,将A,B分别转变为二进制进行按位比较,只有当都为1时,本位才为1;其他为0,位数不够补0。如3&6,对应011&110=10=2&&(逻辑与):当两边的值都为1时,才为1,;其他为0。如3&&0=0,3&&2=1|与||区别|(按位或...

2019-04-13 11:09:29 387

原创 gcc编译

gcc是编程语言编译器。可以编译c,c++,java,,,首先:.c为后缀的文件,C语言源代码文件;.a为后缀的文件,是由目标文件构成的库文件;.C,.cc或.cxx 为后缀的文件,是C++源代码文件;.h为后缀的文件,是程序所包含的头文件;.i 为后缀的文件,是已经预处理过的C源代码文件;.m为后缀的文件,是Objective-C源代码文件;.o为后缀的文件,是编译后的目标文件;...

2018-12-20 19:29:15 334

原创 vim编译器的使用

vi是Linux操作系统的最常用的编译器,vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。vim file,file可以在编译前建好,也可以直接vim一个新文件。vim编译器有三种模式,命令行模式,输入模式,末行模式命令行模式:移动光标,删除,复制,粘贴输入模式:编译末行模式:文件保存,退出,设置编译环境,字符串查找,设置行号(一)命令行模式常用操作...

2018-12-20 11:29:05 1107

原创 Linux新建用户以及权限设置

新建用户指令1:useradduseradd [选项] 用户名选项作用-d指定用户主目录-g指定gid-u指定uid-m自动创建用户主目录-s指定shell-p指定新用户新密码-r建立系统账号建立一个用户lala指定它的主目录 /home/lala,shell /bin/bash ,group组 joy ...

2018-12-20 08:58:15 5441

转载 Linux之grep,find常用指令

find和grep总是傻傻分不清,为了让自己不再犯傻,觉得有必要记录下两者的区别~grep是查找匹配条件的行,输出匹配行或含有匹配内容的文件;find是搜索匹配条件的文件。因此,一般情况下,grep的作用域是同目录下的一个文件也可以是多个文件(不包括大神们自己编写脚本实现不同文件夹的grep搜索哈),而find作用域是目录。Linux之findfind 目录路径 选项 [条件] [ ...

2018-12-19 17:33:46 195

原创 C语言常用排序法----结合顺序表

首先定义顺序表,实现由小到大的排序typedef int ElemType ;typedef struct { ElemType *elem; int length; int listsize;}SqList;//SqList是结构体名字 L.length为数组长度冒泡排序法:将每个元素和他后面剩余元素相比较,需要比较次数很多,因而效率也低~ //第一个数不需...

2018-11-28 23:14:23 1799

原创 统计给定的n个数中,负数、零和正数的个数。

统计给定的n个数中,负数、零和正数的个数。输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。刚拿到题时,对于n=0,想到的是if语句,但是,结果却是让我很伤心啊~~#include<stdio.h>...

2018-11-23 09:49:17 9737 1

原创 成绩转换-------switch语句

输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下:90~100为A;80~89为B;70~79为C;60~69为D;0~59为E;#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ int s; while(~scanf("%d",&s)){ ...

2018-11-21 08:48:44 1943

原创 求实数的绝对值。

求实数的绝对值。#include<stdio.h>#include<math.h>int main(){ float a; int b; while(scanf("%f%d",&a,&b)!=EOF){ printf("%.2f%d",fabs(a),abs(b)); }}小结:fabs()用于float求绝对值,abs()用于整型。...

2018-11-21 08:25:48 3056

原创 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。

输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离按照我的想法是这样的,但是,不好的事情发生了…#include<stdio.h>#include<math.h> int main(){ double x1,x2,y1,y2; while(scanf("%f%f%f%f",&x1,&y1,&x2,&y2)!=EOF...

2018-11-19 19:59:02 15495

原创 输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符

输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。#include<stdio.h>#include<stdlib.h>#include<string.h>void sort(char c[3]){ char t; int i,j; scanf("%c%c%c%*c",&c[0],&c[1],&c[2...

2018-11-18 17:15:45 8855

原创 C语言查漏补缺

大一上学期学的C语言,大一下学期学的Java,大二接触了Python,目前大二开了数据结构,用的是C语言,学的语言虽然很多,但是都不精,因此,学的也不扎实,所以,准备边学边补吧,特此,为这些语言可以说是做笔记吧。C语言的字符串定义char a[]输入gets(s);或scanf("%s",s);输出puts(s);或printf("%s&amp

2018-11-03 15:21:14 213

catkin_ws.tar.gz

catkin_ws.tar.gz

2021-10-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除