随笔分类 - Linux--->进程和线程
摘要:1、函数说明 在pthread_create()函数中,第二个参数(pthread_attr_t *attr)表示线程的属性。在上一个实例中,将该值设为NULL,也就是采用默认属性,线程的多项属性都是可以更改的。这些属性主要包括绑定属性、分离属性、堆栈地址、堆栈大小以及调度策略和优先级。其中系统默认
阅读全文
摘要:线程间的同步指的是多个任务(线程)按照约定的顺序相互配合完成一件事情。 由于线程共享进程的资源和地址空间,因此在对这些资源进行操作时,必须考虑到线程间资源访问的同步与互斥问题。这里主要介绍POSIX中两种线程同步机制,分别为互斥锁和信号量。这两个同步机制可以互相通过调用对方来实现,但互斥锁更适合用于
阅读全文
摘要:为了进一步减少处理器的空转时间,支持多处理器以及减少上下文切换开销,进程在演化中出现了另一个概念 线程。它是进程内独立的一条运行路线,是内核调度的最小单元,也被称为轻量级进程。线程由于具有高效性和可操作性,在嵌入式系统开发中运用的非常广泛,希望读者能够很好地掌握。 这里要讲的线程相关操作都是用户空间
阅读全文
摘要:顾名思义,消息队列就是一些消息的列表,用户可以在消息队列中添加消息和读取消息等。从这点上看,消息队列具有一定的FIFO特性,但是它可以实现消息的随机查询,比FIFO具有更大的优势。同时,这些消息又是存在于内核中的,由“队列ID”来标识。 消息队列是IPC对象的一种,消息队列由消息队列ID来唯一标识,
阅读全文
摘要:可以说,共享内存是一种为高效的进程间通信方式,因为进程可以直接读写内存,不需要任何数据的复制。为了在多个进程间交换信息,内核专门留出了一块内存区,这段内存区可以由需要访问的进程将其映射到自己的私有地址空间。因此,进程就可以直接读写这一内存区而不需要进行数据的复制,从而大大提高了效率。 共享内存的特点
阅读全文
摘要:一、信号量概述 信号量也叫信号灯,它是不同进程间或一个进程间不同线程之间通信的机制。 信号灯的种类:posix有名信号灯、posix基于内存的信号灯(无名信号灯)、system V信号灯(IPC对象)。 在多任务操作系统环境下,多个进程/线程会同时运行,并且一些进程间可能存在一定的关联。多个进程可能
阅读全文
摘要:1、信号概述 信号是在软件层次上对中断机制的一种模拟。在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用
阅读全文
摘要:1、管道简介 管道是Linux中进程间通信的一种方式,他把一个程序的输出直接连接到另一个程序的输入。Linux的管道主要包括两种:无名管道和有名管道。 管道不属于进程的资源,而是和套接字一样,属于操作系统(也就不是fork函数的复制对象)。所以,两个进程通过操作系统提供的内存空间进行通信。 1.1、
阅读全文
摘要:我们知道进程是一个程序的一次执行,是系统资源分配的小单元。这里所说的进程一般是指运行在用户态的进程,而由于处于用户态的不同进程间是彼此隔离的就连通过fork函数创建的子进程与父进程也不会共享内存空间,就像处于不同城市的人们,他们必须通过某种方式来进行通信,例如人们现在广泛使用的手机等方式。因此,进程
阅读全文
摘要:1.守护进程概述 守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导载入时启动,在系统关闭时终止。Linux有很多系统服务,大多数服务都是通过守护进程实现的。同
阅读全文
摘要:1、进程编程基础 1.1、fork() 在Linux中创建一个新进程的方法是使用fork()函数。fork()函数是Linux中一个非常重要的函数,和读者以往遇到的函数有一些区别,因为它看起来执行一次却返回两个值。一个函数真的能返回两个值吗? (1)fork()函数说明 fork()函数用于从已存在
阅读全文
摘要:多任务处理是指用户可以在同一时间内运行多个应用程序,每个正在执行的应用程序被称为一个任务。Linux就是一个支持多任务的操作系统,比起单任务系统它的功能增强了许多。 多任务操作系统使用某种调度策略(可以查看操作系统来了解)支持多个任务的并发执行。事实上,(单核)处理器在某一时刻只能执行一个任务。每个
阅读全文

浙公网安备 33010602011771号