文章分类 -  C语言

C语言
摘要:内存缺页中断 应用程序通过 malloc 函数申请内存的时候,实际上申请的是虚拟内存,此时并不会分配物理内存 当应用程序读写了这块虚拟内存,CPU 就会去访问这个虚拟内存, 这时会发现这个虚拟内存没有映射到物理内存, CPU 就会产生缺页中断,进程会从用户态切换到内核态,并将缺页中断交给内核的 Pa 阅读全文
posted @ 2022-06-08 14:08 不懂123 阅读(789) 评论(0) 推荐(0) 编辑
摘要:PC内核对内存分配 内存分段机制 16位的cpu中包含两个寄存器 1.段寄存器 》 存储内存段的值 2.指令地址寄存器 》存储指令地址 寄存器工作原理 8086的cpu 数据总线 16位 控制总线 16位 地址总线 20位 2的20次方是1M大小的地址空间 一个寄存器只能存储16位 所以一个地址寄存 阅读全文
posted @ 2022-06-08 08:58 不懂123 阅读(57) 评论(0) 推荐(0) 编辑
摘要:基础锁类型 乐观锁 悲观锁 悲观锁 执行代码之前就先上锁 重量级锁 乐观锁 自旋锁 乐观锁的ABA问题 解决ABA问题是给记录加版本(带时间标志或者bool标志) 比较并交换 必须保证CAS操作是原子性操作 1.先比较 2.后交换 利用cpu原语级别指令cmpxchg指令支持CAS操作 为了保证多核 阅读全文
posted @ 2022-05-25 14:13 不懂123 阅读(72) 评论(0) 推荐(0) 编辑
摘要:cpu中断 cpu中断只适用于单核cpu,在多核cpu的情况下要锁总线 中断处理过程 1.产生中断 2.执行中断程序 3.执行完中断返回继续执行原来程序 每一个中断都有一个对应的中断处理程序 原语 原语是一个程序段 原语的执行过程中不会被cpu打断 运行在内核态 原语执行的原子性底层实现是靠关中断和 阅读全文
posted @ 2022-05-20 20:13 不懂123 阅读(111) 评论(0) 推荐(0) 编辑
摘要:并发编程三大特性 1.原子性 2.有序性 3.可见性 可见性 由于缓存机制,导致不同cpu核心操作同一个变量的时候会出现数据不一致情况 三级缓存 现代一颗cpu一般会包含多个cpu核 如4颗8核 每个cpu核包含L1,L2缓存,每颗cpu包含L3缓存.L1,L2是核独享,L3是cpu的所有核共享 c 阅读全文
posted @ 2022-05-15 09:31 不懂123 阅读(82) 评论(0) 推荐(0) 编辑
摘要:创建对象流程 1.半初始化状态 申请内存空间,成员变量设置为变量类型的默认值 2.调用构造方法,成员变量设置为变量的初始值,初始化完成 3.建立引用关联,把实例变量和内存地址关联起来 半初始化 初始化完成 创建对象完成 this对象逃逸 对象的半初始化状态 指令的重排序 两者结合到一起的话就会出现t 阅读全文
posted @ 2022-05-14 15:06 不懂123 阅读(71) 评论(0) 推荐(0) 编辑
摘要:文件的概念 计算机当中数据都是以文件的形式进行保存的 数据和文件 数据是以文件为管理单位存放在磁盘上的 文件存储在磁盘上分别要存储两部分的内容 第一部分是文件属性数据 第二部分是文件的数据内容 这两个部分是分开存放的 目录文件的作用 目录文件中的数据内容就是当前目录中包含的文件列表的文件基本简略属性 阅读全文
posted @ 2019-07-23 17:08 不懂123 阅读(436) 评论(0) 推荐(0) 编辑
摘要:进程概述 进程包含三个部分 应用程序本身的代码和数据 这一部分称为应用代码部分或者应用空间 应用程序调用os函数时候 所涉及的os代码和数据部分称为内核代码部分或者内核空间 os记录的进程在运行时的各种信息 专门进行进程管理的称为PCB 称为进程控制块 PCB 就是C语言的结构体 该结构体非常大 成 阅读全文
posted @ 2019-07-09 09:02 不懂123 阅读(178) 评论(0) 推荐(0) 编辑
摘要:接口说明 标准IO是 库API 文件IO是 操作系统API 库API是对操作系统API进行的二次封装 文件描述符 open返回的文件描述符中 是文件描述符池中当前最小没用到的那一个 进程一运行起来0/1/2文件描述符就被占用了 不同的进程都有自己独立的文件描述符池 都是以0-1023个数字作为文件描 阅读全文
posted @ 2019-07-05 16:03 不懂123 阅读(127) 评论(0) 推荐(0) 编辑
摘要:二进制 表示数字只有0和1 无论进行加减乘除法 单个位的数字都不可能大于1 (110101)2 = 1*2^5+1*2^4+0*2^3+1*2^2+0*2^1+1*2^0 =(53)10 (110101)2 = (110 101)=(1*2^2+1*2^1+0*2^0 1*2^2+0*2^1+1*2 阅读全文
posted @ 2019-07-03 14:09 不懂123 阅读(1463) 评论(0) 推荐(0) 编辑
摘要:字符串 c语言规定使用\0字符表示字符串结尾 \0表示空字符 字符串是一个特殊的字符数组 就是数组的最后面多了一个\0字符 其他语言的字符串实现也c语言的实现没有大的区别 但是它们不一定使用\0来作为结尾 字符串两种表示方式 1.char buf[]={'a','b','c','\0'} 2."ab 阅读全文
posted @ 2019-05-18 11:00 不懂123 阅读(279) 评论(0) 推荐(0) 编辑
摘要:指针 指针是c语言的精髓 使用指针的目的就是用来操作内存 指针就是内存地址的别称 通过发送内存地址电信号来找到对应的内存字节空间叫做内存寻址 任何一个变量所开辟的内存空间字节数是 >= 1个字节 变量的每个字节都有一个地址 变量的第一个字节的地址代表整个变量的地址 变量的指针指向的是第一个字节的地址 阅读全文
posted @ 2019-05-10 19:38 不懂123 阅读(149) 评论(0) 推荐(0) 编辑
摘要:IDE 集成开发环境 1.编辑器 2.编译器 3.调试器 4.可视化图形界面 构建 Build 包含编译和链接两个步骤 把源程序翻译成机器指令运行 Run 执行翻译后的机器指令 程序就是程序员规定的一个一个的指令步骤,计算机按照程序的步骤一步一步的运行 源程序和可执行程序的区别 源程序 人类能够读懂 阅读全文
posted @ 2019-05-02 14:39 不懂123 阅读(480) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示