process vs thread
process vs thread
http://blog.csdn.net/mishifangxiangdefeng/article/details/7588727
6.进程与线程的区别:系统调度是对进程还是线程,线程与进程共享的内存空间、公共地址空间等;
A.操作系统只调度进程,不调度线程
B.线程共享内存地址空间,进程不共享
C.线程间可共享内存数据,但进程不可以
D.进程可以通过IPC通信,但线程不可以
7.内存管理:段页式管理,地址映射表是?(操作系统方面的知识也不能掉以轻心呀)
A. 每个作业或进程一张段表,一张页表
B. 每个作业或进程的每个段一张段表,一张页表
C. 每个作业或进程一张段表,每个段一张页表
D. 每个作业一张页表,每个段一张段表
多线程编程,如何安全退出线程。
比较mutex和临街区之间的区别,并说明其使用场景。
spinlock
什么是用户级线程和内核级线程?区别。
内核线程:线程切换由内核控制,切换的时候,要从用户态进入内核态,切换完毕要从内核态返回用户态;可以很好的利用smp,即利用多核cpu。windows线程就是这样的。
用户级线程:用户态程序自己调度线程切换,不需要内核干涉,少了进出内核态的消耗,但不能很好的利用smp。目前linux pthread大体是这么做的。
process vs thread
一个program可以由多个process,一个process可以由多个thread,其中一个是main thread。
process有独立的虚拟地址空间,一个process异常不会影响其他process
thread共享process的虚拟地址空间和所有资源,一个thread异常导致其他thread异常。
processer处理机分给thread,即真正在处理机上运行的是thread。
thread的创建,执行速度比process更快,不需要context切换,耗费资源较少,比process更lightweight
thread的好处:易于调度,并发性高,开销小。
http://www.cnblogs.com/lmule/archive/2010/08/18/1802774.html
http://blog.csdn.net/dazhong159/article/details/7896070
http://blog.csdn.net/column/details/killthreadseries.html
进程与线程的区别:
(1)调度:process作为拥有资源的基本单位,thread作为调度和分配的基本单位
(2)并发性:不仅process之间可以并发执行,同一个process的多个thread之间也可并发执行
(3)拥有资源:process是拥有资源的一个独立单位,thread不拥有系统资源,但可以访问隶属于process的资源
(4)系统开销:在创建或撤消process时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消thread时的开销。
process的基本状态及状态之间的关系
Ready<---->Running--->Blocked--->Ready
process间通信的方式?
(1)管道(pipe)及有名管道(named pipe):管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。
(2)信号(signal):信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一致的。
(3)消息队列(message queue):消息队列是消息的链接表,它克服了上两种通信方式中信号量有限的缺点,具有写权限得进程可以按照一定得规则向消息队列中添加新信息;对消息队列有读权限得进程则可以从消息队列中读取信息。
(4)共享内存(shared memory):可以说这是最有用的进程间通信方式。它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据得更新。这种方式需要依靠某种同步操作,如互斥锁和信号量等。
(5)信号量(semaphore):主要作为进程之间及同一种进程的不同线程之间得同步和互斥手段。
(6)套接字(socket):这是一种更为一般得进程间通信机制,它可用于网络中不同机器之间的进程间通信,应用非常广泛。
thread间通信?
(1) global volatile variable
(2) message: PostMessage PostThreadMessage
thread的同步和互斥?
mutex
semaphore
critical section
进程如何同步?
http://www.cnblogs.com/sooner/tag/%E8%BF%9B%E7%A8%8B%E9%80%9A%
秒杀多线程系列
http://blog.csdn.net/dazhong159/article/details/7948327
http://blog.csdn.net/morewindows/article/details/7470936
c++多线程编程
http://blog.sina.com.cn/s/articlelist_1650383371_1_1.html
criticalsection
http://blog.163.com/ctct7833@126/blog/static/16162469020117119125560/
process vs thread的更多相关文章
- Linux process vs thread
Linux process vs thread Question I have a query related to the implementation of threads in Linux. L ...
- Linux Process VS Thread VS LWP
Process program program==code+data; 一个进程可以对应多个程序,一个程序也可以变成多个进程.程序可以作为一种软件资源长期保存,以文件的形式存放在硬盘 process: ...
- Activity, Service,Task, Process and Thread之间的关系
Activity, Service,Task, Process and Thread之间到底是什么关系呢? 首先我们来看下Task的定义,Google是这样定义Task的:a task is what ...
- kafka.common.KafkaException: Failed to acquire lock on file .lock in /tmp/kafka-logs. A Kafka instance in another process or thread is using this directory.
1.刚才未启动zookeeper集群的时候,直接启动kafka脚本程序,kafka报错了,但是进程号启动起来来,再次启动出现如下所示的问题,这里先将进程号杀死,再启动脚本程序. [hadoop@sla ...
- Failed to acquire lock on file .lock in /tmp/kafka-logs. A Kafka instance in another process or thread is using this directory.
1. 问题现象 启动 kafka 时报错:Failed to acquire lock on file .lock in /tmp/kafka-logs. A Kafka instance in an ...
- yum安装提示错误Thread/process failed: Thread died in Berkeley DB library
问题描述: yum 安装更新提示 rpmdb: Thread/process failed: Thread died in Berkeley DB library 问题解决: 01.删除yum临时库文 ...
- Difference between Process and thread?
What are the differences between a process and a thread? How are they similar? How can 2 threads com ...
- C# - 多线程 之 Process与Thread与ThreadPool
Process 进程类, // 提供对本地和远程进程的访问,启动/停止本地系统进程 public class Process : Component { public int Id { get; } ...
- Process and Thread
A process is a completely independent program that has its own address space, while a thread is a se ...
随机推荐
- VS插件之小番茄
文件源以及安装说明! http://www.youranshare.com/app/98.html
- 【BZOJ 3143】【Hnoi2013】游走 期望+高斯消元
如果纯模拟,就会死循环,而随着循环每个点的期望会逼近一个值,高斯消元就通过列方正组求出这个值. #include<cstdio> #include<cctype> #inclu ...
- poj3468 splay(成段跟新 区间求和)
用splay做了一遍. 建树时是按照数列序号从小到大排好的,每个节点左子树的序号小于右子树的序号及这个节点本身.由于查询[l,r]要伸展l-1,r+1所以我们要多加2个结点,保证边界处理时不出问题.由 ...
- sql-char和varchar,nvarchar的区别
数据类型的比较 char表示的是固定长度,最长n个字 varchar表示的是实际长度的数据类型 比如:如果是char类型,当你输入字符小于长度时,后补空格:而是varchar类型时,则表示你输入字符的 ...
- Matlab最短路径问题记录
利用graphshortestpath 可以求最短路径,具体用法参考MATLAB帮助 S=[1 1 2 2 3 3 4 4 4 4 5 6 6 7 8]; %起始节点向量 E=[2 3 5 4 4 6 ...
- 关于clonezilla
Clonezilla 是一个很好的系统克隆工具,它可以说是吸取了 Norton Ghost 和 Partition Image 的优点.即不仅支持对整个系统进行克隆,而且也可以克隆单个的分区,这种灵活 ...
- JDBC中prepareStatement 和Statement 的区别
package util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedSta ...
- UVA10118(记忆化搜索 + 好题)
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19440 题意,4堆不同颜色的糖果,每堆N个,从堆上往下拿,放入一个最大装5个 ...
- Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
http://www.jb51.net/article/42016.htm 初识Jquery EasyUI看了一些博主用其开发出来的项目,页面很炫,感觉功能挺强大,效果也挺不错,最近一直想系统学习一套 ...
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
闪回表,实际上就是将表中的数据快速恢复到过去的一个时间点或者系统改变号SCN上.实现表的闪回,需要用到撤销表空间相关的UNDO信息,通过SHOW PARAMETER UNDO命令就可以了解这些信息.用 ...