❶ 请教一个操作系统线程问题
线程可以在内核中实现,也可以在用户空间实现。我自己的理解是这样的:在内核中实现就是操作系统提供线程支持;在用户空间中实现就是用户自己实现。本来以为JVM的线程就是在用户空间上实现的,但是搜了一下,貌似Linux平台下是调用Pthred库实现的。这里还是深入学习一下这两种线程的实现方式,为以后的工作和学习打下基础,说不定什么时候就用上了。
内核不知道线程的存在。当一个进程中的线程执行完毕,不需要进行系统调用(Trap)空消,不需要进行上下文交换,所以线程的切换非常快。
袜凳但斗好知是在发生I/O中断的时候,必须要内核去处理了。那么问题来了,内核会锁住当前线程所在的进程,因为内核不知道线程的存在,只知道进程。解决这个办法有点麻烦。《现代操作系统》中提出了一个解法,在某些UNIX版本中有一个select系统调用,它可以判断I/O操作是否会阻塞。如果阻塞就不执行I/O操作。这样run-time system(用的英文版教材,很多术语不会翻译或者乱翻译,囧)就知道是执行I/O,还是执行该进程的其它进程。
❷ 操作系统线程可以被不同进程共享吗
在计算机科学中,执行线程是可由调度器独立管理的最小程序拍告型指令序列,调度程序通常是操作系统的一部分。
线程和进程的实现因操作系统而异,但在大多数情况下,线程是进程的一个组成部分。多个线程可以存在于一个进程中,一个进程中的线程同时执行并共享内存等资友含源,而不同的进程不共享这些资源。特别是,同一个进程的线程可以在任何给定时间袭猜共享其可执行代码及其动态分配变量和非线程全局变量的值。
❸ 操作系统 线程与进程
Solaris内核是多线程的,即内核服务和任务可以作为内核线程执行。内核线程是Solaris内核管理的核心执行单位。内核线程有包括全局优先级和调度类的执行状态和上下文;内核线程是调度,执行和在处理器上作上下文切换的基本单位。同样的模型用于用户级进程。用户进程是定义了许多它的线程的执行上下文的容器。线程允许在单个虚拟内存环境中有多个执行流,因为不需要虚拟内存的上下文转换,因此同一个进程之内的线程之间的执行切换代价很小。下列对象构成了Solaris内核线程模型和实现的核心。
�内核线程。在处理器上被调度和执行的对象。
�用户线程。用户进程中维护的用户级(非内核)线程状态。
�进程。程序的可执行形式;用户程序的执行环境。
�轻量级进程(LWP)。用户线程内核可见的执行上下文。
Solaris执行具有与内核相关任务的内核线程,例如中断处理、内存页面管理、设备驱动程序,等等。执行用户进程,内核线程有对应的LWP;内核代表用户进程调度这些内核线程的执行。在内核中,多个执行的线程共享内核环境,主要是内核地址空间。进程也包含一个或多个线程,它们共享进程的虚拟内存环境以及其他的进程上下文组件。
进程是包含用户程序执行环境的抽象。它由虚拟内存环境(地址空间)、程序资源例如打开的文件列表和至少一个执行的线程构成。虚拟内存环境、打开的文件列表,及其他的进程环境组件被每个进程中的所有线程共享。
LWP和它对应的内核线程定义了用户进程内线程的虚拟执行环境。从Solaris9开始,用户线程、LWP和内核线程之间有一对一的关系。也就是说,用户进程的每个线程绑定到一个LWP,穗键芹而每个LWP有一个内核线程。LWP允许进程内的每个线程独立于同一进程内的其亮州他线程作系统调用。如果没有LWP,每次只能猜毕有一个线程可以进入内核——每次只有一个线程可以做系统调用。每次线程做系统调用,它的寄存器被放在LWP的栈内。从系统调用返回后,系统调用返回码被放在LWP内。图1-2说明用户线程、LWP、内核线程和进程间的关系。
❹ java中的线程和操作系统中的线程一样吗,多线程是多个线程同时运行还是一个时间点运行一个线程
java中的线程跟操作系统姿蚂的是不一样的,因为java使用了虚拟机。一个CPU一个时刻只能运行一个线程颂搭。多CPU的话,也野册拿许能让多个线程在各个CPU上同时跑,这要看线程能不能同时运行,有没有抢占资源之类的。
❺ 请问操作系统的多线程与应用程序的多线程有关联吗
呵呵 个人认为 两者大方向一样 操作系统多线程 可以运行多个软件 而软件可以操作多个步骤。