- 博客(9)
- 收藏
- 关注
原创 小结小结
1.管道为什么是半双工 2.原子锁,互斥锁(总线加锁),读写锁? 3.quickSort的优化,插入排序嵌套,递归变成循环,对轴的选择。 4.共享内存的实现原理,内存地址映射到一块相同的物理内存。 5.写时拷贝 6.进程和线程的区别 被其它线程读写。5.线程的并发性。6.系统开销,线程进程创建销毁的开销进程线程切换的效率大小不同,进程的效率是线
2017-10-13 21:16:53 310
原创 杂记小结
1.管道的大小有默认值65536个字节,即是2的16次方,而与tcp相比较,都是字节流,管道的大小可以通过fcntl函数来修改 全双工的管道socketpair 并行性:两个及多个事件同一时刻发生 并发性:两个或多个事件在同一时间间隔内发生 对象:是指现实世界中具有相同属性,服从相同规则的一系列事务的抽象 2.提高服务器的性能 1.分布式,何为分布式
2017-10-13 21:07:09 273
原创 锁小结
锁(程序员的自我修养,liunx) 同步与互斥: 同步:对多个相关进程在执行次序上进行协调,使并发指向的诸进程之间能按照一定的规则共享系统资源,并能很好的相互合作,从而来保证程序的执行可再现性 互斥:一个时间段内,只能有一个进程访问这个资源,资源的排他性。区别与同步,诸进程间可以无序访问 信号量和互斥锁的区别: 互斥量值只
2017-10-13 21:03:54 388
转载 函数的调用方式小结
#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0))) //表明asmlinkage是通过栈来传递参数而不通过寄存器来传递参数 #define fastcall __attribute__((regparm(3))) //参数不是通过栈传递,而是直接放到寄存器里,被调用函数直接从寄存器取参数 缺省的时候是通过寄
2017-10-13 21:01:54 288
转载 虚拟地址映射小结
32位----两级页表映射 段寄存器16位,其中低两位表示的是在权限,内核态,用户态。第底三位表示的是GDT,LDT,其余十三位用来表示在GDT中的偏移 GDT中的段描述项,表示基址32位,P位-是否在内存中,还有表示读写可执行权限 64字节 CR3中存储--PGD地址 MMU中: 页目录项--页面表--物理页面 页目录项,20位表示下一层的页面地址 最低位P位表示所映
2017-10-13 21:00:03 640
原创 进程切换小结
谁在调用schedule进行该进程的调度: 进程在运行中,会有几种情况发生中断,第一就是在时钟中断,进入中断处理程序,调用schedule,第二返回用户空间的时候ret_from_sys_call时进行检查是否该调度了。exit函数和sleep这些函数则主动调用schedule schedule中进行进程的切换,只能是由进程在内核中主动调用,或者在当前进程从系统空间返回用户空
2017-10-13 20:58:43 912
原创 fork剖析小结
fork是完全复制 clone则是将资源有选择的复制给子进程,没有复制的资源通过指针的复制让子进程共享,其中的flag用户可以进行设置来进行选择复制共享 vfork 除了task_struct结构和系统空间堆栈以外的资源全部都通过数据结构复制的继承 子进程复制了父进程当前的寄存器值,将子进程加入到进程调度的就绪队列,父子进程拥有相同的页表,然后映射到相同的物理页
2017-10-13 20:54:02 325
原创 动态内存分配小结
malloc/calloc/free是库函数,在底层使用系统调用进行内存申请,自己添加了中间层进行管理,brk,sbrk,mmap,munmap是系统调用.申请的是虚存mmap 映射匿名页, 当发生缺页异常时, linux 内核为缺页分配一个新物理页,并将该物理页清 0对空闲的小内存块只会在 malloc 和 free 的时候进行合并主分配区与非主分配区用环形链表进行管理。 每一个分配区利用互斥锁
2017-10-13 20:48:09 434
原创 引用与指针
引用与指针的区别: 1.引用同指针的底层一致,引用的底层就是指针 2.引用必须初始化,且不能被NULL初始化,初始化后绑定此对象不能再被改变。指针可以不初始化,可以被NULL初始化,且可以改变指向其他的对象 3.引用和指针对于sizeof,自增自减等运算符的不同 4.引用比指针更加安全,引用不能为NULL,引用必须初始化等特点#include //对于引用是否有内存空间的验证 using
2017-10-07 18:41:20 291 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人