
Linux
文章平均质量分 87
Gary的面包屑小道
这个作者很懒,什么都没留下…
展开
-
浅谈Linux的进程
进程在学习进程之前,提出一个问题,操作系统是怎么进行进程管理的呢?很简单,就是先去把进程描述起来,再把进程组织起来。概念:程序的一个执行实例,正在执行的程序,从内核的观点来说,就是担当分配系统资源(CPU时间,内存)的一个实体,一、描述进程——PCB进程信息被放在一个叫做进程控制块的结构中,可以理解为进程属性的集合,称之为:PCB,在Linux下,PCB是一个叫做task_st原创 2017-12-28 13:52:38 · 393 阅读 · 0 评论 -
线程间的同步与互斥—信号量
线程间的同步与互斥—信号量之前的博客有学习过关于进程间通信的信号量,那关于线程之间的同步和互斥的信号量是怎么理解的呢?线程之间的Mutex变量是非0即1的,可以看作是一种资源的计数器,初始化时Mutex是1,表示有一个可用资源,加锁的时候表示获得该资源,将Mutex减1,置为0,表示此时没有可用资源,解锁的时候在重新释放该资源,将Mutex重新加到1,表示此时又有了一个资源。关于信号量的基础概念在...原创 2018-02-05 21:28:32 · 520 阅读 · 1 评论 -
线程的同步与互斥—读写锁
线程的同步与互斥—读写锁在多线程得编程中,对于一些公共的资源,其实修改的机会是比较的少的,相比较而言,更多的只是读操作,而在我们的读操作之中,常常伴随着查找,但是如果在这类代码中,加入过多的锁的话,那么就会降低我们程序的效率,为了解决这种情况,就对应了专门的操作:读写锁。读写锁的接口:初始化:int pthread_rwlock_init(pthread_rwlock_t* rwlo原创 2018-02-05 16:50:58 · 332 阅读 · 0 评论 -
进程间通信——消息队列
进程间通信——消息队列什么是消息队列? 消息队列就是提供了一个进程向另一个进程发送一个数据块的方法,其中每一个数据块都被认为有类型。接收者进、程接收的数据块可以有不同的类型值,通过发送消息来避免命名管道的同步和阻塞问题。那么消息队列和管道到底有什么不同呢? 消息队列是基于消息的,而管道是基于字节流的; 消息队列的读取不一定是先进先出的; 消息队列是原创 2018-01-29 09:24:08 · 670 阅读 · 0 评论 -
简单的生产者和消费者模型——互斥锁和条件变量实现
简单的生产者和消费者模型——互斥锁和条件变量实现 先来简单的阐述一下生产者和消费者模型,这个模型描述了这么一个场景:内存中有一块缓冲区叫做仓库,生产者可以向里面放数据,消费者可以从里面取数据。那么此时需要注意的就是:生产者往仓库生产东西的时候,消费者不能那从仓库取东西,同样的道理,消费者从里面取东西的时候,生产者不能往里面放东西,而且,仓库为空的时候,消费者不能消费,仓库满的时候,原创 2018-02-04 11:02:28 · 776 阅读 · 0 评论 -
进程间通信——管道
进程间通信——管道 要学习进程间通信方式之一的管道,就要了解进程间通信的相关概念。进程间通信的本质:进程间通信的本质就是让不同的进程看到公共的资源什么叫做进程间通信呢? 进程之间要交换数据,必须要通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核的缓冲区,进程2再从内核的缓冲区把数据拷走,内核提供的这种机制叫做:进程间通信进程间通信的目的: ①数据的传原创 2018-01-27 18:20:55 · 412 阅读 · 0 评论 -
线程的同步和互斥
线程的同步和互斥今天笔者和大家一起学习一下线程的同步和互斥,最简单的理解,同步就是按照某种次序去访问资源,互斥就是某种资源同时只能有一个访问者去访问,因此对于资源的访问就是原子性的。即也就是当前资源已经被占用或者没有被占用两个情况,不存在第三种情况。我们先来看一段代码:#include #include int count = 0;void* thread_count(voi原创 2018-02-03 16:37:17 · 473 阅读 · 0 评论 -
Linux下的线程
Linux下的线程什么是线程?首先线程是比进程量级更小的单位,线程是进程内部的执行序列,也就是进程内部的执行分支,一个进程可以有多个执行流,多进程本身也是多个执行流,但是各个进程之间是相互独立的,但是线程之间就不是完全的独立的。线程和进程进程是资源竞争的基本单位;线程是程序执行的基本单位线程共享进程的数据,但是也拥有自己的一部分数据,也就是说:进程里面的多个线程,是在同一个地址原创 2018-02-02 15:42:01 · 249 阅读 · 0 评论 -
进程间通信—— 共享内存
进程间通信——共享内存 进程间通信的方式有信号量,消息队列,管道,今天我们学习进程间通信的另外一种通信方式:共享内存 共享内存有一个最大的特点就是:以传送数据为目的,在所有进程间通信方式中速度最快的。原因就是管道消息队列等通信方式,都是在临界资源写好数据之后,读方不读的时候,是不知道写方写入了哪些数据的,所以就需要拷贝两份数据,但是共享内存是将数据写到物理内存的时候,读方就立刻看到原创 2018-02-01 11:46:17 · 328 阅读 · 0 评论 -
Linux下的Min_shell
Linux下的Min_shell 在Linux环境下,我们通常通过shell命令来执行我们想要的程序,那么现在我们就自己实现一个Min版本的shell,我们叫他:myshell。 代码编辑平台:Centos平台的Linux环境,vim进行代码编辑我们的shell实现原理,是利用了程序替换,也就是我们的exec*系列的函数,我们将输入的字符串修改格式和内容,使之成为能作为命令的字原创 2018-01-25 23:50:58 · 642 阅读 · 0 评论 -
进程间通信——信号量
进程间通信——信号量开始:之前我有在博客中写到进程间通信的方式:管道和消息队列 详情可以参考这两个链接:进程间通信—管道 和 进程间通信—消息队列 今天我总结一下进程间通信的另一种方式:信号量。信号量本质是一种数据操作锁,信号量本身是不具有数据交换功能的,而是通过控制其他的资源来实现进程间通信的,它本身是一种资源的标识,也可以当作是资源的计数器,信号量在进程通信的过程中负责数据原创 2018-01-30 18:24:32 · 560 阅读 · 0 评论 -
Linux的进程等待
Linux的进程等待在学习进程等待之前,我们要弄清楚,两个问题,一个是为什么要等待,还有一个是怎么等待?首先:为什么要进程等待?进程终止或者退出的时候,进程就会关闭所有文件描述符,然后释放在用户空间的分配的内存,但是进程的PCB会暂时保留,因为PCB中还保存有进程的退出状态,如果进程是正常退出,那么退出状态就是进程的退出码,如果是异常退出,那进程的退出状态就是导致进程退出的信号,因为父原创 2017-12-29 16:49:40 · 650 阅读 · 0 评论 -
Linux下的文件描述符和文件指针
文件描述符在Linux中,有着一切文件的说法,那么在我们打开这个文件的时候,就会获得该文件的文件描述符。每一个进程在PCB(task_struct)中都保存着进程的相关信息,用来描述进程,其中就保存着一份文件描述符表,而打开文件获得的这个文件描述符。就是这个文件描述符表的索引,在文件描述符表中,每个表项都指向一个已经打开文件的指针,其实文件描述符表就是一个数组,文件描述符就是这个描述符表的原创 2017-12-28 16:35:44 · 762 阅读 · 0 评论 -
进程间关系和守护进程
进程间关系和守护进程一、进程组(Process Group)每个进程除了进程ID以外还属于一个进程组,进程组是一个或者多个进程的集合,通常与同一作业相关联,可以接受同一个终端的各种信号,每个进程组有唯一的进程组ID,每个进程都有一个组长进程,组长进程的标识符就是进程组ID等于进程ID,组长进程可以创建一个进程组,创建该组进程中的进程,然后终止,只要进程组中某个进程存在,那么这个进程就存在,原创 2018-02-06 21:48:51 · 325 阅读 · 1 评论