Linux
文章平均质量分 77
ENSHADOWER
明天是复杂的漫游
展开
-
Linux下的权限问题
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁能通过何种方式对文件和目录进行访问和操作。文件或目录的访问权限有三种:只读、只写、可执行。Linux下有两种用户:超级用户(root用户)、普通用户。超级用户:可以在Linux系统下做任何事情,不受限制。超级用户的命令提示符是 ‘#’ 普通用户:在Linux系统下做权限范围内的事情。普通用户的命令提示符是 ‘$’ 。...原创 2018-10-04 18:44:47 · 1900 阅读 · 0 评论 -
Linux:线程之线程控制
一个程序在运行时,会被加载到内存成了进程。如果一个进程需要做很多的事情,那么为了提高进程的工作效率,会找一些"小弟"来替代进程做一些事情,这个"小弟"就是线程。 进程在创建的时候需要创建资源、创建PCB,所以进程也就是承担分配资源的实体,而线程就是进程给线程分配的资源,让线程去执行。 由此我们可以区别一下进程与线程:进程拥有资源,并且拥有分配资...原创 2018-12-10 13:42:13 · 307 阅读 · 0 评论 -
Linux:信号详解
信号,这在生活中是非常常见的,比如说红绿灯、手机铃声等。所谓信号就是在人或事情感受到这个元素产生以后会做出相应的处理动作,这就是信号。而在我们Linux下,什么是信号呢?信号的基本概念: 1.定义:信号更多的是通知事件的发生。信号产生之后第一时间也不是直接处理而是先存储下来。 信号实际是一个软中断。【软中断是...原创 2018-11-08 21:48:19 · 1451 阅读 · 0 评论 -
Linux:可重入函数与不可重入函数
可重入函数 一个函数在执行的过程中被打断,然后会再被从头执行一次,执行完后,再回来把刚才没执行完的部分执行完。这就相当于嵌套的执行了。函数是公共代码,这样的执行是允许的。函数的执行可以被打断,打断之后还可以再从头执行,执行完后接着执行刚才没有执行的代码,然后第一次执行的代码(被打断的函数)执行结果还是正确的。也就是说,这个函数执行,无论中间把这个函数再嵌入执行多少遍,怎么嵌入...原创 2018-11-10 13:44:27 · 969 阅读 · 1 评论 -
理解文件系统及软硬链接
在我们存储文件时,文件的属性和数据是分开存放于文件系统中的,通过下图我们可以简单理解一下文件系统。理解文件系统: 文件系统中包括:超级块、inode节点表-、数据区创建一个新文件主要有四个操作:1.存储属性: 内核先找到一个空闲的inode节点,内核把文件信息记录到其中。2.存储数据: 该文件需要存储在某几个磁盘块中...原创 2018-10-30 13:22:52 · 314 阅读 · 0 评论 -
Linux:进程间通信之管道通信详解
在学习进程的时候,我们了解到了进程的独立性:进程之间是相互独立的,每个进程有自己的虚拟地址空间,并且虚拟地址空间通过页表的映射,映射到属于自己的物理内存上。并且各个进程之间互相不影响,执行自己的代码。 但是正因为进程的独立性,所以导致进程间进行数据通信将变得非常麻烦。操作系统为了使进程间能够通信,会提供一个介质能够让多个进程都能访问。也就是在内存上开辟一块公共资...原创 2018-10-31 16:20:09 · 1703 阅读 · 0 评论 -
Linux下模拟实现一个微型shell
首先我们先看一下shell的运行过程: shell从用户读入字符串"ls",并建立一个新的进程,在那个进程中运行ls程序并等待那个进程结束。然后shell读取新的一行输入,建立一个新的进程,在这个进程中运行程序并等待这个进程结束。 所以我们要写一个微型shell,需要循环以下过程: 获取终端输入。 解析输入(按空格解析到一个一个的命令参数)。 创建...原创 2018-10-20 18:14:11 · 349 阅读 · 0 评论 -
Linux进程地址空间
在学习C语言对函数调用的时候,我们曾经提到过一个所谓的内存空间,也就是程序地址空间。进程地址空间 首先我们要明白一个概念:什么是地址? 地址是指向内存区域的一个编号,每一个进程都有4G的进程地址空间,但是我们知道,现在的电脑内存一般来说也就8G左右,这样的话是不是就等于一台电脑只能运行两个进程呢,这个显然看起来不太对。 程序运行时的地址空间...原创 2018-10-16 11:59:23 · 921 阅读 · 1 评论 -
Linux进程浅析(上)
操作系统 在说进程之前,我们先要了解操作系统的相关概念。 一、操作系统的概念:任何计算机系统都包含一个基本的程序集合,称为操作系统,笼统的理解,操作系统包括:内核(进程 管理、内存管理、文件管理、驱动管理)其他程序(例如shell程序等等)。 ...原创 2018-10-09 15:36:47 · 206 阅读 · 0 评论 -
Linux下shell命令
Linux严格意义上说的是一个操作系统,我们称之为“核心(Kernel)”,但我们一般用户并不能直接使用kernel,而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel进行沟通。 shell译为“外壳”,它是包裹在linux内核外层的,一个可通过一系列的linux命令对操作系统发出相关指令的人机界面。shell可以通过其条件语句和循环语句等...原创 2018-10-06 16:31:20 · 647 阅读 · 0 评论 -
Linux下gcc命令详解
GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理C语言。GCC 很快地扩展,变得可处理 C++。后来又扩展为能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection)。 gcc命令下各选项的...原创 2018-10-06 15:56:14 · 34649 阅读 · 0 评论 -
Linux下echo命令
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。此外,也可以直接在文件中写入要写的内容。echo命令常用的两个选项: -n 和 -e -n : 表示输出之后不换行。 -e : 表示对于转义字符按对应的方式进行处理。 (若不加-e ,那么在输出时转义字符会按照普通字符进行处理,并不会达到自己想要...原创 2018-10-04 19:42:31 · 29030 阅读 · 2 评论 -
Linux:实现一个简单的线程池
线程池一、定义:线程池是一种线程使用模式。二、目的:线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。三、应用场景:需要大量的线程来...原创 2019-08-07 18:00:13 · 354 阅读 · 0 评论