
操作系统
wangle965235568
程序员的眼里,不仅有代码和bug,还有诗与远方和妹子
展开
-
CAS操作实现并发的优势、以及实现一个无锁队列、怎样解决ABA 问题
一、CAS(Compare and set)简介 1.概念:直译:比较和替换。简单来说–>使用一个期望值来和当前变量的值进行比较,如果当前的变量值与我们期望的值相等,就用一个新的值来更新当前变量的值。 2.特点:CAS是一种系统原语也就是所谓的原子操作,由若干条指令完成,用于完成一个功能的过程,原语的执行过程必须是连续的,不允许被中断。CA原创 2017-10-31 23:20:00 · 1592 阅读 · 0 评论 -
**系统调用**
本文只是自己学习总结,当然欢迎大家阅读,要想更好的了解系统调用以及windowsAPI(推荐去看程序员自我修养第12章)系统调用的介绍:简而言之,就是用户写的程序进行调用内核中的方法。 用户程序没有权限直接进行访问多少系统资源的,因为由于系统的有限资源有可能被多个应用进程进行同时访问,所以如果不进行对系统资源的保护,那么各个应用程序难免会产生冲突。所以只能在内核的权限上才能访问系统资源,因为这时已原创 2017-10-22 16:48:45 · 349 阅读 · 0 评论 -
进程之间的通讯之管道
无名管道管道的整体(有名、无名)概念:我们通常把一个进程的输出通过一块内存连接到另外一个进程的输入。特征: 1.半双工通讯方式,同一时刻数据只能单向流动。 2.类似于数据结构中的队列,遵循先进先出的原则。 3.管道中的数据具有一次性,一旦被读走,将被从管道中移除。 4.没有具体的文件名标识,所以只能在父子进程中通原创 2017-10-24 11:59:17 · 303 阅读 · 0 评论 -
linux各种锁机制的使用及区别(浅谈)
linux各种锁机制的使用及区别前言:相信需要了解这方面的知识的小伙伴,已经基本对进程间通信和线程间通信有了一定了解。例如,进程间通信的机制之一:共享内存(在这里不做详解):多个进程可同时访问同一块内存。如果不对访问这块内存的临界区进行互斥或者同步,那么进程的运行很可能出现一些不可预知的错误和结果。接下来我们了解三种常见的Linux下的互斥操作—>锁。1.互斥锁(mutex) 特点:对于读原创 2017-10-26 21:26:41 · 11586 阅读 · 1 评论 -
glibc内存管理ptmalloc底层实现
前言:本文剖析了glibc内存管理ptmalloc的底层实现原理,以及用到的各种数据结构的分析。源码在本文中暂未剖析,接下来会学习。如果你想了解ptmalloc的底层实现,欢迎阅读。 一、基础知识: X86平台Linux进程内存布局 32位模式下进程内存经典布局 32位模式进程默认内存布局 从上图可以看到,栈至顶向下扩展,并且栈是有界的。堆至底向原创 2017-11-27 20:01:50 · 1157 阅读 · 0 评论 -
深入剖析Linux内核IA32体系地址映射
前言:本文来剖析一个虚拟地址到真实的物理地址的映射过程。因为一旦牵扯到内核,则比较令人头疼,有未分析到的或者有误之处欢迎讨论。 我们知道,进程一旦被创建出来,操作系统会给进程分配4G的虚拟地址空间(32位体系),Linux在用户申请内存的时候,只是分配给了它一个线性区(虚拟地址),并没有分配实际的物理内存,只有当用户使用内存的时候,内存才会分配具体的物理页面给用户。我们就来剖析一下这个过程。 基原创 2017-12-07 22:25:26 · 431 阅读 · 0 评论