[Other]面试复习笔记:线程与进程复习

基本概念

1. 进程的基本概念

线程(thread)是进程(processes)中某个单一顺序的控制流,也被称为轻量进程(lightweight processes)。
进程是表示资源分配的基本单位,又是调度运行的基本单位。

比如: 用户运行自己的程序,系统就创建一个进程,并为它分配资源,包含各种表格、内存空间、磁盘空间、I/O设备等。

然后,把该进程放人进程的就绪队列。

进程调度程序选中它,为它分配CPU以及其他有关资源,该进程才真正运行。 所以,进程是系统中的并发运行的单位。

2. 线程的基本概念

在Mac、Windows NT等採用微内核结构的操作系统中,进程的功能发生了变化:它仅仅是资源分配的单位,而不再是调度运行的单位。 在微内核系统中,真正调度运行的基本单位是线程。因此,实现并发功能的单位是线程。 线程是进程中运行运算的最小单位,也就是运行处理机调度的基本单位。 如果把进程理解为在逻辑上操作系统所完毕的任务,那么线程表示完毕该任务的很多可能的子任务之中的一个。

比如: 如果用户启动了一个窗体中的数据库应用程序。操作系统就将对数据库的调用表示为一个进程。 如果用户要从数据库中产生一份工资单报表,并传到一个文件里,这是一个子任务。 在产生工资单报表的过程中。用户又能够输人数据库查询请求,这又是一个子任务。 这样,操作系统则把每一个请求――工资单报表和新输人的数据查询表示为数据库进程中的独立的线程。 线程能够在处理器上独立调度运行。这样。在多处理器环境下就同意几个线程各自在单独处理器上进行。 操作系统提供线程就是为了方便而有效地实现这样的并发性

引入线程的优点 1. 易于调度。

2. 提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来运行同一程序的不同部分。 3. 开销少。创建线程比创建进程要快,所需开销非常少。。

4. 利于充分发挥多处理器的功能。

通过创建多线程进程。每一个线程在一个处理器上运行。从而实现应用程序的并发性。使每一个处理器都得到充分运行。

3. 线程的基本状态

就绪:调用线程的start方法后线程进入就绪状态
堵塞:线程调度系统将就绪状态的线程转为运行状态
运行:遇到synchronized语句时,由运行状态转为堵塞
结束:当线程关联的代码运行完后,线程变为结束状态

4. 线程与进程的差别

线程与进程的差别能够归纳为下面4点: 1)地址空间:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其他进程不可见。
2)通信方式:进程间通信IPC,线程间能够直接读写进程数据段(如全局变量)来进行通信。

须要进程同步和相互排斥手段的辅助,以保证数据的一致性。
3)调度切换:线程上下文切换比进程上下文切换要快得多。
4)二者均可并发运行,在多线程OS中,进程不是一个可运行的实体。

简而言之。一个程序至少有一个进程,一个进程至少有一个线程。

线程的划分尺度小于进程。使得多线程程序的并发性高。 另外,进程在运行过程中拥有独立的内存单元,而多个线程共享内存。从而极大地提高了程序的运行效率。 线程在运行过程中与进程还是有差别的。每一个独立的线程有一个程序运行的入口、顺序运行序列和程序的出口。 可是线程不能够独立运行。必须依存在应用程序中,由应用程序提供多个线程运行控制。

从逻辑角度来看。多线程的意义在于一个应用程序中,有多个运行部分能够同一时候运行。 但操作系统并没有将多个线程看做多个独立的应用。来实现进程的调度和管理以及资源分配。这就是进程和线程的重要差别。

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动。进程是系统进行资源分配和调度的一个独立单位。 线程是进程的一个实体,是CPU调度和分派的基本单位。它是比进程更小的能独立运行的基本单位。

线程自己基本上不拥有系统资源。仅仅拥有一点在运行中不可缺少的资源(如程序计数器。一组寄存器和栈), 可是它可与同属一个进程的其他的线程共享进程所拥有的所有资源。 一个线程能够创建和撤销还有一个线程;同一个进程中的多个线程之间能够并发运行。

5. 多线程有几种实现方法

多线程有两种实现方法。

一种是继承Thread类,一种是实现Runnable接口。 
同步有两种方法。

一种同步方法,一种同步代码。各自是synchronized,wait与notify

6. 多线程同步和相互排斥异同

线程同步是指线程之间所具有的一种制约关系,一个线程的运行依赖还有一个线程的消息。当它没有得到还有一个线程的消息时应等待,直到消息到达时才被唤醒。 线程相互排斥是指对于共享的进程系统资源,在各单个线程訪问时的排它性。 当有若干个线程都要使用某一共享资源时,不论什么时刻最多仅仅同意一个线程去使用。 其他要使用该资源的线程必须等待,直到占用资源者释放该资源。线程相互排斥能够看成是一种特殊的线程同步。

时间: 2024-10-23 19:34:10

[Other]面试复习笔记:线程与进程复习的相关文章

线程和进程复习

