文章分类 - 计算机体系
计算机体系
摘要:事件通知 条件通知 event只能实现一对全体通知 cond可以实现一对部分通知 event是基于cond来实现的 一对一通知是单播 一对多通知属于广播 信号量通知
阅读全文
摘要:daemon线程 默认线程daemon的属性为false deamon为True的线程 如果主线程结束了,那么deamon为true线程无论处于何种状态都会立即结束 deamon为False的线程 如果其它线程结束了,deamon为False的线程是不会受到任何影响继续执行自己的代码,直到自己的指令
阅读全文
摘要:内存缺页中断 应用程序通过 malloc 函数申请内存的时候,实际上申请的是虚拟内存,此时并不会分配物理内存 当应用程序读写了这块虚拟内存,CPU 就会去访问这个虚拟内存, 这时会发现这个虚拟内存没有映射到物理内存, CPU 就会产生缺页中断,进程会从用户态切换到内核态,并将缺页中断交给内核的 Pa
阅读全文
摘要:PC内核对内存分配 内存分段机制 16位的cpu中包含两个寄存器 1.段寄存器 》 存储内存段的值 2.指令地址寄存器 》存储指令地址 寄存器工作原理 8086的cpu 数据总线 16位 控制总线 16位 地址总线 20位 2的20次方是1M大小的地址空间 一个寄存器只能存储16位 所以一个地址寄存
阅读全文
摘要:基础锁类型 乐观锁 悲观锁 悲观锁 执行代码之前就先上锁 重量级锁 乐观锁 自旋锁 乐观锁的ABA问题 解决ABA问题是给记录加版本(带时间标志或者bool标志) 比较并交换 必须保证CAS操作是原子性操作 1.先比较 2.后交换 利用cpu原语级别指令cmpxchg指令支持CAS操作 为了保证多核
阅读全文
摘要:cpu中断 cpu中断只适用于单核cpu,在多核cpu的情况下要锁总线 中断处理过程 1.产生中断 2.执行中断程序 3.执行完中断返回继续执行原来程序 每一个中断都有一个对应的中断处理程序 原语 原语是一个程序段 原语的执行过程中不会被cpu打断 运行在内核态 原语执行的原子性底层实现是靠关中断和
阅读全文
摘要:线程解析 一个程序中不同的执行路径 每个执行路径就是一个线程 每个线程是交替执行的 对于cpu来说没有线程这个概念 cpu执行的就是一个死循环 不断的从内存中获取指令来执行没有指令的时候终止运行 线程的方法 sleep 当前线程从cpu上退出指定时间 然后再把线程加入到就绪队列中 在sleep的时间
阅读全文
摘要:并发编程三大特性 1.原子性 2.有序性 3.可见性 可见性 由于缓存机制,导致不同cpu核心操作同一个变量的时候会出现数据不一致情况 三级缓存 现代一颗cpu一般会包含多个cpu核 如4颗8核 每个cpu核包含L1,L2缓存,每颗cpu包含L3缓存.L1,L2是核独享,L3是cpu的所有核共享 c
阅读全文
摘要:创建对象流程 1.半初始化状态 申请内存空间,成员变量设置为变量类型的默认值 2.调用构造方法,成员变量设置为变量的初始值,初始化完成 3.建立引用关联,把实例变量和内存地址关联起来 半初始化 初始化完成 创建对象完成 this对象逃逸 对象的半初始化状态 指令的重排序 两者结合到一起的话就会出现t
阅读全文