计算机基础
文章平均质量分 59
mazamu
沉迷学习无法自拔。
展开
-
内存为什么要分段
内存为什么要分段分段指的是“段基址+段内偏移”。先说如果没有分段会导致什么情况:CPU访问内存需要把代码编译成机器指令,并以绝对物理地址方式访问内存,如果程序中的地址是绝对物理地址,则必然要存放在内存的固定地方,如果两个程序编译出来的机器指令是相同的物理地址,则会造成覆盖。即只能运行其中一个。这时便引出分段,“段基址+段内偏移”,如果你知道了程序里面的内容位置相对于程序的头部位置是不变的,即相对位置不变,那么改变段基址,可以避免上面的覆盖现象,所以便有了分段的概念。...原创 2021-08-29 11:03:25 · 767 阅读 · 0 评论 -
五种IO模型
五种IO模型阻塞IO、非阻塞IO、信号驱动IO、IO复用、异步IO。阻塞IO调用线程等待内核IO操作执行完成,才进行后续操作。非阻塞IO调用线程得到内核IO返回的状态值,如果可执行IO操作就执行,如果不能就做其他事情。阻塞IO与非阻塞IO的区别信号驱动IO应用进程告诉内核,如果数据准备好,就发送一个信号,对SIGIO信号进行捕捉,并调用相应的信号处理函数。IO复用典型的就有select、poll和epoll。就是应用程序向内核注册事件,内核负责对这些事件进行监听,如果事件发生了,则内原创 2021-08-25 10:25:23 · 79 阅读 · 0 评论 -
大学三年来收藏的14个可以写上简历的C/C++项目【已分类】
我本人就是C++后台开发方向,在学习的过程中也陆陆续续收集了一些比较适合新手写上简历的C++项目。因为C++不像Java那样偏应用,C++偏底层,所以需要我们有比较好的计算机基础,比如计算机网络、操作系统、数据结构与算法、数据库。C++方向计算机网络相关项目写一个Json库写一个WebServer写一个网络库写一个服务器框架操作系统相关写一个操作系统内核写一个线程库写一个线程池写一个用户态线程写一个高并发内存池数据结构与算法相关写一个STL写一个红黑树数据库相关写一个NoSQL写一个跳表原创 2021-08-24 22:41:18 · 18056 阅读 · 3 评论 -
操作系统是什么
操作系统的概念现代计算机系统由许多硬件组成,如处理器、主存、磁盘、打印机、鼠标键盘、显示器、网络接口以及各种其它输入输出设备组成。这是一个很复杂的系统,操作系统则是为了管理这些硬件,以及向程序员提供更好的编程环境(屏蔽硬件编程相关的东西)而设计出来的软件。另一种说法是,操作系统是一种把复杂抽象成简单的软件,把“丑陋“的硬件接口抽象成”美丽“的软件接口,方便程序员使用。再有一种说法是,操作系统负责管理好所有的资源,资源管理分为时间和空间复用,这其中的涉及到共享、独占、执行顺序等一系列问题。...原创 2021-08-14 16:40:54 · 1076 阅读 · 0 评论 -
TCP的keepalive和HTTP的keep-alive
文章目录TCP的keepalive主机崩溃情况进程崩溃情况HTTP的keep-aliveTCP的keepalive这实际上是TCP的保活机制。它的工作原理:定义一个时间段,在这时间段内,如果没有任何连接相关的活动,TCP保活机制会开始作用,每隔一个时间间隔,发送一个探测报文,该探测报文数据非常少,如果连续几个探测报文都没有得到相应,则认为当前的TCP连接已经死亡,然后系统内核将错误信息传递给上层应用。主机崩溃情况没打开TCP keepalive,发生客户端主机崩溃,服务器无法感知到,则一直处于e原创 2021-08-12 12:16:51 · 272 阅读 · 0 评论 -
编写c语言程序判断大小端
void run() { unsigned int c[] = {0x12345678,0x77777777}; int n = 32; string ans = ""; for(int i = 0; i < 2; i++) { ans = ""; cout<<(&c + i)<<":"; n = 32; while(n--) { ans = char('0' + (c[i] & 0x1)) + ans; .原创 2021-08-11 21:30:13 · 136 阅读 · 0 评论 -
Linux中fork和vfork的区别
fork函数函数原型 #include <unistd.h> //头文件 pid_t fork(void); //返回值:成功时父进程返回子进程的id,子进程返回0;失败时父进程返回-1;先返回谁是不确定的,不同平台不一样我们可以用一段程序来测试fork函数#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/wait.h>int main()原创 2021-08-09 16:27:32 · 722 阅读 · 0 评论 -
面试题之-值传递、指针传递、引用传递的区别
本文需要汇编相关知识。用代码来解释:主函数的反汇编:如图,main函数的主要内容从8048485开始,eax寄存器里的值是10,分别把eax压栈,并调用fun1、fun2、fun3函数。fun1:将b压栈(b的复制)进入到fun1函数后,把这个压栈后的数减一,然后返回原来的函数,无别的操作。栈中的内容是b的复制,进入函数后,改变b的复制,对b并没有影响。上面不理解,可以等看完fun2再回来看。fun2:将压栈内容(b的别名)放入eax,得到eax指向的内容(值)放入eax,将原创 2021-06-28 23:42:10 · 170 阅读 · 0 评论 -
编译原理实验一-词法分析器
一、实验目的实验目的和要求 通过编写词法分析程序,熟悉其识别单词的基本思想及构造方法。二、实验要求编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码、单词 符号自身值、字符类型。(遇到错误时可显示“Error”,并输出该字符,然后跳过该字符继续识别)。(1) 标识符(变量)ID=letter(letter|digit)*(2) 关键字void,main,short,long,int,double,f原创 2021-05-18 15:32:45 · 5336 阅读 · 1 评论 -
计算机组成原理练习题-常见问题集锦
I/O端口有哪两种编址方式?各是什么含义?答:两种编址方式为独立编址和统一编址。独立编址是I/O端口和主存单元分别编号,不占主存单元的地址空间,I/O端口和主存单元可能有相同的编号,故需要专门的I/O指令;统一编址是I/O端口和主存单元在同一地址空间中的不同位置,可根据地址范围不同来区分访问的是I/O端口还是主存单元,故无需专门的I/O指令。设主存容量为64MB,Cache容量为64KB,每字块有32个字节,按字节寻址。 若Cache采用四路组相联映像,求出主存地址字段中各段的位数,写出分析过程。.原创 2021-01-14 22:09:13 · 820 阅读 · 1 评论 -
计算机组成原理知识点梳理-考试内容汇总和例题
计算机组成原理知识点梳理文章目录计算机组成原理知识点梳理计算机系统概论冯诺依曼计算机的特点计算机系统的层次结构程序执行的过程运算方法和运算器原码、补码、反码、移码IEEE754单精度标准数据的存放方式(大端存储与小端存储)定点数的补码加减法和溢出判断单精度浮点数的运算计算机系统概论冯诺依曼计算机的特点1.采用“存储程序”的工作方式2.计算机由运算器、控制器、存储器、输入设备、输出设备5个基本部件组成(CPU、MainMemory、I/O)3.存储器不仅能存放数据,而且能存放指令,计算机能区分它原创 2021-01-14 15:44:26 · 790 阅读 · 0 评论