linux环境
文章平均质量分 80
zhuboke3344
这个作者很懒,什么都没留下…
展开
-
进程间通信——消息队列
一、概念·消息队列提供了一个从一个进程向另一个进程发送一块数据的方法·每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值·消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI)二、IPC对象数据结构内核为每个IPC对象维护一个数据结构struct ipc_...原创 2018-03-27 21:32:26 · 330 阅读 · 0 评论 -
线程——线程控制
库是基于系统调用接口POSIX线程库·与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都是以“pthread_“开头·要使用这些函数库,必须要引入头文件·链接这些线程函数是要使用编译器命令“-lpthread”选项一、创建线程功能:创建一个新的线程原型:参数: thread—返回线程ID attr—设置线程的属性,attr为NULL表示使用默认属性 ...原创 2018-04-16 00:12:58 · 174 阅读 · 0 评论 -
线程——概念
线程:在一个程序里的一个执行路线 线程是一个进程内部的执行序列TCB——线程控制块一个进程至少有一个执行流,一个执行流就是一个线程1、进程和线程·进程是资源竞争的基本单位·线程是程序执行的最小单位·线程共享进程数据,单也有自己私有的数,例:线程ID、独立的上下文(一组寄存器、栈)、errno、信号屏蔽字、调度优先级进程:承担分配基本资源的实体线程:CPU调度的基本单位Linux下的线...原创 2018-04-01 17:10:09 · 252 阅读 · 0 评论 -
权限
Linux下有两种用户:超级用户(Root)、普通用户·超级用户:可以在Linux下做任何事情,不受限制·普通用户:在Linux下做有限的事情·超级用户的命令提示符是“#”,普通用户的命令提示符是“$”命令:su功能:切换用户例:从Root用户切换到普通用户user:su user 从普通用户user切换到Root用户则使用su root,此时系统会提示输入root用户的口令一、文件访问...原创 2018-03-27 23:33:49 · 250 阅读 · 0 评论 -
进程间通信——共享内存
一、概念共享内存:允许两个不相关的进程访问同一个逻辑内存,不同进程之间共享的内存通常为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址。如果某个进程向共享内存写入数据,所做的改动将立即回影响到可以访问同一段共享内存的其他进程。二、共享内存的特点·共享内存是所有进程间通信最快的(直接是用户到用户)·不带互斥与同步机制·生命周期随内核三、函数1、s...原创 2018-04-15 22:46:51 · 275 阅读 · 0 评论 -
线程的同步与互斥
一、mutex(互斥量)·大部分情况,线程使用的数据都是局部变量,变量的地址空间在线程栈空间内,这种情况,变量归属单个线程,其他线程无法获得这种变量·但有时候,很多变量都需要在线程间共享,这样的变量称为共享变量,可以通过数据的共享,完后线程之间的交互·多个线程并发的操作共享变量,会带来问题例:操作共享变量会有问题的售票系统 2 #include<stdlib.h> 3 #incl...原创 2018-04-17 16:30:58 · 149 阅读 · 0 评论 -
进程间通信——信号量
信号量的本质:信号量本身就是一个计数器,衡量临界资源的多少。它本身不具有数据交换的功能,它是通过控制其他的通信资源来实现进程间通信。它本身只是一种外部资源的标识。临界资源:两个进程看到一份公共的资源,但是同时只能被一个进程所使用的资源叫临界资源临界区:每个进程中访问临界资源的那段代码互斥:各个进程都要访问共享资源,但共享资源是互斥的,同时只能有一个进程使用。因此,各个进程之间竞争使用这些资源,j将...原创 2018-04-15 23:28:51 · 161 阅读 · 0 评论 -
线程——生产者消费者模型
在生活中,我们经常去超市买东西,这里涉及到三个事物:我们、超市、供货商我们相当于消费者,超市相当于交易场所,供货商相当于生产者对于生产者消费者模型我们总结为3 2 1原则:·3中关系·2中角色·1个交易场所三种关系:(1)生产者——生产者 假设所有的供货商都生产同一种产品,而超市只能由一家供货商供货,他们之间肯定互相竞争这个名额,那么可想而知他们之间存在着互斥关系 (2)消费者——消...原创 2018-05-02 22:46:38 · 184 阅读 · 0 评论 -
线程——POSIX信号量
system V信号量只能用于进程,而POSIX信号量既可以用于进程也可以用于线程POSIX信号量统计临界资源的计数器POSIX信号量和system V信号量的相同作用:用于同步操作,达到无冲突的访问共享资源目的初始化信号量参数:sem ——要初始化的信号量 pshared——0表示线程间共享,非零表示进程间共享 value——信号量初始值返回值:成功返...原创 2018-05-04 08:53:39 · 284 阅读 · 0 评论 -
读写锁及死锁
一、读写锁有些公共数据修改的机会很少,但其读的机会很多。并且在读的过程中会伴随着查找,给这种代码加锁会降低我们的程序效率。读写锁可以解决这个问题。读写锁本质上是一种自旋锁读者——写者:同步与互斥写者——写者:互斥读者——读者:共享、没关系面试题:为什么消费者与消费者之间是互斥而读者与读者之间是没关系?因为消费者会将数据拿走,而读者只访问不会将数据拿走注意:写独占,读共享,写锁优先级高 ...原创 2018-05-04 10:19:16 · 4346 阅读 · 0 评论 -
进程间通信——管道
一、进程间通信1、本质:让两个不相干的进程看到同一块资源,这个资源肯定是操作系统提供的2、目的 ·数据传输:一个进程需要将它的数据发给另一个进程 ·资源共享:多个进程之间共享同样的资源 ·通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(例如:子进程终止时要通知父进程) ·进程控制:有些进程希望完全控制另一个进程的执行,此时控制进程希望能够拦截...原创 2018-03-25 12:32:16 · 162 阅读 · 0 评论 -
进程程序替换及shell的实现
一、进程程序替换用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往强调一种exec函数执行另一个程序。当进程调用exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动历程开始执行。调用exec并不创建新进程,所以调用exec前后该进程的id并未改变。替换函数#include<stdio.h>int execl(const ...原创 2018-03-24 16:47:01 · 588 阅读 · 0 评论 -
在Linux中安装g++/gdb/vim配置
一、使用命令安装gcc/g++,gbd1、检测Linux中是否有gcc:若有则会出现:若没有则在Linux联网的情况下:2、检测Linux中是否有g++:若有则会出现:若没有出现则在联网的情况下:3、安装gbd:二、原创 2017-11-27 15:48:50 · 490 阅读 · 0 评论 -
Linux基本指令
一、在目录中执行增删查(cd, touch, ls, rm, mv等)命令1、ls指令 语法:ls 目录或文件 功能:列出该目录下的所有子目录和文件2、touch 指令 语法:touch 文件 功能:更改文档或目录的日期时间 常用选项: -a:只更改存取时间原创 2017-12-03 17:02:58 · 183 阅读 · 0 评论 -
vim的使用
一、vim的基本概念(即三种模式)1、正常/普通/命令模式(Normal mode):控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode插⼊入模式(Insert mode)只有在Insert mode下,才可以做⽂文字输⼊入,按「ESC」键可回到命令⾏行模式。该模式是我们后⾯面⽤用的最频繁的编辑模式。1原创 2017-12-03 17:52:45 · 410 阅读 · 0 评论 -
Linux下的gdb调试
对于一个程序员来说,调试是一件非常复杂而又不得不做的事情,因为没有一个程序员可以保证自己一次性写出来的代码是完全正确的。原创 2017-12-06 11:25:01 · 223 阅读 · 0 评论 -
Linux下编写一个简单的进度条
第一步:创建一个名为jindutiao.c的文件第二步:进入文件第三步:在编辑模式下,编辑代码第四步:保存并退出第五步:编辑jindutiao.c在编辑后,会出现a.out文件第六步:执行a.out原创 2017-12-07 09:24:30 · 264 阅读 · 1 评论 -
进程的概念
一、基本概念 ·课本概念:程序的一个执行实例,正在执行的程序等。 ·内核观点:担当分配系统资源(CPU时间、内存)的实体。二、描述进程 ·进程信息被放在一个叫进程控制块的数据结构中,可以理解为进程属性的集合。 ·课本上称为PCB,Linux操作系统下的PCB是:task_struct。1、task_struct-PCB的一种 ·在Linux中描述进程的结构体叫task...原创 2018-03-17 18:06:19 · 177 阅读 · 0 评论 -
进程状态及优先级
一、进程的各种状态1、R运行状态(runing):并不意味着进程一定在运行中,它表明进程要么在运行要么在运行队列里2、S睡眠状态(sleeping):意味着进程在等待着事件完成3、D磁盘休眠状态(Disk sleep):有时候也叫不可中断睡眠状态,在这个状态的进程通常会等待I/O的结束4、T停止状态(stopped):可以通过发送SIGSTOP信号给进程来终止(T)进程。这个被暂停的进程可以通过发...原创 2018-03-17 18:55:06 · 1890 阅读 · 0 评论 -
环境变量
一、基本概念·环境变量一般是指操作系统中用来指定操作系统运行环境的一些参数·环境变量通常具有某些特殊用途,还有在系统中通常具有全局特性二、常见的环境变量·PATH:指定命令的搜索路径·HOME:指定用户的主工作目录·HISTSIZE:指保存历史命令记录的条数·SHELL:当前Shell,它的值通常是/bin/bash三、和环境变量相关的命令1、echo:显示某个环境变量值2、export:设置一个...原创 2018-03-22 17:59:32 · 146 阅读 · 0 评论 -
程序地址空间
一、程序地址空间验证 1 #include<stdio.h> 2 #include<unsitd.h> 3 #include<stdlib.h> 4 5 int g_val = 0; 6 int main() 7 { 8 pid_t id = fork(); 9 if(id > 0){ 10 ...原创 2018-03-23 21:23:44 · 571 阅读 · 0 评论 -
进程控制
一、进程的创建1、fork函数的知识作用:从已存在进程中创建一个新的进程。新进程为子进程,而原进程为父进程#include<unistd.h>pid_t fork(void);返回值:子进程返回0,父进程返回子进程id,出错返回-1 return之后已经有两个进程进程调用fork,当控制转移到内核中的fork代码后,内核做:(1)分配新的内存块和内核数据结构给子...原创 2018-03-24 11:34:50 · 115 阅读 · 0 评论 -
信号
场景:1、用户输入命令,在shell下启动一个前台进程2、用户按ctrl+c会产生一个硬件中断(ctrl+c只能终止前台进程)kill -l可以查看信号列表每个信号都有一个编号和宏定义名称,这些宏定义可以在signal.h中找到...原创 2018-05-11 10:57:49 · 318 阅读 · 0 评论