- 博客(16)
- 收藏
- 关注
原创 操作系统-----I/O设备
对外提供的接口可以分为三种,字符设备接口(用于操作一次I/O操作中以字符为单位传输数据的设备,如鼠标,键盘),块设备接口(用于操作一次I/O操作中以块为单位传输数据的设备,如u盘,硬盘),网络设备接口(用于操作网卡完成主机间的数据通信)。因为不同的设备由不同的构造,寄存器的个数和功能也是不一样的。在DMA的方式中一次I/O操作传输的数据是以块为单位的,但是读取时还是一个字节一个字节读取的,只是cpu只发起了一次I/O操作,并且块的大小是可以改变的,如果是字符设备那么块的大小就会设置为字符大小。
2023-08-01 14:50:26
886
原创 操作系统-----文件管理
总的来说文件的逻辑结构是从用户角度上看的,是对逻辑空间的操作,而文件的物理结构是从操作系统的角度上看的,是对物理空间的操作也就是如何给文件分配物理空间的问题。而目录储存的是目录文件,目录文件就是一张记录了储存在目录中的其它目录数据或则是文件数据的表格,而目录文件中的每一项称为文件控制块(FCB)。当你双击打开一个目录下的文件时,操作回去当前目录所对应的目录文件中根据文件名进行查找对应的文件控制块,之后根据文件控制块记录的外存块号找到相应的数据,如果打开的是目录则找到的就是目录文件。
2023-08-01 14:49:29
390
原创 数据结构-----线性表
因为静态分配的方式是基于数组实现的,其中的读取数据和查找数据使用数组的方法即可。采用指针的方式查找数据也是想数组一样的表示方式L.data[i-1],不过背地里操作系统会根据指针所指的地址找到内存块的起始地址,在根据要读取的索引号计算出需要查找的数据的起始地址,然后在根据指针的数据类型决定读取多少字节的数据,如定义的是整形指针那么一个整形就占4个字节,操作系统找到数据存储的起始地址后,就会往后接着读取4个字节的数据,这样就把这个数据给完整的读取了。属于数据结构的一种,它的逻辑结构是线性结构。
2023-07-13 21:54:31
401
1
原创 数据结构-----绪论
数据的存储结构会影响对数据的运算速度如一个数据是采用连续存储的方式存储在内存中的,那么想要往数据的中间插入一个元素,需要把后面的元素往下移动为该元素腾出空间。而数据的移动是很耗时间的。计算机能处理数值型问题和非数值型问题,对于非数值型的问题: 1.我们关心每个个体的具体信息 2.我们还关心个体之间的关系。:算法中每条指令必须有确切的含义,对于相同的输入只能得出相同的输出。:具有相同结构的数据元素的集合,强调的是数据元素的结构是否相同。数据的运算:针对某种特定的逻辑结构,结合需求定义基本的运算。
2023-07-13 20:17:56
48
1
原创 操作系统------进程同步和进程互斥
信号量机制实现进程同步:使用记录型信号量机制可以实现进程同步,先为想要实现进程同步的两个进程创建一个记录型信号量并把资源量设为0,之后在想要后执行的进程的那部分代码前加上一个P(s)操作,在想要先执行的进程的那部分代码后加上V(s)操作即可实现进程同步。原理是一开始的资源量为0,这就导致如果先执行需要后执行的进程里的P(s)操作的话会因为资源量进行减一操作后变为负数,从而使得进程陷入阻塞态只有等到需要先执行的进程执行V(s)操作释放资源后才能使进程变为就绪态重新运行。而进程同步是规定了进程之间的执行顺序。
2023-06-26 20:02:09
1219
1
原创 操作系统-----进程和线程
而需要接收数据的进程只需要调用接收原语并指明发送进程的pid,操作系统就会在该进程的pcb中的消息队列中找到对应发送进程发送的数据并把它复制到进程的存储空间中。基于存储区共享是指操作系统会在内存中划分出一片共享存储区,该区域所有的进程都能够访问,需要进行通信的进程只需要把数据写入共享存储区当中等待另外的进程访问即可,并且存放在共享存储区中的那个位置和存放的数据形式都由通信的进程所决定而不是由操作系统决定,另外需要注意的是该共享存储区的访问属于互斥访问需要使用p,v操作进行。:程序的一次执行过程。
2023-06-25 00:25:09
76
原创 操作系统-----系统的概念
一般来说应用程序无法直接操作任何的硬件资源,因为这些指令基本都运行在内核态,如果应用程序想要操控硬件干某些事情只能通过系统调用的方式调用内核程序同时指明想要做的事情比如在屏幕上输出文本又或者操作扬声器播放声音,之后内核程序接收到这些参数后会调用相应的设备驱动程序(用来操作对应硬件的程序,一般由生产设备的厂家提供)去完成这些操作。虚拟机有两种类型第一种是直接运行在硬件上,此时的虚拟机程序直接管理硬件资源它运行在内核态,在虚拟机之上在运行操作系统而此时的操作系统是运行在用户态。
2023-06-23 18:17:24
219
1
原创 操作系统-----内存
为什么要有内存?如果cpu是直接读取外存的数据,那么cpu的处理速度和读取速度会严重不匹配,外存拖累了cpu。而内存的读写速度是外存的几百倍所以需要把外存的程序装入到内存中,cpu直接读取内存数据。操作系统管理内存的方式有四种分别是管理内存的分配与回收,内存空间的扩充(采用虚拟化技术),地址转换,存储保护。 内存是由一个个存储单元组成,一般来说每一个存储单元存储一个字节的数据,每一个存储单元都有一个地址称为物理地址,就拿4GB的内存来说共有2^32个存储单元也就是说地址需要32位二进制来表示。当操作系统创建
2023-06-19 23:30:09
734
原创 操作系统-----调度
拥有抢占式和非抢占式两个版本,抢占式:当有新的进程加入就绪队列或者有进程执行完毕让出cpu资源时执行该算法,如果是让出cpu资源的情况选择就绪队列中执行时间最短的上cpu运行,如果是有新进程加入的情况把该进程的执行时间和当前正在运行的进程的剩余执行时间进行对比,如果小于则操作系统会强制剥夺该进程的cpu使用权并分配给刚加入的进程。优先级调度算法(RR):操作系统根据各个进程的优先级的高低决定那个进程获得cpu资源,优先级由优先数决定,优先数和优先级的对应关系取决于操作系统的设置。优点:实现简单,公平。
2023-05-31 23:02:17
1414
1
原创 操作系统----死锁
在银行家算法中定义了几个数组用来记录数据,max数组用来记录进程告知操作系统的最大请求的资源数,Allcation数组用来记录进程已被分配的资源数,need数组记录进程还需要的资源数,request数组记录本次进程请求的资源数,available记录操作系统还能分配的资源数。按照这种方式就无法形成资源等待环导致所有进程发生死锁,假设有两个进程都申请了一个资源,那这两个资源的编号肯定有小有大,小号资源的进程能等待大号的资源但是大号资源无法回过头等待小号资源所以避免了死锁问题。:1.实现起来比较复杂。
2023-05-27 16:17:46
297
1
原创 计算机网络知识框架总结
拿www.bilibili.com这个域名来说,先向根域名服务器查询com域名服务器的地址,之后向该地址发起查询,查询bilibili域名服务器的地址,之后再向该地址查询www域名服务器的地址,之后再向该地址查询www.bilibili.com对应的ip地址。路由器收到后会根据目标ip再路由表上进行查询,算出最优的路径确定下一跳的地址,如果路由表没有记录(一般来说自治系统内部的路由只记录内部网络的信息)该网络说明可能不再本自治系统内,就会把数据发往自治系统的边界网关路由由它来发送到另外的自治系统。
2023-04-30 17:46:58
128
原创 网络层详解tcp协议
如果11的段丢了但是21,31的段成功接收则发送两个应答段,这两个应答段的确认号都为11。当11的段重传接收后则发送确认号为41的应答段。拥塞窗口的值决定了发送窗口的值,当双方建立连接后发送方的拥塞窗口的值为1,门限值为x(由发送方自己设置),此时发送方只能发送一个tcp段当应答回来后,拥塞窗口的值变为2,应答都回来后变为4,之后就是8,16…当拥塞窗口的值大于门限的值后,拥塞窗口值的增长由指数增长变为线性增长每次加1,直到有tcp段发生超时重传,此时把拥塞窗口的值除于2当作门限值,拥塞窗口的值变为1。
2023-04-15 01:10:05
97
1
原创 javascript中变量与栈、堆的关系详解
之后根据储存值的类型决定后续的流程,如果是基本类型则直接把值存入内存空间中。如果是引用类型则会在堆区中开辟一个内存空间并把它的地址存入到栈区的空间里即age中存的其实是堆的地址。如果是基本类型则先把变量name1中储存的值先给销毁再把name的值复制一份存入name1的变量中。如果是引用类型则因为占用内存较大所以不会复制自己,而是把栈区储存的地址复制一份存入b变量中。所以这俩个变量储存的地址是一样的都指向一个对象所以会互相干扰。变量的值的类型分为基本类型和引用类型。栈区内存有限只能储存大小固定的基本类型。
2022-10-22 23:26:13
353
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人