一 背景知识进程的概念起源于操作系统,是操作系统最核心的概念. 进程是对正在运行程序的一个抽象,操作系统的其他所有内容都是围绕进程的概念展开的.所以想要真正了解进程,必须事先了解操作系统,点击进入 进程是操作系统提供的最古老也是最重要的抽象概念之一.即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力.将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间多路复用 + 硬件上支持隔离),没有进程的抽象,现代计算机将不复存在. 本文将将着重介绍进程以及它

多线程编程复习笔记 线程的创建

方式一: CreateThread HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE  lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ); lpThreadAttributes指向SECURITY_ATTRIBUTES型态的结构的

【复习笔记】软件工程概论复习(2)

设计工程 抽象 过程抽象 数据抽象 架构(体系结构) 为系统提供概念上完整性的方式 程序构件的结构或组织+和构件的交互形式+构件所用的数据结构 (设计)模式 已证实的解决方案集 逐步求精(refinement) 自顶向下的设计策略 通过连续精化层次结构的程序细节来实现程序的开发 模块化 将软件划分为独立命名的.可寻址的构件,被称为模块,把这些模块集成到一起满足问题的需求 避免过低或过高的模块化,应该遵循以下原则: 使软件开发更容易: 可以定义和交付软件增量: 更容易实施变更: 更有效地开展测试和

线程与进程的关系

概述 进程是资源分配的基本单位,进程由线程组成. 线程是系统执行调度的基本单位,线程隶属于进程. 为何引入线程 1.进程在同一时间只能干一件事,比如我们在上课的时候,往往要耳朵听课,手记笔记,脑子思考,如果套用进程的机制,那么我们听课的时候也不能记录笔记,更不能思考. 2.当进程某个操作阻塞时,整个进程就会挂起,也就是说当老师讲课时需要思考的时候,我们也还只能听课,不能思考也不能记录笔记 线程与进程的区别 1.进程是资源分配的基本单位,线程是系统执行调度的基本单位 2.每个进程都有独立的内存地址

多线程编程复习笔记 进程与线程

1:什么是多线程? 一边听音乐,一边敲代码,一边写博客等等都是多线程的功劳: 2:进程的概念 进程是指在系统中正在运行的一个应用程序,在传统的操作系统中,是资源的分配单位又是高度运行的单位,在现代操作系统中, 进程是资源的分配单位,一个进程通常定义为程序的一个实例.在32为Windows中,进程占据4GB的虚拟地址空间 3:进程的组成部分: 进程由两个部分组成: a)操作系统用来管理进程的内核对象.内核对象也是系统用来存放关于进程的统计信息的地方 b)地址空间.它包含所有可执行模块或DLL模块的

[Java基础] Java线程复习笔记

先说说线程和进程,现代操作系统几乎无一例外地采用进程的概念,进程之间基本上可以认为是相互独立的,共享的资源非常少.线程可以认为是轻量级的进 程,充分地利用线程可以使得同一个进程中执行多种任务.Java是第一个在语言层面就支持线程操作的主流编程语言.和进程类似,线程也是各自独立的,有自 己的栈,自己的局部变量,自己的程序执行并行路径,但线程的独立性又没有进程那么强,它们共享内存,文件资源,以及其他进程层面的状态等.同一个进程内的 多个线程共享同样的内存空间,这也就意味着这些线程可以访问同样的变量和

复习线程、进程

1.1.进程和进程之间是独立的,哪怕是父进程和子进程之间也是独立的.包括他们的内存也是独立的. 1.2.线程和线程之间是独立的:这个独立说的是他们的栈是独立的(数据独立). 1.3.线程和进程之间是不独立:线程需要运行进程空间中的代码.进程需要线程来运行代码.二者缺一不可,缺了任何一个他们都会消亡. 1.4.所有的线程会在进程结束时消亡(不应该这样).进程在无任何一个线程运行时消亡(这才是正确的设计). 1.5.线程应该是自然结束的.不然的话会导致内核对象的泄漏. 1.6.某一根线程被强行关闭时

java8--多线程(java疯狂讲义3复习笔记)

多线程这块,平时用的框架里都封装好了,只有写批处理和工具包时用过几次.现在水平仅仅限于会用的程度,需要全面深入学习多线程. 主要内容:创建线程,启动线程,控制线程,多线程的同步,线程池,使用线程安全的集合类 16.1.1 线程和进程 线程是进程的组成部分,一个进程可以拥有多个线程,一个线程必须有一个父进程.线程可以拥有自己的堆栈,程序计数器和局部变量,但不拥有系统资源,它与父进程的其他线程共享该进程所拥有的全部资源.因为多个线程共享父进程的全部资源,因此编程更加方便,带也需要更加小心. 16.2

javaSE复习之——线程

线程其实就是程序执行的一条路径,一个进程中可以包含多条线程,多线程并发执行可以提高程序效率,可以同使完成多项任务 多线程的应用场景 迅雷多线程一起下载 服务器同时处理多个客户请求 多线程原理(单核CPU) 在电脑上运行多个程序时,其实cpu一次只能做一个事,做一段时间后然后换另一个另一个做一段时间,只是cpu的速度太快了,看起来就是同时做很多事,也就是说多线程其实只是表面上的多线程,底层cpu还是一次只能做一个事,但是这有个前提,那就是那个cpu是单核cpu,如果事多核cpu,那么就可以真正的达