- 博客(74)
- 收藏
- 关注
原创 物理层相关
1.在信道带宽一定的情况下,根据奈氏准则和香农公式,要想提高信息的传输速率就必须采用多元制(更好的调制方法)和努力提高信道中的信噪比。2.自从香农公式发表后,各种新的信号处理和调制方法就不断出现,其目的都是为了尽可能地接近香农公式给出的传输速率极限。
2023-06-09 09:14:23
730
原创 计算机网络体系结构
法律上的国际标准(现在没有使用)从上往下(第七层到第一层):7.应用层6.表示层5.会话层4.运输层3.网络层2.数据链路层1.物理层最下面三层称为通信子网-为了联网而附加的通信设备最上面三层称为资源子网-完成数据的处理等功能中间的传输层承上启下。
2023-03-14 11:34:52
1670
1
原创 因特网概述
*1.网络(Metwork)由若干结点(Node)和连接这些结点的链路(Link)组成2.多个网络可以通过路由器互连起来,就构成了一个更大的网络,即互联网所以互联网是网络的网络(Network of Networks)3.因特网(Internet)是世界上最大的互联网络4.internet(互联网-互连网)是一个通用名词,泛指多个计算机网络互连而成的网络,在这些网络之间的通信协议可以是任意的。
2023-03-14 11:32:19
524
原创 内存寻址方式
1.[idata]:直接寻址,用于直接指定一个内存单元2.[bx]:寄存器间接寻址,用于间接定位一个内存单元3.[bx+idata]:寄存器相对寻址,可在一个起始地址的基础上用变量间接定位一个内存单元4.[bx+si]:基址变址寻址,用两个变量表示地址5.[bx+si+idata]:相对基址变址寻址。...
2022-08-10 10:10:10
2079
原创 c++ I/O流
1.流是一种抽象的概念,表示了数据的无结构化传递2.c++流是指:信息从外部输入设备(如键盘)向计算机内部(如内存)输入和从内存向外部输出设备(显示器)输出的过程3.c++定义有了I/O标准类库,用以完成流操作的功能。...
2022-08-08 19:20:34
610
原创 c++多态
1.联编指的是:计算机自身彼此关联的过程,在这个过程中确定程序中的操作调用与该操作的代码之间的映射关系,比如:函数重载时,编译器会根据函数名和函数的参数来区别要执行的函数(那一段代码)。这就是建立的一种映射关系,明确函数调用时会执行哪一个代码段2.静态联编:指的是联编工作出现在写代码的阶段,又称之为早期联编,或静态约束。在编译时就确定了函数实现及函数调用的关联。比如C语言的函数,只需要函数名和参数就能确定能不能调用函数,因为C语言是没有函数重载,参数正确才能调用。...
2022-08-07 20:51:45
572
原创 c++继承
protected属性和private属性的唯一区别:protecte: 子类的成员函数中可以直接访问private: 子类的成员函数中不可以直接访问。
2022-08-07 10:39:14
248
原创 运算符重载
1.重载:重新载入,就像之前学的函数重载,对一个已有的函数赋值一个新的定义,因此同一个函数名就可以有不同的含义。2.运算符也是可以重载的,比如cout在输出一个变量的时候,能接受不同类型的数据并输出,他就是重载了...
2022-08-06 10:13:56
9166
原创 c++面向对象
class 类名{成员};示例://类:一个种类,具有什么属性和行为{//私有属性int age;score = y;}{}void setAge(int x)//给age赋值{age = x;}{}{cout
2022-08-05 23:31:02
917
原创 静态 友元 常量
class node{public://静态数据成员定义}//静态数据成员必须在类外初始化class node{public:static void fun(){}//类中定义//类中声明}void node::fun1(){}//在类外定义。
2022-08-04 19:22:48
153
原创 构造-析构函数
1.构造函数名和类名相同2.构造函数没有返回值类型和返回值3.构造函数可以重载,需要满足函数重载的条件{public:student(){}//无参(默认)构造student(int a){}//有参(带参)构造}1.函数名和类名相同,在前面加上一个~2.没有返回值类型和返回值,也没有参数3.如果类中没有自己写析构函数,那么系统将会自动给出一个隐式什么都不干的析构函数。...
2022-08-04 18:15:21
468
原创 c++基础2
namespace 命名空间标识符{命名空间成员}//花括号只有两种情况:1.定义域(必须加分号)// 2.作用域(可加可不加)//函数功能//声明 命名空间外实现。
2022-08-04 17:07:10
963
1
原创 c++基础1
}//定义一个内联函数也就是在定义函数的时候在返回值类型前面加上一个inline修饰函数int a=10;//引用//真名的类型& 别名 = 真名int& val=a;val=99;)//99既然是对一个变量或者对象取别名,那就先得有变量或者对象,不能凭空取一个别名,也就是定义引用必须初始化。//输出1 5fun(1);//输出1 10}......
2022-08-04 10:04:31
178
原创 汇编语言程序
汇编程序包含汇编指令和伪指令的文本伪指令:没有对应的机器码的指令,最终不被CPU所执行。伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作。汇编指令:对应有机器码的指令可以被编译为机器指令,最终被CPU执行。mov ax,4c00h;int 21h;程序返回(套路!):程序结束运行后,将CPU的控制权交还给使它得以运行的程序(常为DOS系统)。一般写在程序的结尾处assume cs:codesgcodesg segment mov ax,0123h
2022-07-28 23:06:30
6354
原创 Debug的使用
将123B0H~123BAH的内存单元定义为数据段累加数据段中的前3个单元中的数据movds,ax;moval,0;//将低位寄存器内容全部初始化为0addal,[0];addal[1];addal[2];累加数据段中的前3个字型数据movds,ax;moval,0;//将低位寄存器内容全部初始化为0addal,[0];addal[2];addal[4];物理地址=段地址×16+偏移地址编程时,可以根据需要将一组内存单元定义为一个段。...
2022-07-24 21:20:25
1545
原创 8086寄存器
原因8086的地址总线宽度为20,寻址能力为1MB,但是寄存器都是16位的,所以为了不浪费寻址空间,就用连个16位的地址(段地址,偏移地址)相加得到一个20位的物理地址。8086CPU所有的寄存器都是16位的,可以存放两个字节,而且通用寄存器可以拆分为两个8位的寄存器,一个低地址,一个高地址。偏移地址为16位,16位的寻址能力为2^16B=64KB,所以一个段的长度最大为64KB。段地址*16必然是16的倍数,所以一个段的起始地址也一定是16的倍数。这个字的高位字节存在这个寄存器的高8位寄存器(AH)...
2022-07-24 21:19:38
2671
原创 汇编基础1
CPU通过地址总线来还指定存储器单元的,就是说地址总线的宽度没决定了CPU寻址的大小,地址总线越多,CPU就可以对更多的存储单元进行寻址。一台电脑上有一个主板,主板上有核心器件和一些主要器件,这些器件通过总线(地址总线,数据总线,控制总线)相连。CPU对外部设备(显示器,音箱,打印机)都不能直接控制,直接控制这些设备进行工作的是扩展插槽上的接口卡。8086CPu的地址总线宽度为20,那么可以寻址1MB个内存单元,其内存地址空间为1MB。计算机系统中,所有的可用程序控制其工作的设备,必须受到CPU的控制。..
2022-07-24 21:18:48
250
原创 基本地址变换机构
在分页存储管理(页式管理)的系统中,只要确定了每个页面的大小,逻辑地址结构就确定了。因此,页式管理中地址是一维的。即,只要给出一个逻辑地址,系统就可以自动地算出页号、页内偏移量两个部分,并不需要显式地告诉系统这个逻辑地址中,页内偏移量占多少位。https。...
2022-07-21 21:39:51
1683
原创 覆盖与交换
在程序的内存大小大于实际(物理)内存的大小时,就需要覆盖技术来解决这个问题覆盖技术的思想:将程序分为多个段(多个模块)。常用的段常驻内存,不常用的段在需要时调入内存。内存中分为一个“固定区”和若干个“覆盖区”。需要常驻内存的段放在“固定区”中,调入后就不再调出(除非运行结束)不常用的段放在“覆盖区”,需要用到时调入内存,用不到时调出内存 对上面这个程序:物理内存:程序x的固定区A(8K)程序x的覆盖区0(10K)程序x的覆盖区1(12K)按照自身逻辑结构,让那些不可能同时被访问的程序段共享同一个覆盖区必须由
2022-07-08 13:04:41
335
原创 内存管理的概念
操作系统负责内存空间的分配与回收操作系统需要提供某种技术-从逻辑上对内存空间进行扩充为了使编程更方便,程序员写程序时应该只需要关注指令、数据的逻辑地址。而逻辑地址到物理地址的转换(这个过程称为地址重定位)应该由操作系统负责,这样就保证了程序员写程序时不需要关注物理内存的实际情况。地址重定位:三种方法1.绝对装入:编译时产生绝对地址——单道程序阶段-此时还没有操作系统2.可重定位装入:装入内存时将逻辑地址转换成物理地址——多道批处理操作系统3.动态运行时装入:运行时将逻辑地址转换为物理地址,需要设置重定位寄存
2022-07-07 22:50:49
225
原创 内存的基础知识
内存是用于存放数据的硬件。程序在执行的时候需要先放到内存中才能被CPU处理思考:在多道程序环境下,系统中会有多个程序并发执行,也就是说会有多个程序的数据需要同时放到内存中。那么,如何区分各个程序的数据是放在什么地方的呢?给内存的存储单元编地址,内存地址从0开始,每一个地址对应一个存储单元。·如果计算机是“按字节编制”,则每个存储单元大小为1字节。1B即8个二进制位·如果计算机是“按字编制”,一个字长16的计算机,则每个存储单元大小为1个字。每个字的大小为16个二进制位1K=2^10;1M=2^20;1G=2
2022-07-07 11:51:24
1787
原创 死锁的处理-死锁的检测与解除
如果系统中既不采取预防死锁的措施,也不采取避免死锁的措施,系统就很可能发生死锁。在这种情况下,系统应当提供两个算法:1.死锁检测算法:用于检测系统状态,以确定系统中是否发生了死锁。 2.死锁解除算法:当认定系统中已经发生了死锁,利用该算法可将系统从死锁状态中解脱出来。一、死锁的检测为了能对系统是否已发生了死锁进行检测,必须:1.用某种数据结构来保存资源的请求和分配信息;2.提供一种算法,利用上述信息来检测系统是否已进入死锁状态。1.数据结构资源分配图:1.两种结点..
2022-05-29 11:04:56
6046
原创 死锁的处理-避免死锁
静态策略:预防死锁动态策略:避免死锁一、安全序列,不安全状态,死锁的联系1.安全序列就是指如果系统按照这种序列分配资源,则每个进程都能顺利完成。只要能找出一个安全序列,系统就是安全状态。当然,安全序列可能有多个。2.不安全状态如果分配了资源之后,系统中找不出任何一个安全序列,系统就进入了不安全状态。这就意味着之后可能所有进程都无法顺利的执行下去。当然,如果有进程提前归还了一些资源,那系统也有可能重新回到安全状态,不过我们在分配资源之前总是要考虑到最坏的情况。如果系统处..
2022-05-28 22:32:19
1209
原创 死锁的处理-预防死锁
不允许死锁的发生:死锁的产生必须满足四个必要条件,只要其中一个不满足,死锁就不会发生静态策略:预防死锁1.破坏互斥条件2.破坏不剥夺条件3.破坏请求和保持条件4.破坏循环等待条件动态策略:避免死锁允许死锁的发生:死锁的检测和解除一、破坏互斥条件1.互斥条件:只有对必须互斥使用的资源的争抢才会导致死锁。2.解决方案如果把只能互斥使用的资源改造为允许共享使用,则系统不会进入死锁状态。比如: SPOOLing技术。操作系统可以采用SPooLi..
2022-05-26 10:52:25
673
1
原创 死锁的概念
一、进程死锁、饥饿、死循环的区别1.死锁:各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象。2.饥饿:由于长期得不到想要的资源,某进程无法向前推进的现象。比如:在短进程优先(SPF)算法中,若有源源不断的短进程到来,则长进程将一直得不到处理机,从而发生长进程“饥饿”3.死循环:某进程执行过程中一直跳不出某个循环的现象。有时是因为程序逻辑bug导致的,有时是程序员故意设计的。4.三者的共同点:都是进程无法顺利向前推进的现象(故意设计的死循环除外..
2022-05-25 10:56:02
1101
原创 管程的概念
一、为什么要引入管程信号量机制存在的问题:编写程序困难、易出错能不能设计一种机制,让程序员写程序时不需要再关注复杂的PV操作,让写代码更轻松呢?1973年,Brinch Hansen首次在程序设计语言(Pascal) 中引入了“管程”成分――一种高级同步机制二、管程的定义和基本特征1.定义管程是一种特殊的软件模块,有这些部分组成:1.局部于管程的共享数据结构说明;2.对该数据结构进行操作的一组过程;3.对局部于管程的共享数据设置初始值的语句;4.管程有一个名字..
2022-05-24 23:56:58
10971
2
原创 哲学家进餐问题
一、问题描述一张圆桌上坐着5名哲学家,每两个哲学家之间的桌上摆一根筷子,桌子的中间是一碗米饭。哲学家们倾注毕生的精力用于思考和进餐,哲学家在思考时,并不影响他人。只有当哲学家饥饿时,才试图拿起左、右两根筷子(一根一根地拿起)。如果筷子已在他人手上,则需等待。饥饿的哲学家只有同时拿起两根筷子才可以开始进餐,当进餐完毕后,放下筷子继续思考。1.关系分析。系统中有5个哲学家进程,5位哲学家与左右邻居对其中间筷子的访问是互斥关系。2.整理思路。这个问题中只有互斥关系,但与之前遇到的问题不同的事,每个..
2022-05-24 18:45:03
565
原创 读者-写者
一、问题描述有读者和写者两组并发进程,共享一个文件。当两个或两个以上的读进程同时访问共享数据时不会产生副作用但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致的错误。因此要求:1.允许多个读者可以同时对文件执行读操作;2.同一时间只允许一个写者往文件中写信息;3.任一写者在完成写操作之前不允许其他读者或写者工作;4.写者执行写操作前,应让已有的读者和写者全部退出。与消费者进程不同,读者进程在读数据后并不会将数据清空,并不会改变数据。因..
2022-05-24 16:07:07
232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人