自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 内存管理(上)(操作系统)

一、内存管理的基本原理 我们都知道外存的读写能力很慢,而CPU的运行速度很快,所以为了提高CPU的利用率,我们就需要将进程放入一个更加高速的位置,这个位置就是内存。内存的运行速度比外存快的多,可以大大提升CPU的利用率。而内存管理这一章主要讲的就是用什么办法将一个作业调度到内存中?以及如何改进这些方法?以及如何管理内存中的这些进程或者说是页面。 1.1程序的装入与链接 程序的连接是在将进程调入内存之前发生的,程序是由程序员编写的,而一个程序可能需要多个程

2023-12-23 19:01:09 847 1

原创 内存管理(下)(操作系统)

学到这里其实我是非常困惑的为什么要在第二轮将访问位置为0呢?按照时钟置换算法算法来看,由于其参数是一维的,可能第一次访问位全为1,那么如果扫描的时候不将访问位置为0的话,将会永远找不到访问位为0的页面,但是改进型时钟置换算法不同,这种算法的参数是二维的,不管页面状态如何变化,我们四轮扫描下来总能找到对应的置换页面,那还何必要去在第二轮扫描将访问位置为0呢?置为0的过程还会增大算法开销,我十分不解。有知道为什么的,还请多多指教。

2023-12-23 19:00:48 359 1

原创 指令系统(计组)

第二章数据的表示和运算中,我们学到了计算机中数据运算的具体过程,以及浮点数的表示;第三章存储系统中,我们学到了各种存储器之间的层级关系以及他们的具体实现方式及功能。而本章指令系统主要学的分为如何设计指令,指令的寻址,以及汇编语言中的指令这三个方面。

2023-12-14 08:57:34 936 1

原创 存储系统(计组)

一、存储系统基本概念 在计算机组成原理的第一章我们说过,由存储器、运算器和控制器组成主机,第二章主要讲的是运算器与控制器是如何配合CPU中的各种寄存器完成二进制数的算术运算的。那么第三章存储系统主要讲的就是存储器是如何在计算机中形成一个存储体系的。 1.1存储系统的层次结构 神说要有主存,于是便有了主存,但是由于组成主存的元件特性限制,主存的数据传输效率不会很高,但是CPU运行速度是很快的。那么为了解决CPU与主存之间的速度矛盾,于是便有了Cache,C

2023-12-09 16:52:54 1014

原创 数据的表示和运算(计组)

在C语言中,有各种各样类型的变量,char、int、float、double……这些变量可以表示的范围依次增大,所占的bit也依次增大,但是int和float明明都占32个bit位,但是为什么float的表示范围比int大那么多呢?这是因为int的二进制数组成为符号位+数值位,也就是除了符号就是数值;而float的二进制数组成中包含了一个可以表示科学计数法中次方的二进制数,而这个可以表示次方的二进制数我们称之为阶码,float在现代计算机的组成为符号位+阶符+阶码+尾数。

2023-11-25 21:23:47 1013

原创 计算机系统概述(计组)

计算机是由软件+硬件组成,软件分为系统软件和应用软件。系统软件包括:操作系统、数据库管理系统(注意此处不是数据库系统)、标准程序库、网络软件、语言处理程序(汇编程序,编译程序等)、服务类的程序(调试程序等)。系统软件是当计算机开机后就开启,直到计算机关闭后才会关闭的软件。而用户软件是随着用户的使用而打开或关闭的软件。

2023-11-09 19:12:49 161 1

原创 进程与线程(下)(操作系统)

还有一个问题需要我们思考,如果我们将代码中两个进程的两个P操作交换位置,也就是将临界区上锁的P操作与消耗一个资源的P操作进行交换,我们来看一下效果:首先生产者给临界区上锁,但如果此时缓冲区已满,那么生产者就会被卡在P(empty)这个代码处无法继续运行,需要等待消费者生产一个空位才行,但是此时我们再看消费者进程,由于生产者给临界区上锁,导致消费者进程也无法执行,那这样就发生了生产者在等待消费者生产一个空位,而消费者又在等待生产者给临界区解锁,哦豁,发生了死锁问题。那么如果可以剥夺,自然也就没有了死锁。

2023-10-21 10:18:33 84 1

原创 进程与线程(上)(操作系统)

一、进程的概念、组成、特征 1.1进程的概念 进程来源于程序,当我们在电脑中打开一个程序的时候,这个操作系统就会创建一个该程序的进程。我们可以打开多个来源于同一个程序的进程,例如我们可以登录多个QQ号。这就是进程与程序的区别。 我们说过,同一个程序可以开启多个进程,那我们如何去区分这些进程呢?这就要提起进程控制块 (PCB) 的概念了,PCB是一种数据结构,它是一个表,表中就存放了各个进程的PID。而PID就像我们的身份证号一样,每个进程对应一个单独的P

