操作系统
文章平均质量分 91
weixin_41318405
此人不懒,什么都留下了
展开
-
Linux探索之旅 |Vim岂是池中物,宝剑锋从磨砺出
作者 谢恩铭公众号「程序员联盟」(微信号:ProgrammerLeague )原文:http://www.jianshu.com/p/2f9ab65776d4《Linux探索之旅》全系列内容简介前言安装VimVim的各种编辑模式基本操作(移动,写入,保存,等等)标准操作(复制,粘贴,撤销,等等)高级操作(分屏,合并,查找,等等)配置Vim总结第五部分第二课预告1. 前言上一课是 Linux探索之旅...转载 2018-04-22 19:19:56 · 400 阅读 · 0 评论 -
信号
此处信号和我们之前讲的信号量没有半毛钱关系;什么是信号呢?信号就是通知一个进程发生了什么事件,然后让这个进程停下当前操作,去处理事件。处理完毕之后接着在执行。信号实际上可以归为进程间通信的一种方式(比如僵尸进程形成的原因,子进程结束给父进程发送信号)。在Linux下面系统定义的信号:kill -l从图中我们可以看到有62个信号(其中没有32和33)其中1~31是非可靠信号(...原创 2018-11-25 12:58:31 · 157 阅读 · 0 评论 -
信号捕捉 、pause函数和SIGCHLD信号
一、信号捕捉信号捕捉针对于自定义的函数处理信号方式。信号递达调用这个函数称为捕捉信号。发生信号并不是立即处理的,而是找合适的机会,这个机会就是从内核态切换到用户态的时候处理信号。用户态切换到内核态的方式:(1)系统调用(2)程序异常(3)软件中断信号捕捉流程顺序见下图: 二、pause函数调用pause函数回事进程挂起,直到有信号递达。如果信号的处理动作是终止进程,则进...原创 2018-11-25 13:42:24 · 495 阅读 · 0 评论 -
线程安全 —— 互斥锁
一、 线程安全 线程安全:多个线程执行流对临界资源的不安全争抢操作。常见临界资源有全局变量和静态变量。 我们知道栈是保证一个执行流独立运行的基本条件,所以线程有自己独立的栈空间。大部分情况下线程使用的变量都是局部变量,变量的地址空间在线程栈空间内。这种情况下,一个变量属于单线程,其他线程无法获得这种变量。但是有些时候,我们需要一些变量在多个线程之间...原创 2019-01-20 20:46:29 · 355 阅读 · 0 评论 -
CentOS 7.0关闭默认防火墙启用iptables防火墙
转载:https://www.linuxidc.com/Linux/2015-05/117473.htm操作系统环境:CentOS Linux release 7.0.1406(Core) 64位CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤。1、关闭firewall:systemctl stop firewalld.service #停...转载 2019-01-23 16:28:48 · 130 阅读 · 0 评论 -
程序地址空间 为什么存在虚拟地址空间
当一个程序加载到内存,操作系统会给他分配自己的虚拟地址空间。虚拟地址空间主要分为两部分,分别是内核空间和用户空间。在Linux下内核空间一般是1G大小,用户空间4G大小。内核空间是所有的进程共享,随时准备处理系统调用和异常的操作。用户空间是每一个进程独立的部分,同时保证了虚拟地址空间的独立性,通过mm_struct结构体进行描述,用户空间下的每个段都是通过vm_area_struct结构体描述。一...原创 2019-03-15 11:44:23 · 2396 阅读 · 1 评论 -
银行家算法
死锁避免——银行家算法的应用背景要想说银行家,首先得说死锁问题,因为银行家算法就是为了死锁避免提出的。那么,什么是死锁?简单的举个例子:俩人吃饺子,一个人手里拿着酱油,一个人手里拿着醋,拿酱油的对拿着醋的人说:“你把醋给我,我就把酱油给你”;拿醋的对拿着酱油的人说:“不,你把酱油给我,我把醋给你。”于是,俩人这两份调料是永远吃不上了。这就是死锁。那么,为啥这个算法叫银行家算法?因为这个...转载 2019-04-28 16:13:02 · 231 阅读 · 0 评论 -
进程的状态与转换
进程在其生命周期内通常进程有以下三种状态:1) 运行状态:进程正在处理机上运行。在单处理机环境下,每一时刻最多只有一个进程处于运行状态。2) 就绪状态:进程已处于准备运行的状态,即进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行。3) 阻塞状态,又称等待状态:进程正在等待某一事件而暂停运行,如等待某资源为可用(不包括处理机)或等待输入/输出完成。即使处理机空闲,该进程也不能运行...转载 2019-04-19 11:33:45 · 1249 阅读 · 0 评论 -
I/O接口库函数和系统调用I/O接口函数
访问文件方式(1)C库I/O函数;(2)系统调用I/O函数1、C文件I/O接口库函数标准C对I/O的概念进行抽象,对于C程序,所有的I/O操作就是移进、移出字节的事情,这种字节流被称为流。可以形象的认为流就是文件。C库函数读取、写入流基本都是完全缓冲,因为I/O函数和磁盘打交道速度太慢,所以就有了一个缓冲区,当缓冲区被塞满的时候,一起打包放入到文件或者设备。这就是完全缓冲。1.文件常量...原创 2018-11-06 12:47:35 · 489 阅读 · 0 评论 -
动态链接和静态链接
我们知道程序执行主要分为四步:预处理、编译、汇编和链接。预处理主要完成去注释、展开头文件、宏替换和条件编译。编译主要负责词法分析、语法分析、语义分析、源代码优化,生成目标代码、目标代码优化。生成汇编文件。汇编主要完成把我们的代码转化为机器可以识别的二进制代码。链接主要负责加载我们所引用的库代码。因为环境变量的存在,才使得程序知道所要链接的动态库或者静态库在哪。链接:分为静态链接和动态链接...原创 2019-04-19 00:16:21 · 637 阅读 · 0 评论 -
Linux条件变量pthread_cond_wait函数为什么需要一个互斥锁
条件等待是线程间同步的一种手段,如果只是一个线程,条件不满足,那么会一直等待,造成死等。所以需要另外的线程改变条件,显然这个条件是共享变量,需要被保护。所以需要互斥锁来保护条件的改变,所以可以设计出一下代码:pthread_mutex_lock(&mutex);while(条件错误){ pthread_mutex_unlock(&mutex); pthrea...原创 2019-05-20 19:57:53 · 1610 阅读 · 2 评论 -
进程间通信
一、进程间通信背景进程之间是相互独立的,而且每个进程都有自己独立的虚拟地址空间,所以进程间通信就相当的困难。但是我们可以创建一个公共的资源,让进程访问这一块公共资源来实现进程间通信。二、为什么进程间通信(1)通知事件:我们之前讲过的僵尸进程就是一个通知事件。子进程结束,要给父进程返回自己退出的原因。(2)数据传输:进程之间要互相传输数据。(3)资源共享:进程之间共享同样的资源。...原创 2018-11-24 23:30:21 · 185 阅读 · 0 评论 -
文件系统的简单理解
一、文件系统简单介绍一个磁盘分区就有一个文件系统,否则文件就在磁盘扇区,所以操作系统管理多个文件系统。文件系统是不可以线性分配磁盘块的,如下图:文件系统如果再来一个更大的文件比文件3还大,要存储到文件系统中,可是文件系统存储空间不够,这时只能吧不用的文件删除,比如删除文件1,可是还是存储不进去,因为存储空间不连续,所以这种线性分配磁盘块设计不合理;所以引出下面文件系统。常见文件系统种类有E...原创 2018-11-17 22:04:47 · 416 阅读 · 0 评论 -
linux吐核详解——详解coredump
谢谢大神,把吐核原因分析的很清楚,先转载部分,原文在这里 详解coredump。https://blog.csdn.net/tenfyguo/article/details/8159176 五,coredump产生的几种可能情况 造成程序coredump的原因有很多,这里总结一些比较常用的经验吧: 1,内存访问越界 a) 由于使用错误的下标,导致数组访问越界。 b)...转载 2018-09-09 23:12:08 · 4471 阅读 · 0 评论 -
操作系统概念
一、定义操作系统是一个用户和计算机的接口,同时也是计算机硬件和软件的接口。操作系统主要包括:(1)内核,主要用于进程管理,文件管理,内存管理,驱动管理(2)应用程序二、功能操作系统功能就两字:管理三、设计操作系统目的(1)管理软硬件资源,与硬件交互(2)给用户提供一个良好的执行环境四、怎么管理(1)将对象描述起来,结构体(2)组织被管理对象,链表或者其他...原创 2018-09-23 20:19:25 · 3596 阅读 · 0 评论 -
什么是进程
一、进程概念(进程又称为任务)(1)哲学(^_^)概念:进程就是一个正在执行的程序,进程存在于内存,一个可执行程序从在于磁盘被操作系统执行时加载到内存执行(2)我们的理解:进程就是一个正在执行的程序,它的属性被包含在一个叫进程控制块的数据结构中(PCB),PCB就是进程属性的集合,而在Linux操作系统中PCB是task_struct注:task_struct只是PCB的一种,和我们之...原创 2018-04-22 11:56:11 · 1454 阅读 · 0 评论 -
umask命令 和 man手册内容
一、umask 当我们启动linux操作系统创建一个目录或者文件都有默认的(可读、可写和可执行)权限。其实最初创建的文件权限是由文件创建掩码决定的,用户每次登入系统,umask命令就会被执行,并且自动设置掩码限制文件权限。当然用户可以在执行umask设置新的文件权限掩码。 umask与chmod恰好相反,umask设置的是文件掩码,而chmod设...原创 2018-05-06 17:27:29 · 323 阅读 · 0 评论 -
Linux和Windows下的sleep与usleep的区别
一、sleep(1)头文件在windows下头文件:#include<windows.h>在Linux下的头文件:#include<unistd.h> //unistd.h是Linux系统编程中最重要的文件,包含了操作系统为程序员提供的API(应用程序接口)(2)功能执行程序挂起指定的秒数,参数单位为秒二、usleep(1)头文件该函数不...原创 2018-09-22 10:06:15 · 6318 阅读 · 0 评论 -
Linux下的重要目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp
(1)/proc 只存在内存当中,而不占用外存空间,在此目录下可以查看当前操作系统都有哪些进程(ls /proc),如下图(2)/bin 存放使用者最长用的命令,如:cp、ls、cat,等等。(3)/usr/usr 我们用到的应用程序的文件几乎都存放这个目录下:/usr/X11R6存放X_Window的目录;/usr/bin存放着许多应用程序;...原创 2018-09-22 13:55:59 · 187 阅读 · 0 评论 -
处理机调度:调度的概念、时机、切换、过程以及调度方式和基本准则
调度的概念1. 调度的基本概念在多道程序系统中,进程的数量往往多于处理机的个数,进程争用处理机的情况就在所难免。处理机调度是对处理机进行分配,就是从就绪队列中,按照一定的算法(公平、髙效)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。处理机调度是多道程序操作系统的基础,它是操作系统设计的核心问题。2. 调度的层次一个作业从提交开始直到完成,往往要经历以下三级调度,如图...转载 2018-03-16 00:33:03 · 3092 阅读 · 0 评论 -
readelf命令,为什么cgdb调试的时候必须要加上-g选项
readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表示那些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。 这个程序和objdump提供的功能类似,但是它显示的信息更为具体,并且它不依...原创 2018-03-16 00:11:00 · 216 阅读 · 0 评论 -
进程创建方式以及对比
一、进程概念进程概念:进程就是正在执行的一个程序;(哲学)正确理解进程概念:操作系统主要是一款搞管理的软件,他通过驱动程序间接管理硬件,当然,他也会管理进程,既然是管理,那么我们需要先描述,然后在组织。描述进程,进程信息被放在一个进程控制块的数据结构中,可以吧进程控制块理解为进程属性的集合,其实这个进程控制块就是PCB,在Linux中就是task_struct。在这个阿结构体内部就是详细对...原创 2018-10-23 23:27:04 · 280 阅读 · 0 评论 -
进程程序替换(execl、execlp、execle、execv、execvp、execve)
当使用fork创建子进程采用写时拷贝,所以在任何一个进程不发生变化的情况下,它们都是共享虚拟内存空间的代码段和数据段,但是如果一方发生变化,那么就需要重新复制一份虚拟内存空间,供发生变化的一方进行修改。就比如程序替换,正因为fork之后子进程和父进程代码完全相同,但是我们可能需要让子进程和父进程执行不同的代码,所以就有了程序替换。程序替换原理就是修改程序的代码段和数据段,所以当发生程序替换的时候,...原创 2018-11-05 11:35:19 · 809 阅读 · 0 评论 -
shell脚本语言四大剑客
一、cut指令使用方式:cut [-d -f ] [filename]常用参数介绍:-d :自定义分隔符,默认为制表符。 -f :与-d一起使用,指定显示哪个区域。1、cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。2、如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。二、sed指...原创 2019-07-11 17:09:29 · 326 阅读 · 2 评论