随笔分类 -  Linux

摘要:进程 系统中程序执行和资源分配的基本单位 每个进程有自己的数据段、代码段和堆栈段 在进行切换时需要有比较复杂的上下文切换线程 减少处理机的空转时间,支持多处理器以及减少上下文切换开销, 比创建进程小很多 进程内独立的一条运行路线 处理器调度的最小单元,也称为轻量级进程可以对进程的内存空间和资源进行访问,并与同一进程中的其他线程共享线程 线程相关的执行状态和存储变量放在线程控制表内 一个进程可以有多个线程,有多个线程控制表及堆栈寄存器,共享一个用户地址空间多线程同步问题 线程共享进程的资源和地址空间 任何线程对系统资源的操作都会给其他线程带来影响线程技术发展 Linux 2... 阅读全文
posted @ 2012-04-05 22:27 Alex_Monkey 阅读(49895) 评论(13) 推荐(14) 编辑
摘要:进程组 一个或多个进程的集合 进程组ID: 正整数 两个函数 getpgid(0)=getpgrp()eg:显示子进程与父进程的进程组id 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <unistd.h> 4 5 int main() { 6 pid_t pid; 7 8 if ((pid=fork())<0) { 9 printf("fork error!");10 }else if (pid==0) {11 printf("The child proces 阅读全文
posted @ 2012-04-03 23:44 Alex_Monkey 阅读(27784) 评论(6) 推荐(12) 编辑
摘要:l信号 对中断机制的一种模拟:异步通信方式任何时候可发给某一进程,无需知道该进程的状态 不可靠信号(非实时信号) 可靠信号(实时信号) 所有可靠信号都支持排队,所有不可靠信号都不支持排队信号生命周期 •信号产生 •信号在进程中注册 •信号在进程中注销 •执行信号处理函数用户进程对信号的响应 执行缺省操作,Linux对每种信号都规定了默认操作 忽略信号,即对信号不做任何处理, 有两个信号不能忽略:SIGKILL及SIGSTOP。 捕捉信号 •定义信号处理函数 •当信号发生时,执行相应的自定义处理函数。四个函数 kill() •发送信号给进程/进程组 ... 阅读全文
posted @ 2012-03-31 19:22 Alex_Monkey 阅读(706) 评论(1) 推荐(0) 编辑
摘要:一. 信号量 l信号量: 解决进程之间的同步与互斥的IPC机制多个进程同时运行,之间存在关联 •同步关系 •互斥关系互斥与同步关系存在的根源在于临界资源 •临界资源是在同一个时刻只允许有限个(通常只有一个)进程可以访问(读)或修改(写)的资源 –硬件资源(处理器、内存、存储器以及其他外围设备等) –软件资源(共享代码段,共享结构和变量等) •临界区,临界区本身也会成为临界资源一个称为信号量的变量 •信号量对应于某一种资源,取一个非负的整型值 •信号量值指的是当前可用的该资源的数量,若它等于0则意味着目前没有可用的资源在该信号量下等待资源的进程等待队列对信号量进行的两个... 阅读全文
posted @ 2012-03-26 13:01 Alex_Monkey 阅读(18961) 评论(2) 推荐(1) 编辑
摘要:一. 管道: 1.只能用于具有亲缘关系的进程之间的通信 2.半双工通信模式 3.一种特殊的文件,是一种只存在于内核中的读写函数管道基于文件描述符,管道建立时,有两个文件描述符:a. fd[0]: 固定用于读管道b. fd[1]: 固定用于写管道创建管道:pipe() 一般步骤:1. pipe()创建管道 2. fork()创建子进程 3. 子进程会继承父进程的管道关闭管道:1. 逐个关闭文件描述符 2. close()eg. 父子进程间的管道通信:父子进程对管道分别有自己的读写通道,把无关的读端或写段关闭。 View Code 1 #include <stdi... 阅读全文
posted @ 2012-03-22 21:41 Alex_Monkey 阅读(4977) 评论(0) 推荐(1) 编辑
摘要:PATH:保存了shell查找命令的目录列表HOME:登录路径特殊的shell变量:$0 获取当前执行的shell脚本的文件名$n 获取当前执行的shell脚本的第n个参数值,n=1..9$* 获取当前shell的所有参数 “$1 $2 $3 …注意与$#的区别$# 获取当前shell命令行中参数的总个数$$ 获取当前shell的进程号(PID)$! 执行上一个指令的PID$? 获取执行的上一个指令的返回值(0 为成功, 非零为失败)这些shell变量可以自己创建、访问、修改shell的内部命令可以显示你定义的所有变量的值一个变量的值域创建它的shell有关,该值不会传递给子shell但可以在 阅读全文
posted @ 2011-11-15 23:23 Alex_Monkey 阅读(267) 评论(0) 推荐(0) 编辑
摘要:1.在编辑器中写出代码,并保存为nv2.chmod +x nv添加执行权限3.当前目录下,执行./nv;或存至/usr/bin,则可以在任何目录下调用特殊变量4.程序输出作为参数用``$#传递脚本的参数个数$*以一个单字符显示所有向脚本传递的参数,与位置变量不同,此选项参数可以超9个$$脚本运行的当前进程ID号$!后台运行最后一个进程的ID号$@与$#相同,但是使用是加引号,并在引号中返回每个参数$-显示shell使用的当前选项,与set命令功能相同$?显示最后命令的推出状态。0表示没有错误,其他任何值表明有错误 阅读全文
posted @ 2011-11-15 11:48 Alex_Monkey 编辑