关闭

进程组,作业,会话,精灵进程

1. 进程组 每个进程除了有一个进程ID之外,还属于一个进程组。进程组是一个或多个进程的集合。通常,它们与同一作业相关联,可以接收来自同一终端的各种信号。每个进程组有一个唯一的进程组ID。每个进程组都可以有一个组长进程。组长进程的标识是,其进程组ID等于其进程ID。 组长进程可以创建一个进程组,创建该组中的进程,然后终止。只要在某个进程组中一个进程存在,则该进程组就存在,这与其组长进程是否终止...
阅读(226) 评论(0)

死锁的产生和预防死锁

1,死锁的定义:死锁是指多个进 程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。 2,死锁产生的原因主要是: (1) 因为系统资源不足。 (2) 进程运行推进的顺序不合适。 (3) 资源分配不当等。 3,死锁产生的必要条件: (1) 互斥条件:一个资源每次只能被一个进程使用。 (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放...
阅读(163) 评论(0)

线程安全与可重入

线程安全:一个函数被称为线程安全的当且仅当被多个并发线程反复调用时,它会一直产生正确的结果。 任何线程不安全问题的根源都是“共享数据”。所以,不使用任何共享数据的函数(即:可重入函数)肯定是线程安全的。但这并不等于说,线程安全函数就是可重入函数。为什么呢?因为即使有线程有共享数据,线程被并发调用的时候产生的结果可以是正确的。那么这种正确性是如何保证的呢?对,就是通过同步操作。 可重入:当被...
阅读(165) 评论(0)

阻塞信号和捕捉信号

一 阻塞信号 1 概念: 信号递达:实际执行信号的处理动作称为信号递达(Delivery)。 信号未决:信号从产生到递达之间的状态,称为信号未决(Pending)。 进程可以选择阻塞(Block )某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。 注意:阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。 每个...
阅读(928) 评论(0)

Linux中的mmap函数

1,mmap函数功能 mmap函数为内存映射函数。负责把文件内容映射到进程的虚拟内存空间, 通过对这段内存的读取和修改,来实现对文件的读取和修改,而不需要再调用read,write等操作。 注意:mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。mmap在用户空间映射调用系统中作用很大。 2,mmap...
阅读(316) 评论(0)

进程调度算法

一,进程调度的原因 无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。 二,进程调度方式 1. 非抢占式优先权算法 在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成;或...
阅读(409) 评论(0)

我的第一个Linux小程序(进度条)

一,预备知识  在写进度条之前,先要对printf函数有一个更深的理解与认识,看一个简单的程序: (1)运行后先输出“hello world”,再睡眠三秒 (2)去掉\n以后,按照预期,应该先输出hello world,再睡眠3秒,可是结果却是睡眠3秒后再输出hello world,这是为什么呢? 其实呢printf函数是先把内容写到行缓冲区,遇到\n或者是行缓...
阅读(925) 评论(0)

make,makefile和程序的编译链接过程

一,Linux下程序运行过程 1,在一个目录下新建三个文件:main.c hello.c hello.h分别编写他们如下图: 2,想要让这个程序执行起来,就必须对上面的三个文件分别进行编译链接执行,如下图: 通过上面这个过程。我们可以大致总结一下gcc编译器把目标文件经过预处理,编译,汇编,链接生成可执行文件的过程和命令: (1)预处理(宏替换,删除注释和多余的空白字...
阅读(3676) 评论(0)

Centos中vim的配置

一,vim简介    多模式编辑器,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。1、vim的基本概念  基本上vim可以分为三种状态(其实有好多模式,目前掌握这3种即可),分别是命令模式、插入模式和底行模式,各模式的功能区分如下:1) 命令行模式command mode)  控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert ...
阅读(195) 评论(0)

文件名查找指令find

一,文件查找命令        在linux下有相当优异的查找命令。那怎么查找一个文件的存放路径呢?通常我们会用到下面这三个命令:    which  查看可执行文件的位置。    whereis  查看文件的位置。    locate  配合数据库查看文件位置。    find  实际搜寻硬盘查询文件名称。    通常我们先使用前面三个命令来进行查找,如果真的找不到。再使用find命令来查找。因...
阅读(130) 评论(0)

Linux基础(一)

第一部分:计算机1,计算机硬件的五大单元:(1)输入单元:包括键盘,鼠标,扫描仪,手写板等。(2)中央处理器(CPU):含有算术逻辑,控制,记忆等单元。(3)输出单元:显示器,打印机。2,计算机的处理过程:650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/7F/FA/wKiom1czAPHhHTLdAAASWj65LCs555.pn...
阅读(126) 评论(0)

栈求解迷宫问题

求迷宫从入口到出口的所有路径是一个经典的程序设计问题。一般的设计思想就是从入口出发,顺着某个方向向下探索,探索分为上下左右四个方位,哪个方向是通的就将向下走,如果每个方向都走不下去就进行原路“回退”。所以需要一个后进先出的结构来保存从入口到出口的路径。所以运用栈来实现是非常方便的,沿着某个方向走,将每个可通的位置进行入栈标记,再切换到下个位置;如果都不通,则栈顶出栈取消标记,再寻找。下来呢就实现一...
阅读(278) 评论(0)

智能指针和异常

今天让我们来分析一下C++中的智能指针和异常,首先呢先普及一下概念!(1)智能指针:智能或者自动化的管理指针所会向的动态资源的释放。(2)异常:当一个函数发现自己无法处理的错误时,让函数的调用者直接或间接的处理这个问题。(3)RAII:资源分配即初始化。构造函数完成对象的初始化,析构函数完成对象的清理,而不是删除。在实际写代码过程中,我们很容易写出存在异常的代码,不信来看看下面几个例子 :void...
阅读(96) 评论(0)

数组和指针再次来袭

1,数组和指针的定义于声明:定义:只能出现一次,用来确定对象的类型和大小,并为其分配空间。声明:可以出现多次,描述对象的类型,用于指定其他地方定义的对象,不为对象分配空间。所以说extern char a[]与extern char a[10]等价,因为这是声明,不分配空间。看一个关于数组指针的例子:例1:#include int main() { char a[5] = { 'A', 'B',...
阅读(125) 评论(0)

数组和指针

1,一维数组 先看一下一个整型数组关于数组名的表达式在内存中所占的字节数#include #include int main() { int a[] = { 1, 2, 3, 4 }; printf("%d\n", sizeof(a)); //  16  在sizeof中,数组名a不发生降级,代表整个数组 printf("%d\n", sizeof(a+0)); //  4   在sizeo...
阅读(129) 评论(0)
40条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:12793次
    • 积分:194
    • 等级:
    • 排名:千里之外
    • 原创:40篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档