操作系统
韩运畅
这个作者很懒,什么都没留下…
展开
-
pthread_join 出core
c++ , 多线程原创 2022-11-14 15:15:23 · 229 阅读 · 0 评论 -
端点--字符集相关的bug
使用同一套字符集,字节数组转成字符串,再转为字节数组。前后者会发生改变。所以我使用了ISO-8859-1。原创 2020-12-17 15:15:24 · 96 阅读 · 0 评论 -
进程结构
原创 2020-12-02 22:02:34 · 749 阅读 · 0 评论 -
C++如何将赋一个对象引用
Object b;Object a=b;//调用了拷贝构造函数Object b;Object& a=b;//赋引用原创 2020-12-02 19:34:15 · 196 阅读 · 0 评论 -
C++何时合成默认构造函数
先思考这么一个问题,有的时候C++要为一个类合成一个默认构造方法,或者扩充它的构造方法,为什么?合成默认构造方法或者扩充构造方法因为一个类在初始化时需要额外做一些事,比如建立虚方法表,初始化对象成员,这些操作是在新建一个对象的时候需要去做的,只是把他们都放在一起了,那个地方就叫构造方法。这篇文章有一个地方说错了,当有虚基类的时候,不是设置指向虚基类对象的指针,虚基类对象的数据也是和派生对象放在一起的。真正的原因是,虚基类也是基类,原因和基类是一样的。相关文章...原创 2020-12-02 18:38:23 · 238 阅读 · 0 评论 -
进程内存结构
原创 2020-11-30 21:17:09 · 331 阅读 · 0 评论 -
MESI一致性协议 读写屏障 总线锁/缓存锁
详述MESI一致性协议看第三部分MESI工作原理,他没有将store buffer和invalidate queue加上store buffer与invalidate queue的讲解MESI一致性协议举例看第三部分的举例,正常流程,不是锁缓存的流程什么是锁缓存:MESI一致性协议+读写屏障,数据读写就变成强一致性的了锁缓存就是MESI一致性协议+读写屏障什么时候用总线锁,什么时候用缓存锁:操作的数据大于64字节时第三部分,问题一的解答...原创 2020-11-27 16:44:19 · 477 阅读 · 0 评论 -
进程/线程
什么是进/线程进程是资源分配的最小单位,线程是CPU调度的最小单位,一个应用程序至少有一个进程,一个进程中至少有一个线程。线程私有:线程栈,内核栈,程序计数器,寄存器线程共享:地址空间,堆内存(共享变量,静态变量)进程私有:地址空间,堆,栈,寄存器进程共享:我知道的有一个共享内存各自优缺点:因为线程共享进程的地址空间,所以线程切换不会导致TLB缓存过期,所以线程切换的代价更低。同时因为进程的创建需要分配大量的资源并为其创建一个独立的地址空间,而线程只需要自己的栈还有寄存器等即可,所以线程创建的原创 2020-11-26 20:22:50 · 135 阅读 · 1 评论 -
mmap是系统调用还是库函数
linux源代码中sys_开头的才是系统调用原型,mmap,brk等都是对系统调用包装后的库函数原创 2020-11-25 21:29:22 · 264 阅读 · 1 评论 -
进程得知收到一个信号的时机
内核给一个进程发送软中断信号的方法,是在进程所在的进程表项的信号域设置对应于该信号的位。这里要补充的是,如果信号发送给一个正在睡眠的进程,那么要看 该进程进入睡眠的优先级,如果进程睡眠在可被中断的优先级上,则唤醒进程;否则仅设置进程表中信号域相应的位,而不唤醒进程。这一点比较重要,因为进程检 查是否收到信号的时机是:一个进程在即将从内核态返回到用户态时;或者,在一个进程要进入或离开一个适当的低调度优先级睡眠状态时。...原创 2020-11-25 21:01:25 · 349 阅读 · 0 评论 -
CS、IP和PC寄存器
CS、IP和PC寄存器 CS寄存器和IP寄存器: 首先强调一下,这两个寄存器非常非常重要,CS的全拼为“Code segment”,即代码段寄存器,对应于内存中的存放代码的内存区域,用来存放内存代码段区域的入口地址(段基址)。 CPU在执行指令时,通过代码寄存器CS和指令指针寄存器IP(instruction Pointer)来确定要执行的下一条指令的内存地址。 CS:IP 两个寄存器指示了CPU当前要赌气的指令地址,计算方式一般为CS左移4位然后加上IP寄存器,作为地址去取内容。原创 2020-11-25 19:47:26 · 7144 阅读 · 1 评论 -
方法调用包括中断都需要先进行断点保护
通过堆栈操作实现子程序调用,首先把PC的内容入栈,以进行断点保护。调用返回时再进行出栈操作,把保护的断点送回原创 2020-11-25 19:37:13 · 1527 阅读 · 0 评论 -
什么是大小端,为什么会出现大小端,如何检测是大端还是小端
什么是大小端大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址端。小端模式,是指数据的高字节保存在内存的高地址中,低位字节保存在在内存的低地址端。为什么出现:计算机分配内存的单位是字节,但是一个int或者short有多个字节,自然有高位字节应该存在高地址还是低地址的两种方式检测方式:直接读取存放在内存中的十六进制数值,取低位进行值判断int a = 0x12345678;int *c = &a;c[0] == 0x12 大端模式c[0] == 0原创 2020-11-25 18:29:11 · 1074 阅读 · 0 评论 -
系统调用的详细过程
程序员的自我修养12.2 系统调用原理原创 2020-11-18 22:17:09 · 274 阅读 · 0 评论 -
为什么说段页式存储融合了两者的优点
为什么需要进行分段:页太小没有整体的含义段页式的由来:分页:cpu拿到的逻辑地址,页号+页内偏移,好处是提高了内存利用率,极大地减少了内存碎片分段:cpu拿到的逻辑地址:段号+段内偏移,与分页不同的是,段表中可以定义一个段的基地址和段大小 好处是,方便于程序运行,例如一个程序跑起来,可以划分为一个主进程,一个栈,还有数据段,以及动态链接等段页式:对于分段,当指定了段大小后,我们如果一次性将内存进行分配,那么内存利用率可能过低。 所以最自然而然的方法是,一块一块的分配,其实也.原创 2020-05-25 14:14:44 · 654 阅读 · 0 评论