
操作系统
文章平均质量分 72
Dawn_sf
这个作者很懒,什么都没留下…
展开
-
操作系统 — 虚拟内存和物理内存的区别和联系
虚拟内存和物理内存的区别和联系在计算机的远古时代其实还没有虚存机制,程序指令所访问的内存地址就是物理内存地址. 也就是不得不把程序的全部装进内存当中,然后运行 . .首先我们知道的物理内存其实就是插在计算机主板内存槽上的实际物理内存,CPU可以直接进行寻址. 物理内存的容量是固定的,但是寻址空间却取决于cpu地址线条数,如32位机,则寻址原创 2017-11-27 17:30:10 · 5401 阅读 · 0 评论 -
操作系统 — 线程和fork
线程和fork对于fork相信大家都已经熟悉的不能再熟悉了! 我们最近学习到了线程,我们都知道了新创建的线程可以访问进程的地址空间,并且继承调用线程的浮点环境和信号屏蔽字.线程中都可以访问到进程的分别有: 1.文件描述符表 2.每种信号的处理方式 3.当前工作目录 4.用户id和组id 但是线程的有些资源是每个线程独有的: 1.线原创 2018-01-23 09:17:57 · 1044 阅读 · 1 评论 -
linux — 浅析文件描述符 文件表项 v节点表项
浅析文件描述符 文件表项 v节点表项符文件描述符在Linux编程里随处可见,设备读写,网络通信,进程通信. 可是文件描述符到底是什么? 文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket. 第一个打开的文件时0,第二个是1,以此类推. linux操作系统通常给每个进程能打开的文件数量强加一个限制.文件描述符原创 2018-01-03 15:10:49 · 2528 阅读 · 0 评论 -
操作系统 — 浅析硬链接和软链接
浅析硬链接和软链接上一篇我们了解到文件系统,我们了解到文件系统的结构包括超级块,inode节点,以及数据块, 其中inode节点包含了inode数组,数组当中存在许多的inode节点.然后每一个文件或者目录都有自己对应的inode,其中我们又引出了其中每一个inode的节点当中有一个链接计数,记录连接该inode节点的目录项数. 最后引出两种链接方式! 分别为硬链接和符号链接(软链接)! 下图是...原创 2018-01-14 20:02:08 · 3182 阅读 · 0 评论 -
Linux — IPC进程通信之信号量
IPC进程通信之信号量详解信号量与已经介绍过的IPC机构不同,它是一个计数器,用于为多个进程提供对共享数据对象的访问. 为了获得共享资源,进程需要执行下列操作:(1)测试控制该资源的信号量(2)若此信号量的值为正,则进程可以使用该资源. 在这种情况下,进程会将信号量值减去1,表示它使用了一个资源单位.(3)原创 2017-06-26 16:06:00 · 1318 阅读 · 0 评论 -
操作系统 — 信号量 记录锁 互斥量之间的区别
信号量 记录锁 互斥量之间的区别如果多个进程间共享一个资源,则可以使用这三种技术中的一种来协调访问. 我们可以使用映射到两个进程地址空间中的信号量,记录锁或者互斥量. 对于这三种技术两两之间在时间上的差别进行比较是有益的.若使用信号量,则先创建一个包含一个成员的信号量集合,然后将该信号量的值初始化为1. 为了分配资源,以s原创 2018-01-21 16:56:53 · 1137 阅读 · 0 评论 -
操作系统 — 生产者消费者模型
生产者消费者模型所谓的生产者消费者模型就是一个类似于队列一样的东西串起来,这个队列可以想像成一个存放产品的"仓库",生产者只需要关心这个"仓库",并不需要关心具体的消费者,对于生产者而言甚至都不知道有这些消费者存在. 对于消费者而言他也不需要关心具体的生产者,到底有多少生产者也不是他关心的事情,他只要关心这个"仓库"中还有原创 2018-01-21 15:35:34 · 2871 阅读 · 0 评论 -
操作系统 — 浅析条件变量
浅析条件变量Single UNIX Specification目前定义了条件变量的两个属性:进程共享属性和时钟属性. 条件变量的作用用于多线程之间关于共享数据状态变化的通信. 当一个动作需要另外一个动作完成时才能进行时. 也就是说:当一个线程的行为依赖于另外一个线程对共享数据状态的改变时,这时候就可以使用条件变量.原创 2018-01-23 11:18:04 · 1403 阅读 · 0 评论 -
操作系统 — 文件系统
文件系统在unix文件系统是unix系统的心脏部分,提供了层次结构的目录和文件.文件系统将磁盘空间划分为每1024个字节为一组,称为块(也有用512字节)为一块的.编号从0到整个磁盘空间的最大块数.在unix当中,之前我们在文件描述符 文件表项 v节点表项符当中多次提到了i节点,但是我们想了解i节点就必须了解磁盘空间当中的原创 2018-01-14 16:25:45 · 1845 阅读 · 0 评论 -
Linux — 信号 信号处理和信号处理函数详解(一)
信号处理(一)在Linux下当我们想强制结束一个程序的时候,我们通常会给它发送一个信号然后该进程捕捉到信号,再然后该进程执行一定操作最终被终止.信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应地采取一些行动。通常信号是由一个错误产生的。但它们还可以作为进程间通信或修改行为的一种方式,明确地由一个进程发送给另一个进程。一个信号的产生叫生成,接收到一个信号叫捕获。信原创 2017-07-03 11:49:28 · 19414 阅读 · 1 评论 -
Linux — POSIX 线程基础
线程对于Linux后台程序员来说并不陌生,线程带给我们并发能力的提升,也提高了软件开发和问题定位的难度,本文尝试结合GlibC 代码, 对POSIX的线程做一个简单说明,重点介绍线程的创建,释放和连接上需要注意的问题。多进程和多线程的都只有一个目的,并行处理,提高CPU利用率。相比进程,线程的优势体现在以下几个方面:1.线程创建销毁开销小于进程2.线程上下文切换开销小于进程3....原创 2018-07-29 11:09:07 · 630 阅读 · 0 评论 -
操作系统 — 浅析基于glibc的malloc
浅析基于glibc的mallocLinux的虚拟内存管理有几个关键概念:原创 2018-07-12 15:26:46 · 1084 阅读 · 0 评论 -
原子计数操作 — _syn_fetch_and_add等12个操作
原子计数操作 — _syn_fetch_and_add等12个操作 多线程计数操作,共享状态或者统计相关时间次数,这些都需要在多线程之间共享变量和修改变量,如此就需要在多线程间对该变量进行互斥操作和访问.我们谭老先生早都说过了! ++i 和 i++都是不是原子性的,本质上为三步:1. 从缓存取到寄存器2. 在寄存器中加13. 再存入缓存但是有时候由于...原创 2018-07-16 22:01:14 · 4267 阅读 · 0 评论 -
操作系统 — 了解CPU cache
CPU cacheCache一词源自法语,其原意为"藏匿处,隐藏的地方". Cache被应用于计算机科学之后,专指CPU与主内存之间的存储器高速缓冲器,Cache的出现是为了缓解CPU的存储需求与主内存的存取性能之间越来越大的差距.现代CPU的Cache都是集成在片内的,越靠近CPU流水线的Cache由于需要极其快速的存取速度,只能保持越小的容量,并且单位容量的成本越高.因此,为了进一步缓解需求与...原创 2018-03-11 11:10:13 · 1112 阅读 · 0 评论 -
操作系统 — 协程的简单理解
协程的简单理解协程是一种用户态的轻量级线程, 我们的server的发展如下:IO密集型应用:多进程 -> 多线程 ->事件驱动 ->协程 CPU密集型应用:多进程->多线程 如果说多进程对应多CPU,多线程对应多核CPU,那么事件驱动和协程则是在充分挖掘不断提高性能的单核CPU的潜力. 异步事件驱动模型中,把会导致阻塞的操作转化为一个异步操作,主线程负责发起这个异步操作,...原创 2018-03-10 17:44:43 · 2514 阅读 · 0 评论 -
操作系统 — 浅析信号
浅析信号首先每个信号都有一个名字,这些名字都以3个字符SIG开头.例如,SIGABRT是夭折信号,当进程调用abort函数时产生这种信号.SIGALRM是闹钟信号,由alarm函数设置的定时器超时后将产生这种信号. 信号的种类是非常庞大的. 在头文件<signal.h>中,信号名都被定义为正整数常量(信号编号).实际上,实现将各信号定义在另一个头文件中,但是该头文件又包括在<si...原创 2018-01-18 17:51:04 · 1484 阅读 · 0 评论 -
Linux — 线程安全和可重入函数
线程安全和可重入函数线程安全:一个函数被称为线程安全的(thread-safe),当且仅当被多个并发进程反复调用时,它会一直产生正确的结果。如果一个函数不是线程安全的,我们就说它是线程不安全的(thread-unsafe)。我们定义四类(有相交的)线程不安全函数。第1类:不保护共享变量的函数将这类线程不安全函数变为线程安全的,相对比较容易:利用像P和原创 2017-07-02 16:19:28 · 1004 阅读 · 0 评论 -
操作系统 — 捕捉信号
捕捉信号从上篇浅析信号中我们了解到信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作为软中断. 从它的命名可以看出来它的实质和使用和中断非常相似,所以,信号也可以说是进程控制的一部分.软中断信号用来通知进程发生了异步事件. 进程之间可以互相通过系统调用kill发送软中断信号. 内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件. 注意,信号只是用来通知某进程发生原创 2018-01-19 12:50:57 · 1341 阅读 · 1 评论 -
Liunx — 命名管道
命名管道管道的一个不足之处就是没有名字,因此,只能用于具有亲缘关系的进程间通信,在命名管道提出后,该限制得到克服. FIFO不用于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存储在文件系统中。命名管道是一个设备文件,因此,及时进程与创建FIFO的进程不存在亲缘关系,只要可以访问该路径,就能够通过FIFO相互通信. FIFO按照先进先出原则工作,你先被写入就先被读出.那么问题来了,我们...原创 2017-06-21 11:04:07 · 704 阅读 · 0 评论 -
Linux — 管道与管道间通信详解
管道与管道间通信详解 管道在Liunx中是一个常见的通信工具,管道在我们生活中顾名思义就是传输东西的,而在Linux中管道的工作原理是什么呢?每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中看不到.所以进程之间交换数据必须通过内核,在内核中开辟,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核原创 2017-06-20 18:06:41 · 1212 阅读 · 0 评论 -
Linux — vim的基本使用操作与文件配置
vim的基本使用1.VIM的按键功能展示:“一般模式”的常用按键h向左J向下K向上l向右20h向左20个原创 2017-04-05 08:05:06 · 2551 阅读 · 2 评论 -
Linux — IPC通信之共享内存
共享内存共享内存是三个IPC机制中的一个。它允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在进行的进程之间传递数据的一种非常有效的方式。大多数的共享内存的实现,都把由不同进程之间共享的内存安排为同一段物理内存.具体过程我来画一张图帮助大家更好的理解.首先大家都应该知道我们每一个程序严原创 2017-07-02 13:34:06 · 1716 阅读 · 0 评论 -
Linux — 浅析线程以及多线程的同步与互斥
线程链接:http://blog.youkuaiyun.com/ctthuangcheng/article/details/8914712关于linux线程在许多经典的操作系统教科书中, 总是把进程定义为程序的执行实例, 它并不执行什么, 只是维护应用程序所需的各种资源. 而线程则是真正的执行实体. 为了让进程完成一定的工作, 进程必须至少包含一个线程. 如原创 2017-06-04 23:02:15 · 2639 阅读 · 1 评论 -
Linux — 守护进程
守护进程原创 2017-06-21 17:02:25 · 443 阅读 · 0 评论 -
Liunx — 粘滞位的详细讲解与设置
Linux粘滞位Linux下有一个用于存放临时文件的目录 /temp,每一个用户产生的临时文件都存放在 /temp目录下面,而且每个用户都对于这些文件具有写权限,举个例子,你们校园有一个发帖的地方,假设这里所有人都对帖子都有修改删除的功能,这时候帖子一定乱套了,举个例子A同学学习很好,经常总结发帖,但是A同学和B同学生活上有矛盾,还有C同学嫉妒A同学,这时候A同原创 2017-04-03 16:34:10 · 846 阅读 · 0 评论 -
linux—Assess Modify change时间
Assess Modify change时间首先我创建一个test.c的文件:接下来我使用一下stat命令,可以看到如下现象(注意箭头就是今天的主题):大多数像我一样的新手肯定会疑惑这几个时间是什么意思呢?1.Access:对于文件来说,当我们用编辑器打开file,或使用cat more less grep s原创 2017-03-19 22:24:39 · 739 阅读 · 0 评论 -
linux — 目录中的权限问题
目录中的权限问题linux中权限是一个很重要的知识,今天我们一起来了解目录中的一些简单的权限问题:现在开始,首先我将fiel1目录中的权限全部清除,现在这个目录没有可读可写可执行的权限。现在开始验证,首先从超级用户开始:我们可以看到,在超级用户下就算没有可读可写可执行的权限,但是依旧可以进入目录在目录中创建文件。现在我们切回普通用户:原创 2017-03-22 09:23:18 · 967 阅读 · 2 评论 -
Linux — 进程(一)基础详解
进程转载 2017-04-14 09:36:44 · 3718 阅读 · 2 评论 -
Linux — 浅析环境变量
浅析环境变量环境变量是在操作系统原创 2017-12-09 14:35:44 · 749 阅读 · 0 评论 -
Liunx — 进程等待 (wait和waitpid函数)
进程等待原创 2017-06-20 00:04:08 · 1784 阅读 · 1 评论 -
Linux — 浅析静态库和动态库
浅析静态库和动态库呵呵呵呵原创 2018-01-01 16:05:11 · 799 阅读 · 0 评论 -
操作系统 — 进程的退出(exit)
进程退出我们来认识一下·1原创 2017-12-18 11:43:26 · 10102 阅读 · 1 评论 -
linux — 进程PCB详解
进程PCB详解首先不要提到进程的PCB原创 2017-11-27 15:12:40 · 9242 阅读 · 0 评论 -
Linux — 基本命令的积累(一)
基本命令的积累(一)Linux下常见并且实用的小命令. du, df, top, free, pstack, su, sudo(sudo -, sudo -s), adduser, password原创 2017-11-26 20:19:48 · 392 阅读 · 0 评论 -
Linux — IPC进程通信之消息队列详解
消息队列消息队列与命名管道相比,消息队列的优势在于:1、消息队列也可以独立于发送和接收进程而存在,从而消除了在同步命名管道的打开和关闭时可能产生的困难。2、同时通过发送消息还可以避免命名管道的同步和阻塞问题,不需要由进程自己来提供同步方法。3、接收程序可以通过消息类型有选择地接收数据,而不是像命名管道中那样,只能默认地接收。原创 2017-06-22 22:33:07 · 1494 阅读 · 0 评论 -
Linux — linux下的文件标述符和文件指针
linux下的文件标述符和文件指针原创 2017-05-17 23:15:42 · 1692 阅读 · 0 评论 -
Linux — linux下如果忘记了root密码! Don't worry
如果忘记了root密码 Don't worry 鄙人今天早上原创 2017-12-05 15:26:24 · 1087 阅读 · 2 评论 -
Linux — 孤儿进程和僵尸进程
孤儿进程和僵尸进程当大家看到这两个名字不要感觉linux取名不够友好,等我们了解这两个进程的概念我们就会明白了,现在开始:基本概念:我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个进程完成它原创 2017-06-19 11:58:27 · 1076 阅读 · 0 评论 -
linux — find命令的总结
find命令的总结linux下的find命令在目录结构中搜索文件,并执行指定的操作。linux下的find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项特别特别多。在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间。fi原创 2017-03-27 20:05:27 · 851 阅读 · 0 评论