操作系统/linux
知之可否
这个作者很懒,什么都没留下…
展开
-
Linux进程间通信
我们在Linux信号基础中已经说明,信号可以看作一种粗糙的进程间通信(IPC, interprocess communication)的方式,用以向进程封闭的内存空间传递信息。为了让进程间传递更多的信息量,我们需要其他的进程间通信方式。这些进程间通信方式可以分为两种:管道(PIPE)机制。在Linux文本流中,我们提到可以使用管道将一个进程的输出和另一个进程的输入连接起来,从而利用文件转载 2016-04-12 11:01:40 · 589 阅读 · 0 评论 -
简述Linux内存分配--伙伴系统 原理
Linux内存分配——伙伴系统目的:最大限度的降低内存的碎片化。原理:1.将内存块分为了11个连续的页框块(1,2,4,8....512,1024),其中每一个页框块中用链表将内存块对应内存大小的块进行链接。2.若需要一块256大小的内存块,则从对应的256链表中查找空余的内存块,若有则分配。否则查找512等等。3.若在256中未找到空余内存块,在512中查转载 2016-08-15 09:31:16 · 2662 阅读 · 0 评论 -
Linux的IO调度
之前蘑菇街电话面试的时候面试官问我IO调度算法有哪些,之前没留意过这个东西,记录一下:) 对于普通的机械硬盘,我们完成一次IO读写的流程从硬盘的物理结构上来说是,机械硬盘的存储介质是磁盘,磁头在盘片上移动进行磁道寻址,行为类似播放一张唱片。这种结构的特点是,顺序访问时吞吐量较高,但是如果一旦对盘片有随机访问,那么大量的时间都会浪费在磁头的移动上,这时候就会导致每次IO的响应时间变长转载 2016-08-29 22:06:23 · 2690 阅读 · 0 评论 -
linux sed 批量替换多个文件中的字符串
一、linux sed 批量替换多个文件中的字符串sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`例如:替换/home下所有文件中的www.bcak.com.cn为bcak.com.cnsed -i "s/www.bcak.com.cn/bcak.com.cn/g" `grepwww.bcak.com转载 2016-08-29 20:58:42 · 1101 阅读 · 0 评论 -
高效编程之互斥锁和自旋锁的一些知识
两种锁的加锁原理互斥锁:线程会从sleep(加锁)——>running(解锁),过程中有上下文的切换,cpu的抢占,信号的发送等开销。自旋锁:线程一直是running(加锁——>解锁),死循环检测锁的标志位,机制不复杂。两种锁的区别互斥锁的起始原始开销要高于自旋锁,但是基本是一劳永逸,临界区持锁时间的大小并不会对互斥锁的开销造成影响,而自旋锁是死循环检测,加锁全转载 2016-08-01 23:23:14 · 725 阅读 · 0 评论 -
多线程编程中条件变量和虚假唤醒(spurious wakeup)的讨论
多线程编程中条件变量和虚假唤醒的讨论 1. 概述 条件变量(condition variable)是利用共享的变量进行线程之间同步的一种机制。典型的场景包括生产者-消费者模型,线程池实现等。 对条件变量的使用包括两个动作: 1) 线程等待某个条件, 条件为真则继续执行,条件为假则将自己挂起(避免busy wait,节省CPU资源); 2) 线程执行某些处理之后,条件成立;则转载 2016-08-01 23:10:19 · 1382 阅读 · 0 评论 -
网络IO之阻塞、非阻塞、同步、异步总结
1、前言 在网络编程中,阻塞、非阻塞、同步、异步经常被提到。unix网络编程第一卷第六章专门讨论五种不同的IO模型,Stevens讲的非常详细,我记得去年看第一遍时候,似懂非懂,没有深入理解。网上有详细的分析:http://blog.csdn.net/historyasamirror/article/details/5778378。我结合网上博客和书总结一下,加以区别,加深理解。转载 2016-08-03 16:50:22 · 509 阅读 · 0 评论 -
diff
如果两个文件相似度很高,那么上下文格式的diff,将显示大量重复的内容,很浪费空间。1990年,GNU diff率先推出了"合并格式"的diff,将f1和f2的上下文合并在一起显示。它的使用方法是加入u参数(代表unified)。 $ diff -u f1 f2显示结果如下: --- f1 2012-08-29 16:45:41.000000000转载 2016-07-30 15:09:39 · 404 阅读 · 0 评论 -
Linux(Ubuntu)下MySQL的安装与配置
在Linux下MySQL的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕。今天,需要在Linux下用Qt连接MySQL。遂安装配置了一把。 1)首先检查系统中是否已经安装了MySQL 在终端里面输入 sudo netstat -tap | grep mysql 若没有反映,没有显示已安装结果,则没转载 2016-07-06 10:20:35 · 312 阅读 · 0 评论 -
linux下使用select实现精确定时器
在编写程序时,我们经常回用到定时器。本文讲述如何使用select实现超级时钟。使用select函数,我们能实现微妙级别精度的定时器。同时,select函数也是我们在编写非阻塞程序时经常用到的一个函数。首先看看select函数原型如下:int select(int nfds, fd_set *readfds, fd_set *writefds, fd_转载 2016-07-11 22:13:01 · 792 阅读 · 0 评论 -
find命令
find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。find的使用格式如下: $ find - : 所要搜索的目录及其所有子目录。默认为当前目录。 - : 所要搜索的文件的特征。 - : 对搜索结果进行特定的处理。如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。转载 2016-06-06 14:40:29 · 442 阅读 · 0 评论 -
写时复制
现在我们应该明白了,Linux下是如何执行新程序的,每当有进程认为自己不能为系统和拥护做出任何贡献了,他就可以发挥最后一点余 热,调用任何一个exec,让自己以新的面貌重生;或者,更普遍的情况是,如果一个进程想执行另一个程序,它就可以fork出一个新进程,然后调用任何一 个exec,这样看起来就好像通过执行应用程序而产生了一个新进程一样。事实上第二种情况被应用得如此普遍,以至于Linux专转载 2016-06-05 17:17:10 · 1260 阅读 · 0 评论 -
VirtualBox 共享文件夹设置 及 开机自动挂载
以上资料是从网上摘录的,对于“开机自动挂载”模块,我试了好多遍都以失败告终,大部分网络资料都是说在 /etc/fstab 文件中追加 VirtualBox虚拟机文件夹共享挂载命令 “ sharing /mnt/share vboxsf defaults 0 0 ”,其实是错误的,因为系统调用fstab的时候,Virtualbox的共享目录的模块还没有加载,所以每次加载都会失败,最终的解决方案如下转载 2016-06-05 16:27:33 · 4533 阅读 · 2 评论 -
Linux软连接和硬链接
1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。【硬连接】硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的转载 2016-06-07 21:28:45 · 393 阅读 · 0 评论 -
Linux文件权限
Linux用户分为:拥有者、组群(Group)、其他(other)Linux系統中,预设的情況下,系統中所有的帐号与一般身份使用者,以及root的相关信息, 都是记录在/etc/passwd文件中。每个人的密码则是记录在/etc/shadow文件下。 此外,所有的组群名称记录在/etc/group內!--图A转载 2016-05-20 19:47:43 · 277 阅读 · 0 评论 -
Linux 的僵尸(zombie)进程
原文地址http://coolshell.cn/articles/656.html可能很少有人意识到,在一个进程调用了exit之后,该进程 并非马上就消失掉,而是留下一个称为僵尸进程(Zombie)的数据结构。在Linux进程的5种状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所 有内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其转载 2016-05-26 09:19:45 · 8294 阅读 · 0 评论 -
操作系统常见面试题
本文转载自:http://blog.sina.com.cn/s/blog_6ce9e8870101iqyz.html在一篇文档中看到这样的问题总结,与大家分享! 1.什么是进程(Process)和线程(Thread)?有何区别?进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的转载 2016-05-25 16:48:03 · 374 阅读 · 0 评论 -
几个常用的操作系统进程调度算法
一、先来先服务和短作业(进程)优先调度算法1.先来先服务调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入转载 2016-04-12 11:11:15 · 647 阅读 · 0 评论 -
进程间传递文件描述符--sendmsg,recvmsg
UNIX域套接字可以在同一台主机上各进程之间传递文件描述符。下面先来看两个函数:[cpp] view plain copy #include #include ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags); ssiz转载 2016-10-09 17:51:51 · 651 阅读 · 0 评论