![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 94
Monster7559
这个作者很懒,什么都没留下…
展开
-
进程与线程间通讯
进程间通信:相同主机下:管道、信号量、共享内存、消息队列不同主机下:套接字用ipcs查看消息队列,共享内存,信号量管道:半双工,数据只能向一个方向流动(1)有名管道:任意两个进程使用(2)无名管道:父子间使用信号量:加一:v操作 代表释放资源 (原子操作)减一:p操作 代表获取资源 值为0 阻塞 (原子操作)Ipcs 查看信号量Ipcr...原创 2019-04-23 17:40:33 · 149 阅读 · 0 评论 -
关于多进程与多线程
1.多进程与多线程的优缺点以及适用情况:(1)进程:从调度执行角度来说进程时一个正在运行的程序进程是处于执行期的程序以及它所管理的资源(如打开的文件、挂起的信号、进程状态、地址空间等等)的总称。注意的是,程序并不是进程,实际上两个或者多个进程不仅有可能执行同一程序,而且还有可能共享地址空间。(2)线程:进程内部的一条执行路径,Linux内核并没有现成的概念,线程是通过一个与其他进程...原创 2019-04-29 19:17:32 · 215 阅读 · 0 评论 -
互斥锁与自旋锁
一:互斥锁:当锁时可用的,调用上锁的API会成功,并且将锁设置为不再可用。当一个进程尝试获取不可用的锁的时候它会阻塞,直到锁被释放。进入临界区时获得锁,退出临界区时释放锁。二:自旋锁:是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。与互斥锁类似,都是为了保护共享资源。互斥锁是当资源被占用,申请者...原创 2019-04-29 19:21:35 · 722 阅读 · 0 评论 -
静态库与动态库
(静态库相当于是提前写好的库并且编译好(即为.o文件)等调用时与源文件的.o问价一同链接生成一个完全连接的可执行目标文件,而动态库只是预先加载了动态库中的符号表)1.静态库(.a):将所有的相关的目标文件打包成一个单独的文件称为静态库,当连接器构造一个输出的可执行文件时,只复制静态库中被应用程序引用的目标模块(1)静态库的优点:方便程序移植,因为可执行程序与库函数再无关系,...原创 2019-04-29 19:27:49 · 231 阅读 · 0 评论 -
堆栈区
一:堆栈区1. 一个由C/C++编译的程序占用的内存分为以下几个部分(1)栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 (2)堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,...原创 2019-04-29 19:37:16 · 3177 阅读 · 0 评论 -
Kmalloc/vmalloc/malloc
kmalloc,vmalloc都基于slab实现区别:1.分配的位置:kmalloc:分配的内存为内核区的ZONE_NORMOL区,该区的大小在3G+16-896区间内,大小有限不适合开辟太大的空间vmalloc:分配的是ZONE_HIGHMEM高端内存区也就是非连续内存区。malloc:分配的是用户空间的堆区数据kmalloc和vmalloc是分配的是内核的内存mal...原创 2019-08-02 15:10:43 · 611 阅读 · 0 评论