"심층 컴퓨터 시스템의 이해,"메모를 읽고 - 프로세스 및 스레드의 차이를?

스레드 및 프로세스 요약 :


1. 프로세스와 스레드

1.1 개요 :

프로세스는 첫 번째 런의 활동에 대한 데이터 집합에 어느 개별 기능 프로그램이며 , 시스템 프로세스는 자원 할당 및 스케줄링의 독립 단위이다.

스레드는 물리적 인 과정이다 , 독립적으로 작동 할 수있는 기본 단위의 과정보다 작은 CPU 스케줄링 및 파견의 기본 단위입니다. 기본적으로 스레드가 자신의 시스템 자원을 보유하고 있지 않습니다, 필수 자원의 운영에 조금 밖에있다 다른 스레드가 모든 자원에 의해 소유되는 방법에 속하는 프로세스이지만, (예를 들면 프로그램 카운터, 레지스터 및 스택의 세트로)이를 공유 할 수있다.

스레드가 생성되고 다른 스레드를 파괴 할 수있는 , 동일한 공정에서 다수의 스레드에 걸쳐 동시에 실행할 수있다.

비교적 프로세스, 스레드가 동일한 프로세스에서 다른 스레드와 데이터를 공유하지만 자신의 스택 공간 독립 실행 순서를 보유 할 수 수행 가까운 몸체의 개념이다.

프로그램에 기초하여 시리얼 프로그램 스레드 및 프로세스를 도입함으로써 공정 효율 및 응답 시간을 향상 동시성을 개선하는 것입니다.

1.2 차이 :

프로세스와 스레드 사이의 주요 차이점은 다른 운영 체제 자원 관리 점이다. 프로세스가 충돌 후 프로세스는 보호 모드에서 다른 프로세스에 영향을하지 않습니다, 별도의 주소 공간을 가지고 있고, 스레드는 다른 실행 경로의 과정이다. 스레드는 자신의 스택 및 로컬 변수들을 가지고 있지만, 거기에, 스레드 간의 별도의 주소 공간은 금형에 나사가 전체 과정 다이 동등 없도록 다중 프로세스 멀티 스레드 프로그램보다 프로그램 견고하지만, 스위칭 과정에서 소모 큰 자원 효율은 악화 될 수 있습니다. 그러나 동시에 요구 사항의 일부와 만 스레드, 프로세스가 사용할 수없는 특정 변수의 동시 작업을 공유 할 수 있습니다.

1) 즉,이 적어도 하나 개의 프로그램을 처리하는 방법은 적어도 하나 개의 스레드를 갖는다.

스케일 분할 2) 스레드는 그래서 멀티 스레드 프로그램 동시성 높은 프로세스 미만이다.

3) 또한, 상기 공정은 크게함으로써 프로그램의 효율을 향상하는 구현 과정에서 별도의 메모리 장치, 및 공유 메모리의 다중 스레드를 가지고있다.

4)  구현 프로세스 스레드 처리는 상이하다. 각 엔트리는, 순서 출구 수행 서열 및 절차를 실행하는 별도의 스레드를 갖는다. 그러나, 스레드는 독립적으로 실행할 수없는 그 애플리케이션에 의해 제어되는 다수의 실행 스레드를 제공하는 용도에 따라 존재한다.

5)  멀티 스레드 애플리케이션 프로그램 실행 부 동시에 복수를 수행 할 수 있다는 것을 의미 논리적 관점에서. 그러나 운영 체제 스케줄링 및 관리, 자원 할당 프로세스를 달성하기 위해 여러 스레드 여러 개의 독립적 인 응용 프로그램으로 볼 수 없습니다. 이 프로세스와 스레드 사이의 중요한 차이입니다.

1.3 장점과 단점 :

그리고 프로세스 반대로 작은 스레드 실행 오버 헤드 있지만, 관리 및 자원의 보호에 도움이되지 : 스레드와 프로세스의 장점과 단점 사용에 있습니다. 동시에, 적합한 스레드 SMP 머신에서 실행되는 프로세스는 시스템에 걸쳐 마이그레이션 할 수 있습니다.

2. 멀티 프로세스, 멀티 스레드

2.1 개요 :

프로세스가되어 실행되고있는 경우 그래서, CPU의 추상적 부족, 프로그램 후 추상적는 과정이지만 CPU 처리 시간의 과정이 라운드 로빈 방식의 사용이 때문에 스레드, 프로세스 밖으로 내부에서 분할 큰 공정을 넣어 복수의 스레드로 분할, 예를 들어 Flashget의 10 파일 스레드를 다운로드하는 동시에 10 개의 부분으로 분할된다 스레드 1-10 11-20 등등 스레드를 점유하고 점유로 파일 (100), 더 많은 스레드는 파일이 더 구분하지만, 물론 빠른 다운로드됩니다

