
操作系统
文章平均质量分 61
Sharp_UP
自信加努力造就成功!
展开
-
Linux 信号之mysleep
一、 用alarm和pause实现sleep(3)函数,称为mysleep。 1. main函数调用mysleep函数,后者调用sigaction注册了SIGALRM信号的处理函数sig_alrm。2. 调用alarm(seconds)设定闹钟。3. 调用pause等待,内核切换到别的进程运行。4. seconds秒之后,闹钟超时,内核发SIGALRM给这个进程。5.原创 2017-05-08 17:49:00 · 819 阅读 · 0 评论 -
线程互斥
一. mutex (互斥量) 1、 多个线程同时访问共享数据时可能会冲突,这跟前⾯面讲信号时所说的可重⼊入性是同样的问题。⽐比如 两个线程都要把某个全局变量增加1,这个操作在某平台需要三条指令完成:1). 从内存读变量值到寄存器2). 寄存器的值加13). 将寄存器的值写回内存 例子:我们在“读取变量的值”和“把变量的新原创 2017-03-25 01:02:16 · 496 阅读 · 0 评论 -
Linux:dup/dup2 文件描述符重定向函数(有图有代码有真相!!!)
一、dup/dup2有时我们希望把标准输入重定向到一个文件,或者把标准输出重定向到一个网络连接。系统调用dup和dup2能够复制文件描述符。dup返回新的文件文件描述符(没有用的文件描述符最小的编号)。dup2可以让用户指定返回的文件描述符的值,如果需要,则首先接近newfd的值,他通常用来重新打开或者重定向一个文件描述符。1、dup函数dup函原创 2017-06-07 16:44:55 · 2279 阅读 · 0 评论 -
Linux:shell脚本命令: >/dev/null 2>&1 的理解
1、可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用. 禁止标准输出. 1 cat $filename >/dev/null # 文件内容丢失,而不会输出到标准输出. 禁止标准错误. 2>/dev/null 这样错误原创 2017-07-02 03:43:57 · 1527 阅读 · 1 评论 -
Linux: 系统配置 crond 和 crontab(有图有代码有真相!!!)
1、相关概述linux下工作调度的种类有:at , cron 一种是例行性的,就是每隔一定的周期来办某事。一种是突发性的,就是做完这一次没有以后。crontab这个命令所设置的工作将会一直循环进行下去,循环的时间可以是分钟、小时、每周、‘每月、每年等,crontab除了命令执行外,也可以编辑/etc/crontab来支持,而crond就是让crontab生效的服务。2、原创 2017-07-11 17:18:32 · 805 阅读 · 0 评论 -
LInux:shell 命令:字符串截取
1、cut命令截取使用说明cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。主要参数-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。-c :以字符原创 2017-07-11 18:06:36 · 2862 阅读 · 0 评论 -
LInux:shell 彩色进度条实现(有图有代码有真相!!!)
一、进度条原理(以前的博客详细讲述过):http://blog.youkuaiyun.com/sharp_up/article/details/55506555二、颜色设置// 字体颜范围(前景颜色):30~39 30:黑31:红 32:绿 33:黄 34:蓝色 35:紫色 36:深绿 37:白色 // 字背景颜色范围(背景颜色):40~49原创 2017-07-02 18:47:26 · 2624 阅读 · 0 评论 -
Linux: I/O多路转接之poll(有图有代码有真相!!!)
一、poll()函数解析不同与select使⽤用三个位图来表⽰示三个fdset的⽅方式,poll使⽤用⼀一个 pollfd的指针实现。pollfd结构包含了要监视的event和发⽣生的event, 不再使⽤用select“参数-值”传递的⽅方式。同时,pollfd并没有最⼤大数量限制(但是数量过⼤大后性能也是会下降)。 和select函数⼀一样,原创 2017-06-13 13:19:00 · 831 阅读 · 0 评论 -
Linux: I/O多路转接之epoll(有图有代码有真相!!!)
一、基本概念epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/p原创 2017-06-14 00:10:35 · 595 阅读 · 0 评论 -
Linux: shell命令 eval (有图有代码有真相!!!)
一、eval 命令定义shell中的eval命令将会首先扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。不过这些变量本身并不复杂。eval 命令也可以用于回显简单变量,不一定是复杂变量。功能说明:告知shell取出eval的参数,重新运算求出参数的内容。语原创 2017-06-15 18:24:49 · 1205 阅读 · 0 评论 -
操作系统:虚拟页式存储管理(缺页中断、页面置换算法)
1、基本工作原理1、基本工作原理在进程开始运行之前,不是全部装入页面,而是装入一个或者零个页面,之后根据进程运行的需要,动态装入其他页面;当内存已满,而又需要装入新的页面时,则根据某种算法淘汰某个页面,以便装入新的页面。在使用虚拟页式存储管理时需要在页表中增加一些内容:页号、驻留位(中断位)、内存块号、外存地址、访问号、修改位驻留位:表示该页在外存还是内存;访问位:表示该页在内存期间是否被访问原创 2017-08-21 00:19:31 · 12041 阅读 · 0 评论 -
Linux系统:软链接与硬链接的原理分析
1、相关概念1、索引节点inode(index node):inode就是索引节点,它用来存放档案及目录的基本信息,包含时间、档名、使用者及群组等。inode 是 UNIX/Linux 操作系统中的一种数据结构,其本质是结构体它包含了与文件系统中各个文件相关的一些重要信息。每一个索引节点都是一个表项,包含有关文件的信息(元数据): 文件类型,权限,UID,GID 链接数(指向这个文件名路径原创 2017-08-20 17:52:27 · 1622 阅读 · 0 评论 -
面试题:根据Unix时间戳计算时间
根据Unix时间戳计算时间,不分年月大小,每月三十天,每年按360天计算。开始时间1970/01/01 00:00:00,输入秒数,显示时间思路一:进位,60秒进1分钟,60分进1小时,24小时进1天,30天进1月,12月进1年,依次建立循环while (second > 60) { second -= 60; minute += 1;原创 2017-08-24 21:23:56 · 2300 阅读 · 0 评论 -
Linux高性能服务器编程:进程池和线程池原理及应用(有图有代码有真相!!!)
一、问题引入在前面编写多进程、多线程服务器时通过动态创建子进程和子线程来实现并发服务器,这样做有以下缺点:1)动态创建进程、线程将会比较耗费时间,将导致较慢的客户响应。2)动态创建的子进程只为一个客户服务,将会产生大量的细微进程或线程,进程或线程之间的切换将耗费CPU大量的时间。3)动态创建的子进程是当前进程的完整映像,当前进程必须谨慎管理其分配的文件描述符和堆内存等系统资源,否则原创 2017-06-02 18:13:13 · 557 阅读 · 0 评论 -
Linux:Access time、 Modify time 、Change time 和 find 命令使用解析
一、Access time、Modify time、Change time1、含义:Access:是指“访问时间”对于文件,用编辑器打开file,或使用cat more less grep sed 等等命令读取文件内容,以及使用file cp命令操作文件,或执行可执行文件时,Access时间会被更新,空文件也不例外。对于目录来说,只进入目录不会更新其Access时间,但原创 2017-02-17 11:52:14 · 3628 阅读 · 0 评论 -
Linux:守护进程详解及实现
转载:守护进程其实,linux提供了daemon函数用于创建守护进程,实现原理与上文中介绍的是一样的。#includeint daemon(int nochdir, int noclose);1. daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的程序。2. 当nochdir为0时,daemon将更改进城的根目录为root(“/”)。3. 当转载 2017-05-13 03:51:29 · 828 阅读 · 0 评论 -
Linux:守护进程解析、如何实现守护进程
1、守护进程:守护进程也称精灵进程(Daemon),是运行在后台的⼀一种特殊进程。它独立于控制终端且周期性地执行某种任务或等待处理某些发生的事件。守护进程是⼀一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任 务。比如,作业规划进程crond等。Linux系统启动时会启动很多系统原创 2017-05-13 03:41:53 · 1822 阅读 · 0 评论 -
linux 信号处理函数详解
转自:http://blog.youkuaiyun.com/sddzycnqjn/article/details/72857601. 信号概念 信号是进程在运行过程中,由自身产生或由进程外部发过来的消息(事件)。信号是硬件中断的软件模拟(软中断)。每个信号用一个整型常量宏表示,以SIG开头,比如SIGCHLD、SIGINT等,它们在系统头文件中定义,也可以通过在shell下键入ki转载 2017-05-08 16:05:41 · 902 阅读 · 0 评论 -
线程安全和可重入函数的联系与区别
1、 线程安全:线程安全是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程访问完,其他线程才可以使用。不会出现数据不一致或数据污染。线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。四类线程不安全函数:(1)不保护共享变量的函数(线程不安全):将这类函数转化为线程安全的,相对比较容易原创 2017-05-07 17:21:19 · 556 阅读 · 0 评论 -
信号集操作函数,信号未决、阻塞、递达
转载:信号集操作函数,信号阻塞与未决一,信号集及相关操作函数信号集被定义为一种数据类型:typedef struct { unsigned long sig[_NSIG_WORDS];} sigset_t信号集用来描述信号的集合,每个信号占用一位(64位)。Linux所支持的所有信号可以全部或部转载 2017-05-03 16:51:02 · 797 阅读 · 0 评论 -
死锁产生的原因及条件、如何避免死锁
一、死锁的定义是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造、成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 二、死锁产生的原因(1)因为系统资源不足。(2)进程运行推进的顺序不合适。(3)资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出原创 2017-04-15 21:37:41 · 1142 阅读 · 0 评论 -
线程的控制(创建、等待、终止)、分离线程
一、线程控制1、线程:线程是资源调度的基本单位,线程是进程内部的一个执行流,在进程的地址空间内运行。在Linux 下没有真正意义上的线程,线程是用进程模拟的,又被称为轻量级进程。 2、由于同⼀一进程的多个线程共享同⼀一地址空间。因此Text Segment、Data Segment都是共享的,除此之外,各线程还共享以下进程资源和环境:1). ⽂文件描述符表原创 2017-03-24 20:59:40 · 1772 阅读 · 0 评论 -
粘滞位& File文件内容
t权限(粘滞位):是‘不可删除’权限,就是说即使某用户拥有这个文件的rwx权限,可以随意修改文件内容,但是就是不能删除,甚至不能修改文件名,只有root才行。t权限也可以直接用 chmod o+t/a+t filename 和chmod -t filename 来修改。只针对目录生效,它表示只能让所属主以及root可以删除(重命名/移动)该目录下的文件。比如/tmp目录本来就是任何用户原创 2017-02-21 23:25:22 · 812 阅读 · 0 评论 -
操作系统中常见的进程调度算法
一、调度与调度算法调度:操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(请求)来占用资源。这就是调度。目的是控制资源使用者的数量,选取资源使用者许可占用资源或占用资源,实质是一种资源分配。调度算法:根据系统的资源分配策略所规定的资源分配算法。对于不同的的系统和系统目标,通常采用不同的调度算法。调度算法要求原创 2017-02-19 13:01:56 · 1855 阅读 · 0 评论 -
linux 编辑器vim配置
1、 基本配置对vim进行配置的目的:进行vim配置,可以让我们在后续敲代码更加方便。按F5可以直接编译并执行C、C++代码以及执行shell脚本;按“F8”可进行C、C++代码的调试;“Ctrl + A”为全选并复制快捷键,方便复制代码;按“F2”可以直接消除代码中的空行;F3”可列出当前目录文件,打开树状文件目录;支持代码高亮,自动缩进,显示行号,显示状态行;按“Ctr原创 2017-02-17 11:59:38 · 473 阅读 · 0 评论 -
进程管理—进程描述符(task_struct)
本文章转载自:http://blog.youkuaiyun.com/qq_26768741/article/details/54348586?locationNum=4&fps=1前言当把一个程序加载到内存当中,此时,这个时候就有了进程,关于进程,有一个相关的叫做进程控制块(PCB),这个是系统为了方便进行管理进程所设置的一个数据结构,通过PCB,就可以记录进程的特征以及一些信息。 内转载 2017-02-18 14:10:32 · 2202 阅读 · 0 评论 -
linux :vim 实现命令行下输出进度条
1、 进度条原理:进度条的的动态增长是利用人的视觉短暂停留效果的,不断从输出缓冲区刷新出相同的内容,在肉眼看来进度条在不断的增长。在显示器上先输出[# ][%1]刷新一次之后, [## ][%2],由于刷新很快,看原创 2017-02-17 11:55:24 · 1750 阅读 · 0 评论 -
五种I/O模型详解
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。 例如普通B/S模式(同步):提交请求->等待服务器处理->处理转载 2017-11-10 12:39:03 · 1506 阅读 · 0 评论