
Linux基础
柴犬小丸子
To be best you
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
fork源码总结
在Linux系统下,fork()的实现是通过调用clone()实现的,这一调用通过不同的参数来指明父子进程之间需要共享的资源。其中fork、vfork、_clone库函数都是通过系统调用clone(),然后再由clone调用do_fork()实现。dofork()完成了创建的大部分工作,定义在kernel/fork.c中。首先定义一个task_struct类型的指针p,每个进程在内...原创 2019-02-26 22:41:33 · 1647 阅读 · 0 评论 -
进程间通讯之信号量
信号量的定义及原理原子操作:不可中断的一个或者一系列操作,即要么做要么不做临界资源: 各进程采取互斥的方式,实现共享的资源称作临界资源。一次只能被一个进程使用PV操作:P用于等待,V用于发送信号P(s):s如果大于0就给减一,如果等于零,则挂起该进程的执行V(s):如果有其他进程因等待s而被挂起,就让它恢复运行,如果没有进程因等待s而挂起,就给它加1信号量的定义...原创 2019-08-11 21:11:29 · 234 阅读 · 0 评论 -
进程间通讯之管道(PIPE和FIFO)
管道的定义管道是一种两个进程间单向通信的机制,因为管道传递数据的单向性,所以我们也称他为半双工管道。管道分为无名管道与命名管道管道的特点数据只能从一个进流出到一个进程流入(一个读端,一个写端);如果需要进行双工通信,那么就需要两个管道 无名管道,只能在父子进程之间进行通讯,只能用于有亲缘关系的进程之间通讯。管道的命令cmd1|cmd2 操作符是:”|”,它只能处理经由前...原创 2019-08-11 17:58:32 · 541 阅读 · 0 评论 -
同步异步与阻塞非阻塞
很多人一开始盲目的认为同步就是阻塞,异步就是非阻塞。其实这是错误的,首先我们先要区分开同步并非阻塞,异步并非非阻塞。同步和异步关注的是消息通信机制。同步所谓同步就是,当发出一个“调用”地时候,在没有得到结果前,该调用就不会返回,但是一旦返回,就会有返回值。也就是说必须一件一件的做事情,直到当前事件处理完成,才能做下一件事。异步而异步的概念与同步刚好相反,即当发出一个“调用”后,...原创 2019-08-20 16:18:50 · 484 阅读 · 0 评论 -
系统调用与库函数的区别
首先说一下用户态和内核态执行代码时,系统处于用户态,执行内核代码时处于内核态。系统调用:我们可以理解是操作系统为用户提供的一系列操作的接口(API),这些接口提供了对系统硬件设备功能的操作。这么说可能会比较抽象,举个例子,我们最熟悉的 hello world 程序会在屏幕上打印出信息。程序中调用了 printf() 函数,而库函数 printf 本质上是调用了系统调用 write() 函数,实...原创 2019-08-24 10:27:16 · 1538 阅读 · 0 评论 -
守护进程
一、什么是守护进程守护进程(Daemon Process),也就是通常说的 Daemon 进程(精灵进程),是 Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。 守护进程是个特殊的孤儿进程,这种进程脱离终端,为什么要脱离终端呢?之所以脱离于终端是为了避免进程被任何终端所产生的信息所打断,其在执行过程中的信息也不在任...原创 2019-08-13 17:34:21 · 155 阅读 · 0 评论 -
Linux系统中重要的命令
一、硬盘和内存方面的相关指令1.dfdf命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计,可以用来查看磁盘已被使用了多少空间和剩余多少空间。// 命令参数:df -a:--all,显示所有的文件系统,包括虚拟文件系统。 df -B:--block-size,指定单位大小。比如1k,1m等。 df -h:--human-readable,以人们易读的GB、MB、K...原创 2019-07-27 17:26:38 · 183 阅读 · 0 评论 -
select poll epoll的区别
使用I/O复用的场景(1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。 (4)如果一个服务器即要处理TCP,又要处理UDP,一般要使用I/O复用。(5)如果一个服务器要处理多个服务或多个...原创 2019-07-21 15:46:38 · 165 阅读 · 0 评论 -
多进程与多线程的区别
进程:一段正在执行的程序线程:进程内部的一段执行路径 或执行序列多进程与多线程的区别进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时...原创 2019-07-21 15:41:59 · 978 阅读 · 0 评论 -
Linux内核并发机制之自旋锁
在Linux中保护临界区最常见的技术就是自旋锁。在同一时刻,只有一个线程能获得自旋锁。其他企图获得自旋锁的任何线程将一直尝试(即自旋),直到获得该锁。 实际上,自旋锁建立在内存区中的一个整数上,任何线程进入临界区之前必须检查该整数,如果这个数为0,那么线程将这个数设置为1,然后进入临界区,如果这个数字非0,则该线程继续检查该值,直到他为0。 自旋锁的缺点:在锁外面的线程以忙等待的...原创 2019-07-24 20:03:29 · 242 阅读 · 0 评论 -
进程间通讯之消息队列
消息队列的定义消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。而且每一个数据块都被认为含有一个类型,接受进程可以独立的接受含有不同类型值的数据块。消息队列是消息的链接表,存放在内核中并由消息队列标识符标识。可以通过发送消息来完全避免命名管道的同步和阻塞问题。但与管道一样,每个数据块都有一个最大长度的限制,系统中所有队列包含的所欲数据块的总长度也有一个限度。消息队列的特点消...原创 2019-08-12 15:57:16 · 219 阅读 · 0 评论