2023-10-17 16:20:26 81 1

原创 操作系统概述(操作系统)

操作系统是存在于用户与硬件之间的一种软件。当用户想要进行一些操作的时候,操作系统会将用户进行的操作翻译成二进制数字传给CPU,CPU就会处理我们想要进行的操作。

2023-10-11 20:33:28 172 1

原创 排序(数据结构)

时间复杂度分为最好和最坏两种情况,最好情况:如果这个数组原本就是有序的,那么我们每次的对比只需要令待排关键字与他的前一个关键字比较即可,然后移动一次元素,这样整个表遍历下来,所需要O(n)的时间复杂度,最坏情况:如果数组原本是倒序,我们像将其变为正序,那么我们第一次比较关键字需要比较一次,移动一次元素,第二次需要比较两次,最坏需要移动2次元素,第n次需要比较n次,最坏需要移动n次元素。插入排序就是后面的元素与前面的元素对比,然后插入相应的位置,分为直接插入排序和希尔排序,希尔排序是直接插入排序的升级版。

2023-10-09 19:59:52 45 1

原创 图(数据结构)

一、图的基本概念1.1图的定义图是由树变化而来,我们所学习的树在遍历的过程中是没有回路的,而图可以有。可以说树是一种特殊的图。基于这种理解下图就是由顶点集以及顶点与顶点之间形成的边集组成,那么这句话的隐藏含义就是,边集中的任意一条边的两端都存在顶点。且图中边的数量一定不大于顶点的数量。 这里需要注意两个符号的含义:1.V,v,都可以代表顶点。2.|V|代表图的顶点数,也称为图的阶。2.E,e,都可以代表边。4.|E|代表图的边数。 注意,线性表可以

2023-10-05 17:15:51 80

原创 树(数据结构)(查找)

这里要注意我的编码设计方式,我们将这四个字母以任意顺序,任意长度,用代码传递信息,得到的1和0的数组,翻译成字母后是唯一的。1.哈夫曼树不存在度为1的结点:这个性质我们可以反推,假如哈夫曼树中存在度为 1 的结点,就拿上面的1、3、5、6、8举例,如果存在度为1的结点,那么我们令这颗哈夫曼树的最底层的父节点度为1,那么原本存放1和3的位置,现在只能存放1,而另一个就不能在哈夫曼树的最底层,而要向上存放,但是哈夫曼树本着权值越小越向下层存的特点,这样存放显然违背了哈夫曼树的存放特点,故反推不成立。

2023-09-29 09:04:27 187

原创 栈、队列和数组(数据结构)

一、栈1.栈的基本概念 栈是一种特殊的线性表。在线性表中,我们可以在线性表中的任意一个位置插入或删除一个元素,但是在栈这种特殊的线性表下,我们只能在栈顶进行插入或删除的操作。 我们可以把栈想象成一批叠起来的盘子,这一叠盘子的最上边的盘子就是栈顶,最下面的就是栈底,也就是,如果我们要在这一叠盘子中再放一个盘子,那么只能放在顶上,而不能放在其他位置。那么如果这片空间中没有盘子呢?那么就形成了空栈。那么如果我们想要删除一个数据,也只能从栈顶删除,也就是栈的性质:后进来的先出

2023-09-20 15:36:06 63 1

原创 线性表(数据结构)

而下标为0的结点是头结点。(1)指定结点后插操作:由于单链表的储存方式是结点的指针指向后一个结点的数据域,那么如果给定一个结点p,那么通过结点p的指针我们就可以找到p的后继节点q,那么在p结点和q结点之间,我们就可以进行前面讲的插入操作。在两个结点p(前)和q(后)之间插入一个新的结点s,那么我们就需要进行以下操作:先创建一个s结点,然后将这个结点的后指针指向 q 的前指针,再将q的前指针(原本是指向p的)指向s的后指针,再将s的前指针指向p的后指针,再将p的后指针(原本是指向q的)指向s的前指针。

2023-09-13 22:32:34 117 2

原创 初步认识指针(C语言)

然后将这个数的地址返回到我们的主函数时,在主函数想用一个指针变量来接收,int* pa = test(),这时,由于a是局部变量,在函数调用结束的一瞬间,这个变量所占的空间就还给了操作系统,销毁了,也就是指针所指向的空间释放,那么此时的*pa就成了野指针。例:对int型的指针+1也就是上述的pa+1。我们在指针-指针的时候就已经发现了,一个数组的下标为5元素的指针-此数组下标0元素的指针=5,但是0~5是6个元素,我们要注意,指针是指向一个元素的前面,那么就意味着我们把下标为5的元素给落下了。

