Processes and Threads
文章平均质量分 95
进程和线程
Kessity
科技改变世界,梦想成就未来。。。。。。。。。
展开
-
消息队列(十四)
一 简介 消息队列是链表队列,它通过内核提供一个struct msqid_ds *msgque[MSGMNI]向量维护内核的一个消息队列列表,因此linux系统支持的最大消息队列数由msgque数组大小来决定,每一个msqid_ds表示一个消息队列,并通过msqid_ds.msg_first、msqid_ds.msg_last维护一个先进先出的msg链表队列。 当发送一个消息到该消息队列时...原创 2020-03-02 13:33:14 · 384 阅读 · 0 评论 -
Linux信号机制分析(七)
信号信号安装信号集信号掩码转载 2019-08-29 11:15:41 · 326 阅读 · 0 评论 -
线程间信号处理(八)
一 多线程信号 首先,信号的传递是根据情况而定的:如果是异常产生的信号(比如程序错误,像SIGPIPE、SIGEGV这些),一般由系统发送,则只有产生异常的线程收到并处理。如果是用pthread_kill产生的内部信号,则只有pthread_kill参数中指定的目标线程收到并处理。如果是外部进程使用kill产生的信号,通常是SIGINT、SIGHUP等job control信号,则会遍...原创 2019-08-29 23:17:40 · 289 阅读 · 0 评论 -
进程状态(四)
一 阻塞和挂起的区别理解一:挂起是一种主动行为,因此恢复也应该要主动完成,而阻塞则是一种被动行为,是在等待事件或资源时任务的表现,你不知道他什么时候被阻塞(pend),也就不能确切的知道他什么时候恢复阻塞。而且挂起队列在操作系统里可以看成一个,而阻塞队列则是不同的事件或资源(如信号量)就有自己的队列。理解二:阻塞(pend)就是任务释放CPU,其他任务可以运行,一般在等待某种资源或信号量的时候...原创 2019-01-14 09:56:44 · 272 阅读 · 0 评论 -
线程同步互斥和锁(十三)
一 线程通信 由于线程是共享内存的,故线程之间的通信其实也就是资源共享,不像进程之间的通信。其实更多的是线程之间的同步与互斥。 1、使用全局变量:主要由于多个线程可能更改全局变量,因此全局变量最好声明为violate。 2、使用消息实现通信。 3、使用事件CEvent类实现线程间通信。二 线程同步互斥 互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但...原创 2019-09-01 09:40:48 · 259 阅读 · 1 评论 -
进程的创建(二)
fork创建一个新的进程就产生了一个新的PID,exec启动一个新程序,替换原有的进程,因此这个新的被 exec 执行的进程的PID不会改变(和调用exec的进程的PID一样)。原创 2019-08-31 22:35:14 · 581 阅读 · 0 评论 -
fork()、vfork()、clone()的区别(三)
在linux源码中这三个调用的执行过程是执行fork(),vfork(),clone()时,通过一个系统调用表映射到sys_fork(),sys_vfork(),sys_clone(),再在这三个函数中去调用do_fork()去做具体的创建进程工作。一 fork fork创造的子进程复制了父亲进程的资源(写时复制技术),包括内存的内容task_struct内容(2个进程的pid不同)。这...转载 2019-08-30 15:03:14 · 256 阅读 · 0 评论 -
进程监控命令ps和top(五)
一 ps命令1 描述 该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等。ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。 ps是显示瞬间进程的状态,并不动态连续;如果想对进程进行实时监控应该用top命令。2 主要参数 常见...原创 2019-09-02 00:51:23 · 748 阅读 · 0 评论 -
深刻理解Linux进程间通信(IPC)(六)
进程间通信,传统的方式:无名管道(pipe)、有名管道(fifo)和信号(signal);System V IPC对象:共享内存(sharememory)、信号灯(semaohore)、消息队列(messagequeue)。 IPC对象是活动在内核级别的一种进程间通信的工具。存在的IPC对象通过它的标识符来引用和访问,这个标识符是一个非负整数,它唯一的标识了一个IPC对象,这个IPC对象可...原创 2018-12-06 09:18:18 · 359 阅读 · 0 评论 -
进程管理(十一)
Linux版本:linux-2.6.11PCB 在每一个PCB中,都有一个文件描述符表,通过文件描述符索引指向file_struct(系统打开文件表)。 文件描述符在形式上是一个非负整数,实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表,文件描述符表中每个表项都有一个指向已经打开文件的指针;而已经打开的文件在内核中用file结构体表示,文件描述符中的指针指向fi...原创 2018-12-06 09:33:47 · 257 阅读 · 0 评论 -
进程的同步互斥(九)
进程同步信号量(Semaphores)机制 1965年,荷兰学者Dijkstra提出的信号量(Semaphores)机制是一种卓有成效的进程同步工具。在长期且广泛的应用中,信号量机制又得到了很大的发展,它从整型信号量经记录型信号量,进而发展为“信号量集”机制。 信号量S是一个整数,S大于等于零是代表可供并发进程使用的资源实体数,当S小于零时则表示正在等待使用临界区的进程数。Dijkstr...原创 2018-12-28 12:34:18 · 817 阅读 · 0 评论 -
经典进程同步问题(十)
生产者–消费者问题 读者–写者问题 哲学家进餐问题 哲学家就餐问题可以这样表述,假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只餐叉。因为用一只餐叉很难吃到意大利面,所以假设哲学家必须用两只餐叉吃东西。他们只能使用自己左右手...原创 2019-08-27 09:31:55 · 169 阅读 · 0 评论 -
多线程编程(十二)
一 线程分类 内核线程:运行在内核空间,由内核调度。 用户线程:运行在用户空间,有线程库来调度。 线程的实现分三种模式:完全用户空间实现:优点:创建和调度无需内核参与,速度快。不占用额外内核资源。缺点:对于多处理器系统,一个进程的多个线程无法运行在不同的CUP。完全由内核调度:与1.相反。双层调度:兼具1.2.优点;充分利用多处理器优势。二 查看当前系统使用的线程库$...原创 2019-08-27 09:31:30 · 188 阅读 · 1 评论 -
进程以及和线程的区别(一)
一 进程和线程的区别1 概念 进程:在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。进程有狭义和广义之分,狭义的进程是正在运行的程序的实例;广义的进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是操作系统动态执行的基本单元。 线程:线程是进程中的一个实体,作为系统调度和分派的基本单位。Linux下的线程看作轻...原创 2019-08-27 09:30:38 · 206 阅读 · 1 评论