linux
chan0311
这个作者很懒,什么都没留下…
展开
-
Linux下的粘滞位
1 什么是粘滞位粘滞位,又称粘着位,是Unix文件系统权限下的一个旗标,最常见的用法是在目录上设置粘滞位。也只能针对目录设置,针对文件无效。设置了粘滞位后,只有目录文件的所有者或者root才可以删除或移动该文件。实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。原创 2017-04-06 22:57:08 · 351 阅读 · 0 评论 -
IPC之—信号量
什么是信号量信号量的实质就是计数器,用来统计临界资源数。这个计数器的值为0或1,称为,二元信号量,二元信号量是用来保护临界资源的。 临界资源:不同进程能够看到的一份公共的资源,且一次仅允许一个进程使用的资源称为临界资源。 临界区:临界区是一段代码,在这段代码中进程将访问临界资源,当有进程进入临界区时,其他进程必须等待,有一些同步的机制必须在临界区段的进入点和离开点实现,确保这些共用资源被互斥所获原创 2017-06-10 20:39:59 · 489 阅读 · 0 评论 -
IPC之—共享内存
什么是共享内存共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。在Linux中,每个进程都有自己的P C B 和地址空间,并且都有一个对应的页表,负责将进程的地址和物理地址进行映射,通过MMU来管理。创建一段共享存储区(临界资源),被映射到不同进程的地址空间内,从而原创 2017-06-10 22:31:56 · 662 阅读 · 1 评论 -
inode号与软硬链接
1什么是inode理解inode要从文件存储说起 文件存储在硬盘上,硬盘的最小存储单元叫做扇区(sector)。每个扇区存储512字节(相当于0.5kb) 操作系统读取硬盘的时候,不会一个一个扇区的读取,这样效率太低,而是一次性读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的”块“,是文件存储的最小单位。“块”的大小,最常见的是4kb,即连续八个sector组成一个blo原创 2017-08-06 18:03:28 · 554 阅读 · 0 评论 -
Linux下的目录及一些重要命令
进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.我们知道Linux下一切皆文件,所以说一个目录当然也是文件,一个文件的权限有三种,分别是 r w x 读,写,和 执行权限。 那如果文件没有了这几个权限?我们还能够对它进行增删查(cd, touch, ls, rm, mv等)操作码?下面我们来看一下具体的操作。 说明需要原创 2017-11-11 21:26:21 · 315 阅读 · 0 评论 -
进程基础
1.什么是进程?进程的概念:程序的一个执行实例,正在执行的程序。简单来说,比如你打开了一个APP这就是一个进程,在Linux系统下,在命令行一个ls的命令也是一个进程。从内核的角度来说,进程是担当分配系统资源(CPU时间,内存)的实体。2.怎么描述进程进程的所有信息都放在一个叫做进程控制块的数据结构中,称它为PCB。Linux操作系统下的PCB称为task_struct。 每一个进程都有一个tas原创 2017-11-28 22:09:31 · 193 阅读 · 0 评论 -
Linux实现进度条
Linux实现简单的进度条功能进度条,就是我们下载东西时出现的那个%**的那个长条。 那我们该如何去实现它呢?考虑一下,首先有一个逐渐增加的东西,肯定要循环了,然后百分比。但是要怎么一直持续的变化这个百分比呢,就需要用到一个函数 fflush();这个函数就是来刷新缓冲区的。缓冲方式行缓冲 ‘\n’就是行缓冲的标志全缓冲 如果把结果输出到文件中就是默认的全缓冲。 我们要知道,prin原创 2017-04-07 16:32:22 · 342 阅读 · 0 评论 -
Linux下模拟实现shell
include<stdio.h>#include<unistd.h>#include<sys/types.h>#include<sys/stat.h>#include<sys/fcntl.h>#include<sys/wait.h>int main(){ while (1) { printf("[test@nihao test]$ ");原创 2017-05-28 17:38:36 · 307 阅读 · 0 评论 -
Linux下软件安装的几种方式
yum工具yum list 列出所有可用rpm包资源 搜索某个包: yum search ‘keywords’或 yum list |grep ‘keywords’ yum 安装包: yum install -y filename(包名) yum 卸载包: yum remove -y filename (包名) yum 升级包: yum update -y filename(包名原创 2017-12-15 23:39:35 · 1983 阅读 · 0 评论 -
常见操作系统面试题
进程线程的区别: 1. 进程是资源的分配和调度的一个独立单元,而线程是CPU调度的本单元 2. 同一个进程可以包含多个线程,并且线程共享整个进程的资源(寄存器,堆栈,上下文)一个进程至少包含一个线程。 3. 进程的创建调用fork或者 vfork,而线程的创建调用pthread_create(),进程结束之后他所有的线程销毁都会销毁,而线程的结束不会影响该线程中其他的线程结束 4...原创 2018-04-02 21:03:29 · 205 阅读 · 0 评论 -
IPC之—消息队列
什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为是有一个类型,接收者今晨会二手的数据块可以有不同的类型值。我们可以通过发送消息来避免命名管道的同步和阻塞问题。消息队列与管道不同的是,消息队列是基于消息的,而管道是基于字节流的,且消息队列的读取不一定是先入先出。消息队列与命名管道有一样的不足,就是每个消息队列的最大长度是有上限的,每个消息队列的总子节数是有原创 2017-06-07 21:47:14 · 937 阅读 · 0 评论 -
IPC之---管道
进程间通信———管道什么是进程间通信进程间通信(IPC,Interprocess communication)是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息。这使得一个程序能够在同一时间里处理许多用户的要求。因为即使只有一个用户发出要求,也可能导致一个操作系统中多个进程的运行,进程之间必须互相通话。举个例子来说,也就是说用一些方法让两个本来不能见面的原创 2017-06-02 17:41:50 · 588 阅读 · 0 评论 -
Linux下文件的权限问题和文件的三个时间
Linux下文件的权限问题1:文件的访问者分类:文件拥有者(user),文件所属组,其它。 2:文件的基本权限:读(r),写(w),执行(x),(-)代表没有这个权限。在Linux下,在一个目录下的文件用命令 ll 可以查看文件的权限,如下图 可以看到file1文件前面是-rw-rw-r–,第一个字符是文件类型,剩下的三个一组依次为拥有者权限,所属组权限,其它人权限,三个字符依次为读,写,执原创 2017-03-23 22:40:48 · 645 阅读 · 0 评论 -
Linux下的atexit函数
1.为什么会有atexit函数很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束、在程序的某个地方用exit() 结束程序、用户通过Ctrl+C或Ctrl+break操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理。方法就 是用atexit()函数来注册程序正常终止时要被调用的函数,也就是说它就是用来调原创 2017-04-30 15:58:02 · 483 阅读 · 0 评论 -
僵尸进程和孤儿进程
什么是孤儿进程和僵尸进程孤儿进程:一个父进程退出,而他的一个或多个子进程还在运行,那么那些子进程将会成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对他们完成状态收集工作。僵尸进程:一个子进程在其父进程还没有调用 wait() 或 waitpid() 的情况下退出。这个子进程就是僵尸进程。模拟实现僵尸进程 还有一种情况就是父进程不断地创建子进程 僵尸进程的解决方法子进原创 2017-04-30 18:31:58 · 305 阅读 · 0 评论 -
find指令
find指令是Linux下一个非常强大的指令,可以在任何目录任何文件下执行。所以它的选项也非常多,下面介绍一下它的一部分比较常用的选项。原创 2017-04-06 21:34:05 · 362 阅读 · 0 评论 -
vim的配置
1.什么是vimvim是Linux下一种常用的编译器,但是和VS相比,它确实有点low了,但是呢,我们可以通过配置,把它变的和VS一样好用。下面就介绍一下简单的配置。2.vim的简单配置在root下,你可以在etc目录下找到一个vimrc文件,里面就写着vim的配置,如下图 我们配置就在当前用户下就好,在普通用户下输入命令 cd~/ 然后你可以看一下当前目录下有没有一个 .vimrc 文件,ll原创 2017-04-08 17:49:08 · 435 阅读 · 0 评论 -
Linux下的进程控制块task_struct结构体
1.什么是进程进程的两个基本元素是程序代码(可能被执行相同程序的其它进程共享)和代码相关联的数据集。进程是一种动态描述,可以看看成是在内存中正在进行的程序,但是并不代表所有的进程都在运行。(进程在内存中因策略或调度需求,会处于各种状态)广义上,所有的进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。2.进程控制块每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,原创 2017-04-18 00:27:39 · 762 阅读 · 1 评论 -
Linux下的文件描述符与文件指针及其区别
文件描述符在Linux系统中一切皆文件。如果要对某个设备进行操作,就不得不打开此设备文件,只要你打开文件就会获得该文件的文件描述符fd(file discriptor),这个文件描述符就是一个整数。每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针。 如下图所示。 图中,文件描述符即为文件描述原创 2017-05-28 15:54:27 · 2801 阅读 · 0 评论 -
Linux下死锁的调研
线程的同步与互斥同步: 按照特定顺序访问临界资源,在互斥基础上实现。 互斥:对临界资源的访问时串行式的。每次只能有一个线程访问。 对于多个线程的访问,访问冲突的问题是很普遍的,解决的办法是引入互斥锁,获得锁的线程可以完成“读-修改-写”三步操作组成原子操作,要么都执行,要么不执行,不会执行的中间被打断,也不会再其他处理器上并行做这个操作。 互斥锁本身也是临界资源,如何保护这份临界资源呢,原创 2017-06-18 00:23:17 · 219 阅读 · 0 评论 -
初识多线程
线程的概念线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致原创 2017-06-06 21:02:50 · 502 阅读 · 0 评论 -
生产者消费者模型
生产者-消费者问题,也叫做缓存绑定问题(bounded-buffer),是一个多进程同步问题。 即有两个进程:制造少和消费者,共享一个固定大小的缓存 制造商的工作是制造一段数据,放进缓存,如此重复。 消费者一次消费一段数据,从缓存中取出。 要保证不让制造商在缓存还是满的时候仍要向内写数据,不让消费者试图从空的缓存中取出数据。 问题分析:要避免多个生...转载 2018-06-10 20:25:02 · 402 阅读 · 0 评论