2023-09-06 20:55:53 101 1

原创 位操作符、单目操作符

那么此时&操作符所得出的结果就为:00000000000000000000000000000011,此为补码,还要求其原码为:00000000000000000000000000000011。此操作符的功能为两者均为1时,才返回1,否则为0。(操作符操作的是内存中的补码(补码参考移位操作符))此操作符功能为,两者全为0时,才返回0。此操作符功能为,两者相同为0,相异为1。注:此操作符严格满足交换律,例:3^5^3=3^3^5。3. ^ - 按(2进制)位异或操作符。1. & - 按(2进制)位与操作符。

2023-09-03 16:50:46 36

原创 移位操作符(此操作符只针对整数)

1,原码:原码就是一个整数的二进制,而一个整数占4个字节,也就是32个bite位,那么这32位数,也就是二进制序列就可以表达一个整数,而这32位的第一位可以表示该整数的正负,如果第一位是0,那么该整数就是整数,如果第一位是1,该整数就是复数,比如7的二进制为111,那么换成二进制序列就可以表示为:00000000000000000000000000000111,-7就可以表示为:10000000000000000000000000000111。逻辑右移:低位溢出丢弃,高位补0,无论正负都补0。

2023-09-03 11:59:07 33

原创 数组arr

1、数组的创建方式:数组类型+数组名+[数组大小],其中数组大小可以自定义,如果不设置数组大小,你在数组中放多少元素,编译器会默认你的数组大小为正好能放下你所放置元素的大小。其中字符串数组中如果写成arr[10]=“abc”那么编译器会默认剩下的6个元素都为\0,因为字符串有一个默认结尾为\0,所以虽然只写出了3个元素,但是实际上这个数组中含有4个元素。二维数组可以看成是有行个元素的一维数组,故一个3行4列的二维数组可以看成是有3个元素的一维数组,而这三个元素又存放了4个元素。定位时行和列都要从0开始。

2023-08-23 22:17:07 57

原创 循环练习例题

2.如果我们想让输出结果只有一行,达到输出结果只在第一行变换的结果(变换内容为第一行变第二行同时第一行内容消失,第二行变第三行。依此类推)这种效果就需要引入一个库函数叫做system此函数的功能是用来执行系统命令的,system()内的内容为命令,次库函数一样需要引入一个头文件#include <stdlib.h>。if (strcmp(arr1, "abcdef") == 0) //比较两个字符串是否相等,不能使用==,应该用strcmp。printf("三次密码均输入错误,程序关闭");

2023-08-13 16:36:06 27 1

原创 初步认知函数

\当我们定义Swi这个函数的时候,我们需要把a和b调换位置,也就是说这涉及到了地址的问题,a和b调换位置,也就是两个数的地址交换了。但是如果我们还是按照上一个的函数写法来写,那么形参与实参之间没有联系,当我们定义一个函数时,函数中的两个数x和y是两个与a和b的地址完全不同的地址,如果没有指针变量的参与,函数在执行过程中,确实是将函数中的“x”,“y”改变了位置,但是由于形参和实参之间没有指针变量来将地址联系起来的话,改变形参的位置就对实参没有任何影响,故达不到函数原有的改变a和b位置的功能。

2023-08-10 21:42:33 34 1

原创 初识C语言--选择语句if/swich和循环语句while/for

这个代码输出的结果是1 2 3 4 ,因为a++在continue的下面就导致当代码运行到continue的时候a==5,返回到循环出,但是由于a++在cuntinue下面导致a++被跳过,所以a只能永远等于5,打印输出的结果也只能到5,但是达不到5,这个循环就变成了死循环。选择语句if可以对一个指令进行选择,当我们只有一个选择的时候用一个if足矣,但是当我们涉及到了两个以上的选择分支的时候那么一个if显然是不够的,这时候我们就要用到else if。if的作用便是,如果if中的内容为真则进行if内的指令。

2023-08-09 21:40:19 206

原创 第一天写博客

' \" \\ 这些转义字符主要由’\‘组成该’\‘的作用就是令\后面的字符只是单纯的字符的意思。其实一开始我是打算先学python的,但是在我准备从化工跨考408的入门阶段发现,学习408的前提是学好C语言,于是我便开始了C语言的学习。而造成此结果的原因为当采用arr2写法时,字符串的结束位置操作系统没有找到\0,就导致系统在打印输出的过程中会把\0前的所有字符串一起打印下来,知道遇见\0才结束输出,故不确定其打印结果。3、\b为退格,例abc\bdef,打印输出的结果为abdef。

2023-08-02 14:05:47 20

空空如也

空空如也

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

TA关注的人

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