
Linux随笔
文章平均质量分 77
chenkaixin_1024
这个作者很懒,什么都没留下…
展开
-
Linux下find命令浅析
在Linux下,find命令主要是用来在目录结构中搜索文件,而且是对硬盘进行实时的搜索,并执行指定的操作。而且Linux给予find许多的搜索条件选项,而也正因为这些条件选项的存在,find这一命令十分的强大。原创 2017-03-29 22:30:19 · 403 阅读 · 0 评论 -
网络基础总结
TCP/IP协议是一组协议,这些协议组成TCP/IP协议簇,TCP/IP协议自上到下,分四层:应用层,传输层,网络层,网络接口层(链路层)后三层由操作系统内核完成,用于处理通信细节;对于应用层则是由用户进程完成,处理应用进程细节对于不同的协议层,对数据包有不同的称谓:传输层----段,网络层----数据报,网络接口层(链路层)----帧对于OSI协议七层模型,从上到下分别为原创 2017-07-04 11:25:46 · 348 阅读 · 0 评论 -
TCP/IP下三层协议----网络接口层与网络层
一.网络接口层(链路层):①以太网帧格式:其中目的地址和源地址均是网卡地址(MAC地址),对于每个设备都是唯一的,ifconfig ---->HWaddr即是我们的MAC地址;而对于类型字段,可以有三种值:0800---IP,0806----ARP,8035----RARP;而对于帧末尾则是我们的CRC校验码以太网帧的数据长度最小为46字节,最大为1500字节,也就是封装上原创 2017-07-04 11:43:10 · 8270 阅读 · 0 评论 -
TCP/IP协议下三层协议(二)----传输层协议
1.UDP用户数据报协议首先,说明UDP的几个主要特点:①UDP是无连接的;②UDP尽最大努力交付,但不保证数据可靠性;③UDP是面向报文的;④UDP没有拥塞控制(网络出现拥塞状况并不会导致源主机的发送速率降低);⑤UDP支持一对一,一对多,多对一与多对多的交互通信;⑥首部开销小;UDP的数据段格式很简单,它的报头是定长(因此UDP协议报头信息中无需加入原创 2017-07-04 11:50:12 · 5608 阅读 · 0 评论 -
进程间通信(一)-----管道
进程间通信的本质:让不同的进程看到一份公共的资源(由于进程之间相互独立,有各自不同的地址空间,所以对于一个进程中的数据,在其他进程中是看不到的,虽然这在一定程度上保证了进程间的独立性,但若两个进程之间想要进行通信,则必须借助内核,在内核中开辟一块缓冲区,两个进程均能看到这块缓冲区,让一个进程将数据从进程的地址空间拷到内核缓冲区中,再由另外一个进程从内核缓冲区中读数据,放到自己的地址空间当中)下原创 2017-07-18 23:45:18 · 439 阅读 · 0 评论 -
进程间通信(二)----消息队列
首先,什么是消息队列?消息队列是System V下的IPC通信机制,消息队列提供了一种从一个进程向另一个进程发送一个具有类型的数据块的方法,我们可以通过消息队列避免管道的同步和阻塞问题,但是同管道一样,消息队列也存在长度的限制,每个数据块的大小具有限制,同时每个消息队列的长度也存在限制对于IPC的通信机制(包括消息队列,共享内存,信号量),内核都为其维护了一个IPC对象数据结构struct i原创 2017-08-31 14:05:04 · 218 阅读 · 0 评论 -
进程间通信(三)---- 信号量
信号量的本质是一种数据操作锁,本身不具有数据交换的功能,而是通过控制其他的共享资源(如共享内存)来实现进程间通信,其本身只是一种外部资源的标识,负责保证进程间通信的同步与互斥机制生命周期不随进程,随内核(与消息队列类似),也存在两个命令ipcs -s(查看系统中的信号量);ipcrm -s semid(释放指定信号量)所谓同步与互斥机制,互斥表示对于某一公共资源(也叫临界资源),在原创 2017-08-31 14:07:11 · 374 阅读 · 0 评论 -
进程间通信(四)---- 共享内存
共享内存机制是IPC机制中最快的通信方式,允许不同的进程访问同一块物理内存,通过这块内存进行进程间通信,进程的地址空间中有一部分称为共享区,而共享内存机制则是利用了这一部分的虚拟地址,通过使用共享区的虚拟地址,通过页表,MMU进行映射到某一物理内存上,而这块物理内存也通过同样的方法,被另一个进程所看到,这样就能进行进程间通信由于共享内存机制可以直接通过正常的访问物理内存的方式(地址空间上的虚拟原创 2017-08-31 14:09:25 · 271 阅读 · 0 评论 -
浅谈Linux下信号
一.前台进程与后台进程前台进程在shell下运行时(如:./a.out),shell无法运行其他的进程;后台进程在shell下运行时(如:./a.out &),shell可以运行其他进程Ctrl+C,Ctrl+Z等组合键仅可以对前台进程起作用,对于后台进程无效(本质上组合键控制进程均会被解释成信号)ps aux | grep -ER './test'这条命令可以用来查看当前运行的进程(原创 2017-08-31 14:19:06 · 257 阅读 · 0 评论 -
一个特殊的信号---- SIGCHILD
这里重点提一下SIGCHLD信号(17号信号),对于父进程而言,一般要对它的子进程进行等待,以防止子进程变为僵尸进程,而导致内存泄漏问题,但是对于父进程的等待方式存在两种:阻塞式等待和非阻塞式等待,可以通过wait和waitpid这两个系统调用来实现,对于父进程而言,阻塞式等待让父进程停下自己手头上的事情,专心的等待子进程退出,这严重影响了父进程的工作;而对于非阻塞式等待,父进程每隔一段时间都要轮原创 2017-08-31 14:21:01 · 6754 阅读 · 1 评论 -
路由算法与收敛路由原理
当两台主机在不同的局域网内,它们之间要进行通信,必然要经过路由器,而当一个数据包达到路由器时,路由器会获取这个数据包的目的IP地址,而通过查看路由器的路由表,路由器会判断将这个数据包送往何处首先对于路由表,当中的每一行表示一个路由条目,我们的路由表是由若干个路由条目组成,每个路由条目当中包含了目的网络地址Destination,下一跳地址Gateway,子网掩码Genmask,Flags(Fl原创 2017-06-30 17:52:12 · 8184 阅读 · 0 评论 -
NAT技术与代理服务器
一.NAT技术NAT技术也叫网络地址转换技术,是一种私有地址转换成合法IP地址的技术,要了解他之前,首先得了解什么是私有地址,什么是合法IP地址,其次为什么要引入这样的技术。①私有地址和合法IP地址如果组建一个局域网,其中的IP地址仅用于局域网内部通信,而不能直接连到Internet外网上的话,那么这些IP地址就是局域网的私有IP地址,理论上所有IP地址均可作为私有IP地址,但是RFC原创 2017-06-28 16:29:36 · 654 阅读 · 0 评论 -
Linux下文件的权限
首先,对于Linux我们需要明确一点: Linux下一切皆文件。原创 2017-03-22 22:35:16 · 552 阅读 · 0 评论 -
Linux下粘滞位
我们已经知道对于一个文件,存在文件拥有者,文件所属组以及其他用户,而且这三者对于文件而言,都有可能有读,写,可执行三种权限,而且在Linux下,这些权限也只是常见的基本权限,除此之外,还存在特殊权限。原创 2017-03-30 13:04:40 · 390 阅读 · 0 评论 -
Linux下进程及其描述task_struct
在谈进程之前,我们先说一说程序:在Linux下,我们想生成一个C程序,必定要通过预处理,编译,汇编,链接这四步,才能得到一个可执行文件也就是我们的C程序,而对于我们操作系统而言,要运行一个磁盘上保存的二进制可执行文件,要进行哪些操作呢?原创 2017-04-13 14:43:45 · 426 阅读 · 0 评论 -
关于Linux操作系统层次结构分析
本文转自http://www.jb51.net/LINUXjishu/214104.html首先来看一张图(这是Linux操作系统的大致层次结构):最内层是硬件,最外层是用户常用的应用,比如说firefox浏览器,evolution查看邮件,一个计算流体模型等等。硬件是物质基础,而应用提供服务。但在两者之间,还要经过一番周折。 还记得Linux启动。Linux首先启动内核转载 2017-04-13 14:59:58 · 7644 阅读 · 0 评论 -
关于系统调用fork()
一、fork入门知识一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同转载 2017-04-13 17:51:36 · 605 阅读 · 0 评论 -
模拟实现shell---“支持重定向功能”
首先,在开始本篇博文之前,我们先得了解什么是shell?我们都知道用户是通过操作系统来对我们的硬件或者软件进行操作的,但是我们平时在使用计算机的时候并没有直接与操作系统进行交流,具体关于操作系统的管理软硬件的层次结构参考前面的文件:http://blog.youkuaiyun.com/chenkaixin_1024/article/details/70158065而在Linux下我们会通常通过终端输入原创 2017-05-29 22:52:38 · 905 阅读 · 0 评论 -
线程互斥锁与死锁
在多线程编程中,由于线程间共享地址空间与大部分资源,而当多个线程同时访问共享数据的时候,就很有可能会发生冲突导致错误。如下对于一个共享的全局变量进行累加,线程1与线程2均分别做累加5000次操作:#include#includeint g_a=0;void* funtest(void* arg){ int i=0; for(;i<5000;i++) { int t原创 2017-06-15 22:05:15 · 852 阅读 · 1 评论 -
生产者消费者模型
对于生产者消费者模型,必须满足以下三点:3种关系:生产者与生产者之间互斥,消费者与消费者之间互斥,生产者与消费者之间互斥且同步2种角色:生产者,消费者1种交易场所原创 2017-06-18 17:33:31 · 357 阅读 · 0 评论 -
Linux下线程理解
线程,在操作系统当中这是一个相当重要的概念,线程的存在是为了解决在一个进程当中执行多个执行分支的任务,举一个很简单的例子:当你在用某个下载软件的时候,相当于你在运行该进程,而你在通过该软件进行下载时,很明显你在同一时间并不是只能进行一个下载任务,而且你在下载的时候,你可以使用键盘,鼠标来执行其他任务,而这些任务都是在同一个进程中在跑,这就是多线程的强大之处。原创 2017-06-10 18:17:31 · 341 阅读 · 0 评论 -
终端,作业控制,守护进程
进程组:每个进程有唯一一个进程组ID(PGID),而每一个进程组都有一个组长进程(即进程组ID对应的进程),而组长进程可以创建一个进程组,对于一个进程组而言,只要这个进程组中有一个进程存在,那这个进程组就存在,与组长进程是否存在并没有关系作业:Shell分前后台控制的不是进程,而是进程组/作业,一个前台作业可以由多个进程组成,而一个后台作业同样也是如此,但对于Shell来说,只能同时运行一个前原创 2017-08-31 14:24:03 · 277 阅读 · 0 评论