프로세스는 컴퓨터 프로그램 구현 활동이다. 당신이 프로그램을 실행하면 프로세스를 시작합니다. 물론, 프로그램은 실행중인 단지 정적 실체가없는 것을 의미 지침의 단지 정렬 된 세트입니다. 프로세스는,이 데이터 세트에서 실행되며, 다른 동적 엔터티이다. 작업이 모두 주어진 데이터 세트에서 실행되는 프로그램의 동적 프로세스를 반영, 취소되어 있기 때문에, 자원 또는 이벤트에 대한 대기 상태에있는 대기 때문에 예약 및 실행에 만들고 생산 예정이다. 프로세스 자원을 할당 할 수있는 장치 운영 체제입니다. 에서 윈도우, 프로세스가있는 스레드로 정제 된, 작은 단위의 수는 다음 과정을 독립적으로 작동 할 수있다. 스레드 (스레드)는 물리적 공정이다 CPU 스케줄링 및 디스패치의 기본 단위이다. 스레드는 독립적으로 실행될 수없는 응용 프로그램, 어플리케이션 프로그램 실행 제어부에 의해 복수의 스레드에 따라 존재할.

스레드와 프로세스 사이의 관계는 다음과 같습니다 : 스레드가 프로세스의 일부입니다, 프로세스 공간에서 스레드 실행, 프로세스가 스레드에 의해 생성 한 프로세스를 종료 주 같은 메모리 공간을 생성 동일한 프로세스의 스레드를 종료하도록 강요하고 명확합니다. 모든 스레드가 다른 스레드가 동일한 프로세스가 속하는와 프로세스 자원을 공유하지만, 기본적으로 자신의 시스템 자원이없는, 단지 약간의 정보를 가지고하는 작업에 필수적이다 (예 : 프로그램 카운터, 레지스터 세트 및 스택으로).

在同一个时间里,同一个计算机系统中如果允许两个或两个以上的进程处于运行状态,这便是多任务。现代的操作系统几乎都是多任务操作系统,能够同时管理多个进程的运行。 多任务带来的好处是明显的,比如你可以边听mp3边上网,与此同时甚至可以将下载的文档打印出来,而这些任务之间丝毫不会相互干扰。那么这里就涉及到并行的问题,俗话说,一心不能二用,这对计算机也一样,原则上一个CPU只能分配给一个进程,以便运行这个进程。我们通常使用的计算机中只有一个CPU,也就是说只有一颗心,要让它一心多用,同时运行多个进程,就必须使用并发技术。实现并发技术相当复杂,最容易理解的是“时间片轮转进程调度算法”,它的思想简单介绍如下:在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU是在轮流为多个进程服务,就好象所有的进程都在不间断地运行一样。但实际上在任何一个时间内有且仅有一个进程占有CPU。

如果一台计算机有多个CPU,情况就不同了,如果进程数小于CPU数,则不同的进程可以分配给不同的CPU来运行,这样,多个进程就是真正同时运行的,这便是并行。但如果进程数大于CPU数,则仍然需要使用并发技术。

Windows中,进行CPU分配是以线程为单位的,一个进程可能由多个线程组成,这时情况更加复杂,但简单地说,有如下关系:

总线程数<= CPU数量:并行运行

总线程数> CPU数量:并发运行

并行运行的效率显然高于并发运行,所以在多CPU的计算机中,多任务的效率比较高。但是,如果在多CPU计算机中只运行一个进程(线程),就不能发挥多CPU的优势。

 多任务操作系统(如Windows)的基本原理是:操作系统将CPU的时间片分配给多个线程,每个线程在操作系统指定的时间片内完成(注意,这里的多个线程是分属于不同进程的).操作系统不断的从一个线程的执行切换到另一个线程的执行,如此往复,宏观上看来,就好像是多个线程在一起执行.由于这多个线程分属于不同的进程,因此在我们看来,就好像是多个进程在同时执行,这样就实现了多任务.

 2.2 分类

根据进程与线程的设置,操作系统大致分为如下类型:

(1) 单进程、单线程,MS-DOS大致是这种操作系统;

(2) 多进程、单线程,多数UNIX(及类UNIX的Linux)是这种操作系统;

(3) 多进程、多线程,Win32(Windows NT/2000/XP等)、Solaris 2.x和OS/2都是这种操作系统;

(4) 单进程、多线程,VxWorks是这种操作系统。

2.3 引入线程带来的主要好处:

(1) 在进程内创建、终止线程比创建、终止进程要快;

(2) 同一进程内的线程间切换比进程间的切换要快,尤其是用户级线程间的切换。


详情又可见:http://www.cnblogs.com/lmule/archive/2010/08/18/1802774.html

发布了18 篇原创文章 · 获赞 86 · 访问量 16万+

추천

출처blog.csdn.net/u013178472/article/details/64440404