线程与进程 深入剖析与点拨 - 海阔天空 - 博客频道 - CSDN.NET



线程与进程 深入剖析与点拨 - 海阔天空 - 博客频道 - CSDN.NET

1. 什么是进程?
进程就是一个正在执行的程序的实例,包括程序计数器,寄存器和变量的当前值。
进程用于把资源集中在一起, 多个进程共享物理内存,磁盘,打印机和其他资源。


2. 引入线程的目的:实现并行实体共享同一个地址空间和所有可用数据的能力。换句话说在同一个进程中所有的线程共享地址空间,由于线程只拥有寄存器用来保存线程当前的工作变量,所以更加轻量级。


3. 时钟中断, 时钟中断是针对进程的, 时钟中断的目的是实现并行(伪并行), 这样不同的进程都有机会获得时间片而运行。但是在一个单独的进程内部是没有时钟中断的,也就是说不可能在一个线程运行后再让其他线程运行,如果线程不释放CPU并且是CPU密集的, 那么使用多线程则无意义。(比如设计一个算法, 耗费bigO时间O(n), 并且是时间秘籍的, 只有一个CPU的情况下使用多线程是毫无意义的,或者说基本不会提高算法的执行时间)。




4. 进程间的通信模型要比线程复杂。但是如果两个或多个进程共享其全部或大部分的地址空间,进程和线程之间的差别就变得模糊起来,但无论怎样,两者的差别还是有的。共享一个公共地址空间的两个进程仍旧有各自的打开文件,白净定时器以及其他一些单个进程的特性,而在单个进程中的线程,则共享进程全部的特性,另外,共享一个公共地址空间的多个线程不会拥有用户级线程的效率,这一点是不容质疑的。


5. 线程与进程还有一个关键差别,在线程完成运行时,例如,在调用thread_yield是,pthread_yield代码可以把该线程的信息保存在县城表中,进而它可以调用线程调度程序来选择另一个要运行的线程。保存该线程状态的过程和调度程序都是本地过程,所以启动他们比进行内核调用效率更高。并一方面,不需要陷阱,不需要上下文切换,也不需要对内存高速缓存进行刷新,这就使得线程调度非常快捷。

Read full article from 线程与进程 深入剖析与点拨 - 海阔天空 - 博客频道 - CSDN.NET


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts